diff options
author | Shihpin Tseng <deftsp@gmail.com> | 2018-08-20 02:16:06 +0800 |
---|---|---|
committer | Shihpin Tseng <deftsp@gmail.com> | 2018-08-20 02:29:08 +0800 |
commit | 1950a145c7d7c14167c8192b850e6edbadf67dc7 (patch) | |
tree | 08a2022d1b6d0bac420f6a0e8a81c1184a8bcf40 /quantum/process_keycode/process_combo.c | |
parent | 19fdfccca28f923a12351fbee6c8c8282dca004e (diff) | |
download | qmk_firmware-1950a145c7d7c14167c8192b850e6edbadf67dc7.tar.gz qmk_firmware-1950a145c7d7c14167c8192b850e6edbadf67dc7.zip |
Fix process_combo which assign -1 to uint16_t
Diffstat (limited to 'quantum/process_keycode/process_combo.c')
-rw-r--r-- | quantum/process_keycode/process_combo.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/quantum/process_keycode/process_combo.c b/quantum/process_keycode/process_combo.c index 6e9c28e4f..13f8bbb33 100644 --- a/quantum/process_keycode/process_combo.c +++ b/quantum/process_keycode/process_combo.c | |||
@@ -18,9 +18,6 @@ | |||
18 | #include "print.h" | 18 | #include "print.h" |
19 | 19 | ||
20 | 20 | ||
21 | #define COMBO_TIMER_ELAPSED -1 | ||
22 | |||
23 | |||
24 | __attribute__ ((weak)) | 21 | __attribute__ ((weak)) |
25 | combo_t key_combos[COMBO_COUNT] = { | 22 | combo_t key_combos[COMBO_COUNT] = { |
26 | 23 | ||
@@ -65,7 +62,7 @@ static bool process_single_combo(combo_t *combo, uint16_t keycode, keyrecord_t * | |||
65 | if (-1 == (int8_t)index) return false; | 62 | if (-1 == (int8_t)index) return false; |
66 | 63 | ||
67 | /* The combos timer is used to signal whether the combo is active */ | 64 | /* The combos timer is used to signal whether the combo is active */ |
68 | bool is_combo_active = COMBO_TIMER_ELAPSED == combo->timer ? false : true; | 65 | bool is_combo_active = combo->is_active; |
69 | 66 | ||
70 | if (record->event.pressed) { | 67 | if (record->event.pressed) { |
71 | KEY_STATE_DOWN(index); | 68 | KEY_STATE_DOWN(index); |
@@ -73,9 +70,10 @@ static bool process_single_combo(combo_t *combo, uint16_t keycode, keyrecord_t * | |||
73 | if (is_combo_active) { | 70 | if (is_combo_active) { |
74 | if (ALL_COMBO_KEYS_ARE_DOWN) { /* Combo was pressed */ | 71 | if (ALL_COMBO_KEYS_ARE_DOWN) { /* Combo was pressed */ |
75 | send_combo(combo->keycode, true); | 72 | send_combo(combo->keycode, true); |
76 | combo->timer = COMBO_TIMER_ELAPSED; | 73 | combo->is_active = false; |
77 | } else { /* Combo key was pressed */ | 74 | } else { /* Combo key was pressed */ |
78 | combo->timer = timer_read(); | 75 | combo->timer = timer_read(); |
76 | combo->is_active = true; | ||
79 | #ifdef COMBO_ALLOW_ACTION_KEYS | 77 | #ifdef COMBO_ALLOW_ACTION_KEYS |
80 | combo->prev_record = *record; | 78 | combo->prev_record = *record; |
81 | #else | 79 | #else |
@@ -99,6 +97,7 @@ static bool process_single_combo(combo_t *combo, uint16_t keycode, keyrecord_t * | |||
99 | send_keyboard_report(); | 97 | send_keyboard_report(); |
100 | unregister_code16(keycode); | 98 | unregister_code16(keycode); |
101 | #endif | 99 | #endif |
100 | combo->is_active = false; | ||
102 | combo->timer = 0; | 101 | combo->timer = 0; |
103 | } | 102 | } |
104 | 103 | ||
@@ -106,6 +105,7 @@ static bool process_single_combo(combo_t *combo, uint16_t keycode, keyrecord_t * | |||
106 | } | 105 | } |
107 | 106 | ||
108 | if (NO_COMBO_KEYS_ARE_DOWN) { | 107 | if (NO_COMBO_KEYS_ARE_DOWN) { |
108 | combo->is_active = true; | ||
109 | combo->timer = 0; | 109 | combo->timer = 0; |
110 | } | 110 | } |
111 | 111 | ||
@@ -132,14 +132,14 @@ void matrix_scan_combo(void) | |||
132 | #pragma GCC diagnostic ignored "-Warray-bounds" | 132 | #pragma GCC diagnostic ignored "-Warray-bounds" |
133 | combo_t *combo = &key_combos[i]; | 133 | combo_t *combo = &key_combos[i]; |
134 | #pragma GCC diagnostic pop | 134 | #pragma GCC diagnostic pop |
135 | if (combo->timer && | 135 | if (combo->is_active && |
136 | combo->timer != COMBO_TIMER_ELAPSED && | 136 | combo->timer && |
137 | timer_elapsed(combo->timer) > COMBO_TERM) { | 137 | timer_elapsed(combo->timer) > COMBO_TERM) { |
138 | 138 | ||
139 | /* This disables the combo, meaning key events for this | 139 | /* This disables the combo, meaning key events for this |
140 | * combo will be handled by the next processors in the chain | 140 | * combo will be handled by the next processors in the chain |
141 | */ | 141 | */ |
142 | combo->timer = COMBO_TIMER_ELAPSED; | 142 | combo->is_active = false; |
143 | 143 | ||
144 | #ifdef COMBO_ALLOW_ACTION_KEYS | 144 | #ifdef COMBO_ALLOW_ACTION_KEYS |
145 | process_action(&combo->prev_record, | 145 | process_action(&combo->prev_record, |