aboutsummaryrefslogtreecommitdiff
path: root/tmk_core/common/mousekey.c
diff options
context:
space:
mode:
authorDrashna Jaelre <drashna@live.com>2021-01-27 09:38:34 -0800
committerGitHub <noreply@github.com>2021-01-28 04:38:34 +1100
commit99f3df28939d89b7fc2d2e7c0ee21b0879c7813f (patch)
tree2d399785f60ddc0bae95c11e7d6f1462a5511ca1 /tmk_core/common/mousekey.c
parentbab9849a8bc799f43e4dc18674c07625630cab0d (diff)
downloadqmk_firmware-99f3df28939d89b7fc2d2e7c0ee21b0879c7813f.tar.gz
qmk_firmware-99f3df28939d89b7fc2d2e7c0ee21b0879c7813f.zip
Add support for 8 buttons to mouse report (#10807)
* Add support for 8 buttons to mouse report This includes support for 8 buttons in mousekeys. However, this does move the keys around due to the fact that the last mousekey keycode is already 0xFF, so any past that would not work with register_code and the like, breaking them for tap hold keys, encoders, and other features. * Update mouse key docs * Add changes based on feedback * Fix VUSB report size comment Because drashna red gud * Fix typo in action.c * Fix IS_MOUSE_BUTTON check * Change start range for mousekeys so that the end is 0xFF properly * condense mousekeys check
Diffstat (limited to 'tmk_core/common/mousekey.c')
-rw-r--r--tmk_core/common/mousekey.c48
1 files changed, 8 insertions, 40 deletions
diff --git a/tmk_core/common/mousekey.c b/tmk_core/common/mousekey.c
index 6c9df6723..d8cf63f77 100644
--- a/tmk_core/common/mousekey.c
+++ b/tmk_core/common/mousekey.c
@@ -278,16 +278,8 @@ void mousekey_on(uint8_t code) {
278 mouse_report.h = wheel_unit() * -1; 278 mouse_report.h = wheel_unit() * -1;
279 else if (code == KC_MS_WH_RIGHT) 279 else if (code == KC_MS_WH_RIGHT)
280 mouse_report.h = wheel_unit(); 280 mouse_report.h = wheel_unit();
281 else if (code == KC_MS_BTN1) 281 else if (IS_MOUSEKEY_BUTTON(code))
282 mouse_report.buttons |= MOUSE_BTN1; 282 mouse_report.buttons |= 1 << (code - KC_MS_BTN1);
283 else if (code == KC_MS_BTN2)
284 mouse_report.buttons |= MOUSE_BTN2;
285 else if (code == KC_MS_BTN3)
286 mouse_report.buttons |= MOUSE_BTN3;
287 else if (code == KC_MS_BTN4)
288 mouse_report.buttons |= MOUSE_BTN4;
289 else if (code == KC_MS_BTN5)
290 mouse_report.buttons |= MOUSE_BTN5;
291 else if (code == KC_MS_ACCEL0) 283 else if (code == KC_MS_ACCEL0)
292 mousekey_accel |= (1 << 0); 284 mousekey_accel |= (1 << 0);
293 else if (code == KC_MS_ACCEL1) 285 else if (code == KC_MS_ACCEL1)
@@ -313,16 +305,8 @@ void mousekey_off(uint8_t code) {
313 mouse_report.h = 0; 305 mouse_report.h = 0;
314 else if (code == KC_MS_WH_RIGHT && mouse_report.h > 0) 306 else if (code == KC_MS_WH_RIGHT && mouse_report.h > 0)
315 mouse_report.h = 0; 307 mouse_report.h = 0;
316 else if (code == KC_MS_BTN1) 308 else if (IS_MOUSEKEY_BUTTON(code))
317 mouse_report.buttons &= ~MOUSE_BTN1; 309 mouse_report.buttons &= ~(1 << (code - KC_MS_BTN1));
318 else if (code == KC_MS_BTN2)
319 mouse_report.buttons &= ~MOUSE_BTN2;
320 else if (code == KC_MS_BTN3)
321 mouse_report.buttons &= ~MOUSE_BTN3;
322 else if (code == KC_MS_BTN4)
323 mouse_report.buttons &= ~MOUSE_BTN4;
324 else if (code == KC_MS_BTN5)
325 mouse_report.buttons &= ~MOUSE_BTN5;
326 else if (code == KC_MS_ACCEL0) 310 else if (code == KC_MS_ACCEL0)
327 mousekey_accel &= ~(1 << 0); 311 mousekey_accel &= ~(1 << 0);
328 else if (code == KC_MS_ACCEL1) 312 else if (code == KC_MS_ACCEL1)
@@ -423,16 +407,8 @@ void mousekey_on(uint8_t code) {
423 mouse_report.h = w_offset * -1; 407 mouse_report.h = w_offset * -1;
424 else if (code == KC_MS_WH_RIGHT) 408 else if (code == KC_MS_WH_RIGHT)
425 mouse_report.h = w_offset; 409 mouse_report.h = w_offset;
426 else if (code == KC_MS_BTN1) 410 else if (IS_MOUSEKEY_BUTTON(code))
427 mouse_report.buttons |= MOUSE_BTN1; 411 mouse_report.buttons |= 1 << (code - KC_MS_BTN1);
428 else if (code == KC_MS_BTN2)
429 mouse_report.buttons |= MOUSE_BTN2;
430 else if (code == KC_MS_BTN3)
431 mouse_report.buttons |= MOUSE_BTN3;
432 else if (code == KC_MS_BTN4)
433 mouse_report.buttons |= MOUSE_BTN4;
434 else if (code == KC_MS_BTN5)
435 mouse_report.buttons |= MOUSE_BTN5;
436 else if (code == KC_MS_ACCEL0) 412 else if (code == KC_MS_ACCEL0)
437 mk_speed = mkspd_0; 413 mk_speed = mkspd_0;
438 else if (code == KC_MS_ACCEL1) 414 else if (code == KC_MS_ACCEL1)
@@ -462,16 +438,8 @@ void mousekey_off(uint8_t code) {
462 mouse_report.h = 0; 438 mouse_report.h = 0;
463 else if (code == KC_MS_WH_RIGHT && mouse_report.h > 0) 439 else if (code == KC_MS_WH_RIGHT && mouse_report.h > 0)
464 mouse_report.h = 0; 440 mouse_report.h = 0;
465 else if (code == KC_MS_BTN1) 441 else if (IS_MOUSEKEY_BUTTON(code))
466 mouse_report.buttons &= ~MOUSE_BTN1; 442 mouse_report.buttons &= ~(1 << (code - KC_MS_BTN1));
467 else if (code == KC_MS_BTN2)
468 mouse_report.buttons &= ~MOUSE_BTN2;
469 else if (code == KC_MS_BTN3)
470 mouse_report.buttons &= ~MOUSE_BTN3;
471 else if (code == KC_MS_BTN4)
472 mouse_report.buttons &= ~MOUSE_BTN4;
473 else if (code == KC_MS_BTN5)
474 mouse_report.buttons &= ~MOUSE_BTN5;
475# ifdef MK_MOMENTARY_ACCEL 443# ifdef MK_MOMENTARY_ACCEL
476 else if (code == KC_MS_ACCEL0) 444 else if (code == KC_MS_ACCEL0)
477 mk_speed = mkspd_DEFAULT; 445 mk_speed = mkspd_DEFAULT;