diff options
| author | fauxpark <fauxpark@gmail.com> | 2019-10-16 10:02:09 +1100 |
|---|---|---|
| committer | Joel Challis <git@zvecr.com> | 2019-10-16 00:02:09 +0100 |
| commit | 63f4806d7a67100fdf37b5f557ceb9d0982c0775 (patch) | |
| tree | c942f96e391b32e91753516fe0b07af639fc5b97 /quantum/quantum.c | |
| parent | 45225190794b438129d5b27d4fe5b756fdf2efc4 (diff) | |
| download | qmk_firmware-63f4806d7a67100fdf37b5f557ceb9d0982c0775.tar.gz qmk_firmware-63f4806d7a67100fdf37b5f557ceb9d0982c0775.zip | |
Fix bug in `do_code16()` (#6935)
* Fix bug in `do_code16()`
* Remove qk_ mods functions
Diffstat (limited to 'quantum/quantum.c')
| -rw-r--r-- | quantum/quantum.c | 50 |
1 files changed, 17 insertions, 33 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c index f4999456e..e615cfc0f 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c | |||
| @@ -85,44 +85,28 @@ static void do_code16(uint16_t code, void (*f)(uint8_t)) { | |||
| 85 | return; | 85 | return; |
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | if (code & QK_LCTL) f(KC_LCTL); | 88 | uint8_t mods_to_send = 0; |
| 89 | if (code & QK_LSFT) f(KC_LSFT); | ||
| 90 | if (code & QK_LALT) f(KC_LALT); | ||
| 91 | if (code & QK_LGUI) f(KC_LGUI); | ||
| 92 | 89 | ||
| 93 | if (code < QK_RMODS_MIN) return; | 90 | if (code & QK_RMODS_MIN) { // Right mod flag is set |
| 94 | 91 | if (code & QK_LCTL) mods_to_send |= MOD_BIT(KC_RCTL); | |
| 95 | if (code & QK_RCTL) f(KC_RCTL); | 92 | if (code & QK_LSFT) mods_to_send |= MOD_BIT(KC_RSFT); |
| 96 | if (code & QK_RSFT) f(KC_RSFT); | 93 | if (code & QK_LALT) mods_to_send |= MOD_BIT(KC_RALT); |
| 97 | if (code & QK_RALT) f(KC_RALT); | 94 | if (code & QK_LGUI) mods_to_send |= MOD_BIT(KC_RGUI); |
| 98 | if (code & QK_RGUI) f(KC_RGUI); | 95 | } else { |
| 99 | } | 96 | if (code & QK_LCTL) mods_to_send |= MOD_BIT(KC_LCTL); |
| 100 | 97 | if (code & QK_LSFT) mods_to_send |= MOD_BIT(KC_LSFT); | |
| 101 | static inline void qk_register_weak_mods(uint8_t kc) { | 98 | if (code & QK_LALT) mods_to_send |= MOD_BIT(KC_LALT); |
| 102 | add_weak_mods(MOD_BIT(kc)); | 99 | if (code & QK_LGUI) mods_to_send |= MOD_BIT(KC_LGUI); |
| 103 | send_keyboard_report(); | 100 | } |
| 104 | } | ||
| 105 | |||
| 106 | static inline void qk_unregister_weak_mods(uint8_t kc) { | ||
| 107 | del_weak_mods(MOD_BIT(kc)); | ||
| 108 | send_keyboard_report(); | ||
| 109 | } | ||
| 110 | |||
| 111 | static inline void qk_register_mods(uint8_t kc) { | ||
| 112 | add_weak_mods(MOD_BIT(kc)); | ||
| 113 | send_keyboard_report(); | ||
| 114 | } | ||
| 115 | 101 | ||
| 116 | static inline void qk_unregister_mods(uint8_t kc) { | 102 | f(mods_to_send); |
| 117 | del_weak_mods(MOD_BIT(kc)); | ||
| 118 | send_keyboard_report(); | ||
| 119 | } | 103 | } |
| 120 | 104 | ||
| 121 | void register_code16(uint16_t code) { | 105 | void register_code16(uint16_t code) { |
| 122 | if (IS_MOD(code) || code == KC_NO) { | 106 | if (IS_MOD(code) || code == KC_NO) { |
| 123 | do_code16(code, qk_register_mods); | 107 | do_code16(code, register_mods); |
| 124 | } else { | 108 | } else { |
| 125 | do_code16(code, qk_register_weak_mods); | 109 | do_code16(code, register_weak_mods); |
| 126 | } | 110 | } |
| 127 | register_code(code); | 111 | register_code(code); |
| 128 | } | 112 | } |
| @@ -130,9 +114,9 @@ void register_code16(uint16_t code) { | |||
| 130 | void unregister_code16(uint16_t code) { | 114 | void unregister_code16(uint16_t code) { |
| 131 | unregister_code(code); | 115 | unregister_code(code); |
| 132 | if (IS_MOD(code) || code == KC_NO) { | 116 | if (IS_MOD(code) || code == KC_NO) { |
| 133 | do_code16(code, qk_unregister_mods); | 117 | do_code16(code, unregister_mods); |
| 134 | } else { | 118 | } else { |
| 135 | do_code16(code, qk_unregister_weak_mods); | 119 | do_code16(code, unregister_weak_mods); |
| 136 | } | 120 | } |
| 137 | } | 121 | } |
| 138 | 122 | ||
