aboutsummaryrefslogtreecommitdiff
path: root/common/mousekey.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/mousekey.c')
-rw-r--r--common/mousekey.c95
1 files changed, 47 insertions, 48 deletions
diff --git a/common/mousekey.c b/common/mousekey.c
index 4b1fe1740..353890a16 100644
--- a/common/mousekey.c
+++ b/common/mousekey.c
@@ -25,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
25#include "mousekey.h" 25#include "mousekey.h"
26 26
27 27
28static report_mouse_t report;
29 28
30static uint8_t mousekey_repeat = 0; 29static uint8_t mousekey_repeat = 0;
31 30
@@ -115,89 +114,89 @@ void mousekey_task(void)
115 if (timer_elapsed(last_timer) < (mousekey_repeat ? mk_interval : mk_delay*10)) 114 if (timer_elapsed(last_timer) < (mousekey_repeat ? mk_interval : mk_delay*10))
116 return; 115 return;
117 116
118 if (report.x == 0 && report.y == 0 && report.v == 0 && report.h == 0) 117 if (mouse_report.x == 0 && mouse_report.y == 0 && mouse_report.v == 0 && mouse_report.h == 0)
119 return; 118 return;
120 119
121 if (mousekey_repeat != UINT8_MAX) 120 if (mousekey_repeat != UINT8_MAX)
122 mousekey_repeat++; 121 mousekey_repeat++;
123 122
124 123
125 if (report.x > 0) report.x = move_unit(); 124 if (mouse_report.x > 0) mouse_report.x = move_unit();
126 if (report.x < 0) report.x = move_unit() * -1; 125 if (mouse_report.x < 0) mouse_report.x = move_unit() * -1;
127 if (report.y > 0) report.y = move_unit(); 126 if (mouse_report.y > 0) mouse_report.y = move_unit();
128 if (report.y < 0) report.y = move_unit() * -1; 127 if (mouse_report.y < 0) mouse_report.y = move_unit() * -1;
129 128
130 if (report.x && report.y) { 129 if (mouse_report.x && mouse_report.y) {
131 report.x *= 0.7; 130 mouse_report.x *= 0.7;
132 report.y *= 0.7; 131 mouse_report.y *= 0.7;
133 } 132 }
134 133
135 if (report.v > 0) report.v = wheel_unit(); 134 if (mouse_report.v > 0) mouse_report.v = wheel_unit();
136 if (report.v < 0) report.v = wheel_unit() * -1; 135 if (mouse_report.v < 0) mouse_report.v = wheel_unit() * -1;
137 if (report.h > 0) report.h = wheel_unit(); 136 if (mouse_report.h > 0) mouse_report.h = wheel_unit();
138 if (report.h < 0) report.h = wheel_unit() * -1; 137 if (mouse_report.h < 0) mouse_report.h = wheel_unit() * -1;
139 138
140 mousekey_send(); 139 mousekey_send();
141} 140}
142 141
143void mousekey_on(uint8_t code) 142void mousekey_on(uint8_t code)
144{ 143{
145 if (code == KC_MS_UP) report.y = MOUSEKEY_MOVE_DELTA * -1; 144 if (code == KC_MS_UP) mouse_report.y = MOUSEKEY_MOVE_DELTA * -1;
146 else if (code == KC_MS_DOWN) report.y = MOUSEKEY_MOVE_DELTA; 145 else if (code == KC_MS_DOWN) mouse_report.y = MOUSEKEY_MOVE_DELTA;
147 else if (code == KC_MS_LEFT) report.x = MOUSEKEY_MOVE_DELTA * -1; 146 else if (code == KC_MS_LEFT) mouse_report.x = MOUSEKEY_MOVE_DELTA * -1;
148 else if (code == KC_MS_RIGHT) report.x = MOUSEKEY_MOVE_DELTA; 147 else if (code == KC_MS_RIGHT) mouse_report.x = MOUSEKEY_MOVE_DELTA;
149 else if (code == KC_MS_WH_UP) report.v = MOUSEKEY_WHEEL_DELTA; 148 else if (code == KC_MS_WH_UP) mouse_report.v = MOUSEKEY_WHEEL_DELTA;
150 else if (code == KC_MS_WH_DOWN) report.v = MOUSEKEY_WHEEL_DELTA * -1; 149 else if (code == KC_MS_WH_DOWN) mouse_report.v = MOUSEKEY_WHEEL_DELTA * -1;
151 else if (code == KC_MS_WH_LEFT) report.h = MOUSEKEY_WHEEL_DELTA * -1; 150 else if (code == KC_MS_WH_LEFT) mouse_report.h = MOUSEKEY_WHEEL_DELTA * -1;
152 else if (code == KC_MS_WH_RIGHT) report.h = MOUSEKEY_WHEEL_DELTA; 151 else if (code == KC_MS_WH_RIGHT) mouse_report.h = MOUSEKEY_WHEEL_DELTA;
153 else if (code == KC_MS_BTN1) report.buttons |= MOUSE_BTN1; 152 else if (code == KC_MS_BTN1) mouse_report.buttons |= MOUSE_BTN1;
154 else if (code == KC_MS_BTN2) report.buttons |= MOUSE_BTN2; 153 else if (code == KC_MS_BTN2) mouse_report.buttons |= MOUSE_BTN2;
155 else if (code == KC_MS_BTN3) report.buttons |= MOUSE_BTN3; 154 else if (code == KC_MS_BTN3) mouse_report.buttons |= MOUSE_BTN3;
156 else if (code == KC_MS_BTN4) report.buttons |= MOUSE_BTN4; 155 else if (code == KC_MS_BTN4) mouse_report.buttons |= MOUSE_BTN4;
157 else if (code == KC_MS_BTN5) report.buttons |= MOUSE_BTN5; 156 else if (code == KC_MS_BTN5) mouse_report.buttons |= MOUSE_BTN5;
158} 157}
159 158
160void mousekey_off(uint8_t code) 159void mousekey_off(uint8_t code)
161{ 160{
162 if (code == KC_MS_UP && report.y < 0) report.y = 0; 161 if (code == KC_MS_UP && mouse_report.y < 0) mouse_report.y = 0;
163 else if (code == KC_MS_DOWN && report.y > 0) report.y = 0; 162 else if (code == KC_MS_DOWN && mouse_report.y > 0) mouse_report.y = 0;
164 else if (code == KC_MS_LEFT && report.x < 0) report.x = 0; 163 else if (code == KC_MS_LEFT && mouse_report.x < 0) mouse_report.x = 0;
165 else if (code == KC_MS_RIGHT && report.x > 0) report.x = 0; 164 else if (code == KC_MS_RIGHT && mouse_report.x > 0) mouse_report.x = 0;
166 else if (code == KC_MS_WH_UP && report.v > 0) report.v = 0; 165 else if (code == KC_MS_WH_UP && mouse_report.v > 0) mouse_report.v = 0;
167 else if (code == KC_MS_WH_DOWN && report.v < 0) report.v = 0; 166 else if (code == KC_MS_WH_DOWN && mouse_report.v < 0) mouse_report.v = 0;
168 else if (code == KC_MS_WH_LEFT && report.h < 0) report.h = 0; 167 else if (code == KC_MS_WH_LEFT && mouse_report.h < 0) mouse_report.h = 0;
169 else if (code == KC_MS_WH_RIGHT && report.h > 0) report.h = 0; 168 else if (code == KC_MS_WH_RIGHT && mouse_report.h > 0) mouse_report.h = 0;
170 else if (code == KC_MS_BTN1) report.buttons &= ~MOUSE_BTN1; 169 else if (code == KC_MS_BTN1) mouse_report.buttons &= ~MOUSE_BTN1;
171 else if (code == KC_MS_BTN2) report.buttons &= ~MOUSE_BTN2; 170 else if (code == KC_MS_BTN2) mouse_report.buttons &= ~MOUSE_BTN2;
172 else if (code == KC_MS_BTN3) report.buttons &= ~MOUSE_BTN3; 171 else if (code == KC_MS_BTN3) mouse_report.buttons &= ~MOUSE_BTN3;
173 else if (code == KC_MS_BTN4) report.buttons &= ~MOUSE_BTN4; 172 else if (code == KC_MS_BTN4) mouse_report.buttons &= ~MOUSE_BTN4;
174 else if (code == KC_MS_BTN5) report.buttons &= ~MOUSE_BTN5; 173 else if (code == KC_MS_BTN5) mouse_report.buttons &= ~MOUSE_BTN5;
175 174
176 if (report.x == 0 && report.y == 0 && report.v == 0 && report.h == 0) 175 if (mouse_report.x == 0 && mouse_report.y == 0 && mouse_report.v == 0 && mouse_report.h == 0)
177 mousekey_repeat = 0; 176 mousekey_repeat = 0;
178} 177}
179 178
180void mousekey_send(void) 179void mousekey_send(void)
181{ 180{
182 mousekey_debug(); 181 mousekey_debug();
183 host_mouse_send(&report); 182 host_mouse_send(&mouse_report);
184 last_timer = timer_read(); 183 last_timer = timer_read();
185} 184}
186 185
187void mousekey_clear(void) 186void mousekey_clear(void)
188{ 187{
189 report = (report_mouse_t){}; 188 mouse_report = (report_mouse_t){};
190} 189}
191 190
192static void mousekey_debug(void) 191static void mousekey_debug(void)
193{ 192{
194 if (!debug_mouse) return; 193 if (!debug_mouse) return;
195 print("mousekey [btn|x y v h]rep: ["); 194 print("mousekey [btn|x y v h]rep: [");
196 phex(report.buttons); print("|"); 195 phex(mouse_report.buttons); print("|");
197 phex(report.x); print(" "); 196 phex(mouse_report.x); print(" ");
198 phex(report.y); print(" "); 197 phex(mouse_report.y); print(" ");
199 phex(report.v); print(" "); 198 phex(mouse_report.v); print(" ");
200 phex(report.h); print("]"); 199 phex(mouse_report.h); print("]");
201 phex(mousekey_repeat); 200 phex(mousekey_repeat);
202 print("\n"); 201 print("\n");
203} 202}