From 48a79b08ccbcd0af5269e2e9334042c8347d18f8 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Sat, 18 Feb 2023 17:08:03 -0800 Subject: Fix functions when `NO_ACTION_TAPPING` is defined (#11528) --- quantum/keymap_common.c | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) (limited to 'quantum/keymap_common.c') diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index b4feb39739..7b863af3b5 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -80,14 +80,20 @@ action_t action_for_keycode(uint16_t keycode) { action.code = ACTION_MODS_KEY(mod_config(QK_MODS_GET_MODS(keycode)), keycode_config(QK_MODS_GET_BASIC_KEYCODE(keycode))); // adds modifier to key #endif // LEGACY_MAGIC_HANDLING break; -#ifndef NO_ACTION_LAYER case QK_LAYER_TAP ... QK_LAYER_TAP_MAX: +#if !defined(NO_ACTION_LAYER) && !defined(NO_ACTION_TAPPING) # ifdef LEGACY_MAGIC_HANDLING action.code = ACTION_LAYER_TAP_KEY(QK_LAYER_TAP_GET_LAYER(keycode), QK_LAYER_TAP_GET_TAP_KEYCODE(keycode)); # else // LEGACY_MAGIC_HANDLING action.code = ACTION_LAYER_TAP_KEY(QK_LAYER_TAP_GET_LAYER(keycode), keycode_config(QK_LAYER_TAP_GET_TAP_KEYCODE(keycode))); # endif // LEGACY_MAGIC_HANDLING +#else + // pass through keycode_config again, since it previously missed it + // and then only send as ACTION_KEY to bypass most of action.c handling + action.code = ACTION_KEY(keycode_config(QK_LAYER_TAP_GET_TAP_KEYCODE(keycode))); +#endif break; +#ifndef NO_ACTION_LAYER case QK_TO ... QK_TO_MAX:; // Layer set "GOTO" action_layer = QK_TO_GET_LAYER(keycode); @@ -115,32 +121,54 @@ action_t action_for_keycode(uint16_t keycode) { action_layer = QK_ONE_SHOT_LAYER_GET_LAYER(keycode); action.code = ACTION_LAYER_ONESHOT(action_layer); break; +#endif // NO_ACTION_ONESHOT case QK_ONE_SHOT_MOD ... QK_ONE_SHOT_MOD_MAX:; // OSM(mod) - One-shot mod - mod = mod_config(QK_ONE_SHOT_MOD_GET_MODS(keycode)); + mod = mod_config(QK_ONE_SHOT_MOD_GET_MODS(keycode)); +#if defined(NO_ACTION_TAPPING) || defined(NO_ACTION_ONESHOT) + action.code = ACTION_MODS(mod); +#else // defined(NO_ACTION_TAPPING) || defined(NO_ACTION_ONESHOT) action.code = ACTION_MODS_ONESHOT(mod); +#endif // defined(NO_ACTION_TAPPING) || defined(NO_ACTION_ONESHOT) break; -#endif #ifndef NO_ACTION_LAYER case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX: +# ifndef NO_ACTION_TAPPING action.code = ACTION_LAYER_TAP_TOGGLE(QK_LAYER_TAP_TOGGLE_GET_LAYER(keycode)); +# else // NO_ACTION_TAPPING +# ifdef NO_ACTION_TAPPING_TAP_TOGGLE_MO + action.code = ACTION_LAYER_MOMENTARY(QK_LAYER_TAP_TOGGLE_GET_LAYER(keycode)); +# else // NO_ACTION_TAPPING_TAP_TOGGLE_MO + action.code = ACTION_LAYER_TOGGLE(QK_LAYER_TAP_TOGGLE_GET_LAYER(keycode)); +# endif // NO_ACTION_TAPPING_TAP_TOGGLE_MO +# endif // NO_ACTION_TAPPING break; case QK_LAYER_MOD ... QK_LAYER_MOD_MAX: mod = mod_config(QK_LAYER_MOD_GET_MODS(keycode)); action_layer = QK_LAYER_MOD_GET_LAYER(keycode); action.code = ACTION_LAYER_MODS(action_layer, (mod & 0x10) ? mod << 4 : mod); break; -#endif -#ifndef NO_ACTION_TAPPING +#endif // NO_ACTION_LAYER case QK_MOD_TAP ... QK_MOD_TAP_MAX: +#ifndef NO_ACTION_TAPPING mod = mod_config(QK_MOD_TAP_GET_MODS(keycode)); # ifdef LEGACY_MAGIC_HANDLING action.code = ACTION_MODS_TAP_KEY(mod, QK_MOD_TAP_GET_TAP_KEYCODE(keycode)); # else // LEGACY_MAGIC_HANDLING action.code = ACTION_MODS_TAP_KEY(mod, keycode_config(QK_MOD_TAP_GET_TAP_KEYCODE(keycode))); # endif // LEGACY_MAGIC_HANDLING +#else // NO_ACTION_TAPPING +# ifdef NO_ACTION_TAPPING_MODTAP_MODS + // pass through mod_config again, since it previously missed it + // and then only send as ACTION_KEY to bypass most of action.c handling + action.code = ACTION_MODS(mod_config(QK_MOD_TAP_GET_MODS(keycode))); +# else // NO_ACTION_TAPPING_MODTAP_MODS + // pass through keycode_config again, since it previously missed it + // and then only send as ACTION_KEY to bypass most of action.c handling + action.code = ACTION_KEY(keycode_config(QK_MOD_TAP_GET_TAP_KEYCODE(keycode))); +# endif // NO_ACTION_TAPPING_MODTAP_MODS +#endif // NO_ACTION_TAPPING break; -#endif #ifdef SWAP_HANDS_ENABLE case QK_SWAP_HANDS ... QK_SWAP_HANDS_MAX: # ifdef LEGACY_MAGIC_HANDLING -- cgit v1.2.3