diff options
| author | a1xd <[email protected]> | 2021-09-24 02:04:43 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-09-24 02:04:43 -0400 |
| commit | 2896b8a09ce42e965705c58593b8738adc454f7f (patch) | |
| tree | 71e4d0cff60b5a1ad11427d78e1f8c7b775e5690 /common/rawaccel-base.hpp | |
| parent | Merge pull request #107 from a1xd/1.5.0-fix (diff) | |
| parent | make note clearer (diff) | |
| download | rawaccel-master.tar.xz rawaccel-master.zip | |
v1.6
Diffstat (limited to 'common/rawaccel-base.hpp')
| -rw-r--r-- | common/rawaccel-base.hpp | 94 |
1 files changed, 38 insertions, 56 deletions
diff --git a/common/rawaccel-base.hpp b/common/rawaccel-base.hpp index c1b2db3..91f58dc 100644 --- a/common/rawaccel-base.hpp +++ b/common/rawaccel-base.hpp @@ -1,6 +1,6 @@ #pragma once -#include "vec2.h" +#include "math-vec2.hpp" namespace rawaccel { using milliseconds = double; @@ -14,96 +14,78 @@ namespace rawaccel { inline constexpr milliseconds WRITE_DELAY = 1000; inline constexpr size_t MAX_DEV_ID_LEN = 200; + inline constexpr size_t MAX_NAME_LEN = 256; - inline constexpr size_t SPACED_LUT_CAPACITY = 1025; - inline constexpr size_t ARB_LUT_CAPACITY = SPACED_LUT_CAPACITY / 4; + inline constexpr size_t LUT_RAW_DATA_CAPACITY = 514; + inline constexpr size_t LUT_POINTS_CAPACITY = LUT_RAW_DATA_CAPACITY / 2; inline constexpr double MAX_NORM = 16; - inline constexpr double PI = 3.14159265358979323846; + inline constexpr bool LEGACY = 0; + inline constexpr bool GAIN = 1; + enum class accel_mode { classic, jump, natural, motivity, power, - arb_lookup, + lookup, noaccel }; - enum class spaced_lut_mode { - off, - binlog, - linear - }; - - struct spaced_lut_args { - spaced_lut_mode mode = spaced_lut_mode::off; - bool transfer = true; - unsigned char partitions = 2; - short num_elements = 8; - double start = 0; - double stop = 8; - }; - - struct table_args { - bool velocity = true; - int length = 0; - vec2<float> data[ARB_LUT_CAPACITY] = {}; + enum class cap_mode { + io, in, out }; struct accel_args { accel_mode mode = accel_mode::noaccel; - bool legacy = false; + bool gain = 1; - double offset = 0; - double cap = 1.5; - double accel_classic = 0.005; + double input_offset = 0; + double output_offset = 0; + double acceleration = 0.005; double decay_rate = 0.1; double growth_rate = 1; double motivity = 1.5; - double power = 2; + double exponent_classic = 2; double scale = 1; - double weight = 1; - double exponent = 0.05; + double exponent_power = 0.05; double limit = 1.5; double midpoint = 5; double smooth = 0.5; - spaced_lut_args spaced_args; - table_args arb_args; + vec2d cap = { 15, 1.5 }; + cap_mode cap_mode = cap_mode::out; + + int length = 0; + mutable float data[LUT_RAW_DATA_CAPACITY] = {}; }; - struct domain_args { - vec2d domain_weights = { 1, 1 }; + + struct profile { + wchar_t name[MAX_NAME_LEN] = L"default"; + + bool whole = true; double lp_norm = 2; - }; + vec2d domain_weights = { 1, 1 }; + vec2d range_weights = { 1, 1 }; + + accel_args accel_x; + accel_args accel_y; + + double sensitivity = 1; + double yx_sens_ratio = 1; + double lr_sens_ratio = 1; + double ud_sens_ratio = 1; - struct settings { double degrees_rotation = 0; + double degrees_snap = 0; - bool combine_mags = true; - double dpi = 1000; + double speed_min = 0; double speed_max = 0; - - vec2<accel_args> argsv; - vec2d sens = { 1, 1 }; - vec2d dir_multipliers = { 1, 1 }; - domain_args dom_args = {}; - vec2d range_weights = { 1, 1 }; - - milliseconds time_min = DEFAULT_TIME_MIN; - milliseconds time_max = DEFAULT_TIME_MAX; - - bool ignore = false; - wchar_t device_id[MAX_DEV_ID_LEN] = {}; }; - template <typename AccelFunc> - inline double apply_weighted(AccelFunc&& f, double x, double w) - { - return 1 + (f(x) - 1) * w; - } } |