diff options
Diffstat (limited to 'tmk_core/common')
-rw-r--r-- | tmk_core/common/action.c | 18 | ||||
-rw-r--r-- | tmk_core/common/keycode.h | 14 | ||||
-rw-r--r-- | tmk_core/common/mousekey.c | 48 | ||||
-rw-r--r-- | tmk_core/common/report.h | 5 |
4 files changed, 40 insertions, 45 deletions
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index a7432bae5..a3830abbf 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c | |||
@@ -443,6 +443,15 @@ void process_action(keyrecord_t *record, action_t action) { | |||
443 | case KC_MS_BTN5: | 443 | case KC_MS_BTN5: |
444 | register_button(true, MOUSE_BTN5); | 444 | register_button(true, MOUSE_BTN5); |
445 | break; | 445 | break; |
446 | case KC_MS_BTN6: | ||
447 | register_button(true, MOUSE_BTN6); | ||
448 | break; | ||
449 | case KC_MS_BTN7: | ||
450 | register_button(true, MOUSE_BTN7); | ||
451 | break; | ||
452 | case KC_MS_BTN8: | ||
453 | register_button(true, MOUSE_BTN8); | ||
454 | break; | ||
446 | # endif | 455 | # endif |
447 | default: | 456 | default: |
448 | mousekey_send(); | 457 | mousekey_send(); |
@@ -469,6 +478,15 @@ void process_action(keyrecord_t *record, action_t action) { | |||
469 | case KC_MS_BTN5: | 478 | case KC_MS_BTN5: |
470 | register_button(false, MOUSE_BTN5); | 479 | register_button(false, MOUSE_BTN5); |
471 | break; | 480 | break; |
481 | case KC_MS_BTN6: | ||
482 | register_button(false, MOUSE_BTN6); | ||
483 | break; | ||
484 | case KC_MS_BTN7: | ||
485 | register_button(false, MOUSE_BTN7); | ||
486 | break; | ||
487 | case KC_MS_BTN8: | ||
488 | register_button(false, MOUSE_BTN8); | ||
489 | break; | ||
472 | # endif | 490 | # endif |
473 | default: | 491 | default: |
474 | mousekey_send(); | 492 | mousekey_send(); |
diff --git a/tmk_core/common/keycode.h b/tmk_core/common/keycode.h index d35e44d8d..efad92b23 100644 --- a/tmk_core/common/keycode.h +++ b/tmk_core/common/keycode.h | |||
@@ -39,7 +39,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
39 | 39 | ||
40 | #define IS_MOUSEKEY(code) (KC_MS_UP <= (code) && (code) <= KC_MS_ACCEL2) | 40 | #define IS_MOUSEKEY(code) (KC_MS_UP <= (code) && (code) <= KC_MS_ACCEL2) |
41 | #define IS_MOUSEKEY_MOVE(code) (KC_MS_UP <= (code) && (code) <= KC_MS_RIGHT) | 41 | #define IS_MOUSEKEY_MOVE(code) (KC_MS_UP <= (code) && (code) <= KC_MS_RIGHT) |
42 | #define IS_MOUSEKEY_BUTTON(code) (KC_MS_BTN1 <= (code) && (code) <= KC_MS_BTN5) | 42 | #define IS_MOUSEKEY_BUTTON(code) (KC_MS_BTN1 <= (code) && (code) <= KC_MS_BTN8) |
43 | #define IS_MOUSEKEY_WHEEL(code) (KC_MS_WH_UP <= (code) && (code) <= KC_MS_WH_RIGHT) | 43 | #define IS_MOUSEKEY_WHEEL(code) (KC_MS_WH_UP <= (code) && (code) <= KC_MS_WH_RIGHT) |
44 | #define IS_MOUSEKEY_ACCEL(code) (KC_MS_ACCEL0 <= (code) && (code) <= KC_MS_ACCEL2) | 44 | #define IS_MOUSEKEY_ACCEL(code) (KC_MS_ACCEL0 <= (code) && (code) <= KC_MS_ACCEL2) |
45 | 45 | ||
@@ -205,6 +205,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
205 | #define KC_BTN3 KC_MS_BTN3 | 205 | #define KC_BTN3 KC_MS_BTN3 |
206 | #define KC_BTN4 KC_MS_BTN4 | 206 | #define KC_BTN4 KC_MS_BTN4 |
207 | #define KC_BTN5 KC_MS_BTN5 | 207 | #define KC_BTN5 KC_MS_BTN5 |
208 | #define KC_BTN6 KC_MS_BTN6 | ||
209 | #define KC_BTN7 KC_MS_BTN7 | ||
210 | #define KC_BTN8 KC_MS_BTN8 | ||
208 | #define KC_WH_U KC_MS_WH_UP | 211 | #define KC_WH_U KC_MS_WH_UP |
209 | #define KC_WH_D KC_MS_WH_DOWN | 212 | #define KC_WH_D KC_MS_WH_DOWN |
210 | #define KC_WH_L KC_MS_WH_LEFT | 213 | #define KC_WH_L KC_MS_WH_LEFT |
@@ -521,15 +524,18 @@ enum internal_special_keycodes { | |||
521 | 524 | ||
522 | enum mouse_keys { | 525 | enum mouse_keys { |
523 | /* Mouse Buttons */ | 526 | /* Mouse Buttons */ |
524 | KC_MS_UP = 0xF0, | 527 | KC_MS_UP = 0xED, |
525 | KC_MS_DOWN, | 528 | KC_MS_DOWN, |
526 | KC_MS_LEFT, | 529 | KC_MS_LEFT, |
527 | KC_MS_RIGHT, | 530 | KC_MS_RIGHT, // 0xF0 |
528 | KC_MS_BTN1, | 531 | KC_MS_BTN1, |
529 | KC_MS_BTN2, | 532 | KC_MS_BTN2, |
530 | KC_MS_BTN3, | 533 | KC_MS_BTN3, |
531 | KC_MS_BTN4, | 534 | KC_MS_BTN4, |
532 | KC_MS_BTN5, | 535 | KC_MS_BTN5, |
536 | KC_MS_BTN6, | ||
537 | KC_MS_BTN7, | ||
538 | KC_MS_BTN8, | ||
533 | 539 | ||
534 | /* Mouse Wheel */ | 540 | /* Mouse Wheel */ |
535 | KC_MS_WH_UP, | 541 | KC_MS_WH_UP, |
@@ -540,5 +546,5 @@ enum mouse_keys { | |||
540 | /* Acceleration */ | 546 | /* Acceleration */ |
541 | KC_MS_ACCEL0, | 547 | KC_MS_ACCEL0, |
542 | KC_MS_ACCEL1, | 548 | KC_MS_ACCEL1, |
543 | KC_MS_ACCEL2 | 549 | KC_MS_ACCEL2 // 0xFF |
544 | }; | 550 | }; |
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; |
diff --git a/tmk_core/common/report.h b/tmk_core/common/report.h index 5d7c5b3b2..bcf5cab38 100644 --- a/tmk_core/common/report.h +++ b/tmk_core/common/report.h | |||
@@ -39,7 +39,10 @@ enum mouse_buttons { | |||
39 | MOUSE_BTN2 = (1 << 1), | 39 | MOUSE_BTN2 = (1 << 1), |
40 | MOUSE_BTN3 = (1 << 2), | 40 | MOUSE_BTN3 = (1 << 2), |
41 | MOUSE_BTN4 = (1 << 3), | 41 | MOUSE_BTN4 = (1 << 3), |
42 | MOUSE_BTN5 = (1 << 4) | 42 | MOUSE_BTN5 = (1 << 4), |
43 | MOUSE_BTN6 = (1 << 5), | ||
44 | MOUSE_BTN7 = (1 << 6), | ||
45 | MOUSE_BTN8 = (1 << 7) | ||
43 | }; | 46 | }; |
44 | 47 | ||
45 | /* Consumer Page (0x0C) | 48 | /* Consumer Page (0x0C) |