diff options
Diffstat (limited to 'quantum')
-rw-r--r-- | quantum/keymap_common.c | 5 | ||||
-rw-r--r-- | quantum/quantum_keycodes.h | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 8b09f93fce..9a412b66ad 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -122,6 +122,11 @@ action_t action_for_key(uint8_t layer, keypos_t key) case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX: action.code = ACTION_LAYER_TAP_TOGGLE(keycode & 0xFF); break; + case QK_LAYER_MOD ... QK_LAYER_MOD_MAX: + mod = keycode & 0xF; + action_layer = (keycode >> 4) & 0xF; + action.code = ACTION_LAYER_MODS(action_layer, mod); + break; case QK_MOD_TAP ... QK_MOD_TAP_MAX: mod = mod_config((keycode >> 0x8) & 0x1F); action.code = ACTION_MODS_TAP_KEY(mod, keycode & 0xFF); diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h index 4a5681c7e6..8122bfe739 100644 --- a/quantum/quantum_keycodes.h +++ b/quantum/quantum_keycodes.h @@ -71,6 +71,8 @@ enum quantum_keycodes { QK_TAP_DANCE_MAX = 0x57FF, QK_LAYER_TAP_TOGGLE = 0x5800, QK_LAYER_TAP_TOGGLE_MAX = 0x58FF, + QK_LAYER_MOD = 0x5900, + QK_LAYER_MOD_MAX = 0x59FF, #ifdef STENO_ENABLE QK_STENO = 0x5A00, QK_STENO_BOLT = 0x5A30, @@ -597,6 +599,9 @@ enum quantum_keycodes { // One-shot layer - 256 layer max #define OSL(layer) (layer | QK_ONE_SHOT_LAYER) +// L-ayer M-od: Momentary switch layer with modifiers active - 16 layer max, left mods only +#define LM(layer, mod) (QK_LAYER_MOD | (((layer) & 0xF) << 4) | ((mod) & 0xF)) + // One-shot mod #define OSM(mod) ((mod) | QK_ONE_SHOT_MOD) |