diff options
Diffstat (limited to 'quantum/quantum.c')
-rw-r--r-- | quantum/quantum.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c index 76a48cc77..2053a1a5f 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c | |||
@@ -149,18 +149,21 @@ void reset_keyboard(void) { | |||
149 | } | 149 | } |
150 | 150 | ||
151 | /* Convert record into usable keycode via the contained event. */ | 151 | /* Convert record into usable keycode via the contained event. */ |
152 | uint16_t get_record_keycode(keyrecord_t *record) { return get_event_keycode(record->event); } | 152 | uint16_t get_record_keycode(keyrecord_t *record, bool update_layer_cache) { return get_event_keycode(record->event, update_layer_cache); } |
153 | 153 | ||
154 | /* Convert event into usable keycode. Checks the layer cache to ensure that it | 154 | /* Convert event into usable keycode. Checks the layer cache to ensure that it |
155 | * retains the correct keycode after a layer change, if the key is still pressed. | 155 | * retains the correct keycode after a layer change, if the key is still pressed. |
156 | * "update_layer_cache" is to ensure that it only updates the layer cache when | ||
157 | * appropriate, otherwise, it will update it and cause layer tap (and other keys) | ||
158 | * from triggering properly. | ||
156 | */ | 159 | */ |
157 | uint16_t get_event_keycode(keyevent_t event) { | 160 | uint16_t get_event_keycode(keyevent_t event, bool update_layer_cache) { |
158 | #if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE) | 161 | #if !defined(NO_ACTION_LAYER) && !defined(STRICT_LAYER_RELEASE) |
159 | /* TODO: Use store_or_get_action() or a similar function. */ | 162 | /* TODO: Use store_or_get_action() or a similar function. */ |
160 | if (!disable_action_cache) { | 163 | if (!disable_action_cache) { |
161 | uint8_t layer; | 164 | uint8_t layer; |
162 | 165 | ||
163 | if (event.pressed) { | 166 | if (event.pressed && update_layer_cache) { |
164 | layer = layer_switch_get_layer(event.key); | 167 | layer = layer_switch_get_layer(event.key); |
165 | update_source_layers_cache(event.key, layer); | 168 | update_source_layers_cache(event.key, layer); |
166 | } else { | 169 | } else { |
@@ -174,7 +177,7 @@ uint16_t get_event_keycode(keyevent_t event) { | |||
174 | 177 | ||
175 | /* Get keycode, and then call keyboard function */ | 178 | /* Get keycode, and then call keyboard function */ |
176 | void post_process_record_quantum(keyrecord_t *record) { | 179 | void post_process_record_quantum(keyrecord_t *record) { |
177 | uint16_t keycode = get_record_keycode(record); | 180 | uint16_t keycode = get_record_keycode(record, false); |
178 | post_process_record_kb(keycode, record); | 181 | post_process_record_kb(keycode, record); |
179 | } | 182 | } |
180 | 183 | ||
@@ -182,7 +185,7 @@ void post_process_record_quantum(keyrecord_t *record) { | |||
182 | then processes internal quantum keycodes, and then processes | 185 | then processes internal quantum keycodes, and then processes |
183 | ACTIONs. */ | 186 | ACTIONs. */ |
184 | bool process_record_quantum(keyrecord_t *record) { | 187 | bool process_record_quantum(keyrecord_t *record) { |
185 | uint16_t keycode = get_record_keycode(record); | 188 | uint16_t keycode = get_record_keycode(record, true); |
186 | 189 | ||
187 | // This is how you use actions here | 190 | // This is how you use actions here |
188 | // if (keycode == KC_LEAD) { | 191 | // if (keycode == KC_LEAD) { |