forked from cafali/SnapKey
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLogic.cpp
More file actions
97 lines (84 loc) · 2.02 KB
/
Logic.cpp
File metadata and controls
97 lines (84 loc) · 2.02 KB
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include "InputState.h"
// =========================
// EMIT ONLY ON CHANGE
// =========================
void EmitIfChanged() {
if (lW != prevW) SendKey('W', lW);
if (lA != prevA) SendKey('A', lA);
if (lS != prevS) SendKey('S', lS);
if (lD != prevD) SendKey('D', lD);
prevW = lW;
prevA = lA;
prevS = lS;
prevD = lD;
}
// =========================
// SOCD RESOLUTION (AXIS AWARE)
// =========================
void ResolveSOCD() {
// -------- HORIZONTAL (A / D) --------
if (g_socd_enabled && g_socd_x_enabled) {
if (pA && pD) {
sA = (lastH == 'A');
sD = (lastH == 'D');
} else {
sA = pA;
sD = pD;
}
} else {
sA = pA;
sD = pD;
}
// -------- VERTICAL (W / S) --------
if (g_socd_enabled && g_socd_y_enabled) {
if (pW && pS) {
sW = (lastV == 'W');
sS = (lastV == 'S');
} else {
sW = pW;
sS = pS;
}
} else {
sW = pW;
sS = pS;
}
}
// =========================
// MAIN UPDATE
// =========================
void Update() {
// Fully disabled = transparent
if (!g_enabled) {
lW = lA = lS = lD = false;
EmitIfChanged();
return;
}
// -------- SOCD --------
ResolveSOCD();
// -------- MOUSE OVERRIDE (AXIS AWARE) --------
if (g_mouse_override_enabled && pFire) {
// Horizontal
if (g_mouse_override_x_enabled) {
lA = false;
lD = false;
} else {
lA = sA;
lD = sD;
}
// Vertical
if (g_mouse_override_y_enabled) {
lW = false;
lS = false;
} else {
lW = sW;
lS = sS;
}
} else {
// No mouse override → pass SOCD output
lW = sW;
lA = sA;
lS = sS;
lD = sD;
}
EmitIfChanged();
}