aboutsummaryrefslogtreecommitdiff
path: root/quantum/quantum.c
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/quantum.c')
-rw-r--r--quantum/quantum.c13
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. */
152uint16_t get_record_keycode(keyrecord_t *record) { return get_event_keycode(record->event); } 152uint16_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 */
157uint16_t get_event_keycode(keyevent_t event) { 160uint16_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 */
176void post_process_record_quantum(keyrecord_t *record) { 179void 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. */
184bool process_record_quantum(keyrecord_t *record) { 187bool 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) {