diff options
Diffstat (limited to 'common/rawaccel-settings.h')
| -rw-r--r-- | common/rawaccel-settings.h | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/common/rawaccel-settings.h b/common/rawaccel-settings.h index dedef6d..308a3fc 100644 --- a/common/rawaccel-settings.h +++ b/common/rawaccel-settings.h @@ -1,34 +1,64 @@ #pragma once #include "vec2.h" -#include "accel-base.hpp" - -#define MAX_DEV_ID_LEN 200 namespace rawaccel { - using milliseconds = double; - inline constexpr int MAX_POLL_RATE_KHZ = 8; - inline constexpr milliseconds DEFAULT_TIME_MIN = 1.0 / MAX_POLL_RATE_KHZ * 0.8; + inline constexpr int POLL_RATE_MAX = 8000; + + inline constexpr milliseconds DEFAULT_TIME_MIN = 1000.0 / POLL_RATE_MAX / 2; + inline constexpr milliseconds WRITE_DELAY = 1000; + inline constexpr size_t MAX_DEV_ID_LEN = 200; + enum class accel_mode { - linear, classic, natural, naturalgain, power, motivity, noaccel + classic, + natural, + motivity, + power, + noaccel + }; + + struct accel_args { + accel_mode mode = accel_mode::noaccel; + bool legacy = false; + + double offset = 0; + double cap = 1.5; + double accel_classic = 0.005; + double accel_natural = 0.1; + double accel_motivity = 1; + double motivity = 1.5; + double power = 2; + double scale = 1; + double weight = 1; + double exponent = 0.05; + double limit = 1.5; + double midpoint = 5; + }; + + struct domain_args { + vec2d domain_weights = { 1, 1 }; + double lp_norm = 2; }; struct settings { double degrees_rotation = 0; double degrees_snap = 0; bool combine_mags = true; - vec2<accel_mode> modes = { accel_mode::noaccel, accel_mode::noaccel }; + double dpi = 1000; + double speed_cap = 0; + vec2<accel_args> argsv; vec2d sens = { 1, 1 }; vec2d dir_multipliers = {}; - domain_args domain_args = {}; + domain_args dom_args = {}; vec2d range_weights = { 1, 1 }; milliseconds time_min = DEFAULT_TIME_MIN; - wchar_t device_id[MAX_DEV_ID_LEN] = {0}; + + wchar_t device_id[MAX_DEV_ID_LEN] = {}; }; } |