summaryrefslogtreecommitdiff
path: root/common/rawaccel-base.hpp
blob: ac60ff007fa0dca7073c94863bcf492a078de9bf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#pragma once

#include "vec2.h"

namespace rawaccel {
    using milliseconds = double;

    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 {
        classic,
        jump,
        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;
        double smooth = 0.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;
        double dpi = 1000;
        double speed_cap = 0;

        vec2<accel_args> argsv;
        vec2d sens = { 1, 1 };
        vec2d dir_multipliers = {};
        domain_args dom_args = {};
        vec2d range_weights = { 1, 1 };
        milliseconds time_min = DEFAULT_TIME_MIN;

        wchar_t device_id[MAX_DEV_ID_LEN] = {};
    };

}