From d9f08e6177271594fa573993d9f4dbc2d98c7416 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Tue, 27 Oct 2015 22:00:52 -0400 Subject: [PATCH] toggle and hold-tap action shortcuts --- quantum/keymap_common.c | 14 ++++++++++++-- quantum/keymap_common.h | 10 ++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c index 5c00c0afa..da7527172 100644 --- a/quantum/keymap_common.c +++ b/quantum/keymap_common.c @@ -101,15 +101,25 @@ action_t action_for_key(uint8_t layer, keypos_t key) action_t action; action.code = ACTION_DEFAULT_LAYER_SET(layer); return action; - } + } else if (type == 0x4) { + // Set default layer + int layer = keycode & 0xFF; + action_t action; + action.code = ACTION_LAYER_TOGGLE(layer); + return action; + } #ifdef MIDI_ENABLE } else if (keycode >= 0x6000 && keycode < 0x7000) { action_t action; action.code = ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8); return action; #endif + } else if (keycode >= 0x7000 && keycode < 0x8000) { + action_t action; + action.code = ACTION_MODS_TAP_KEY((keycode >> 0x8) & 0xF, keycode & 0xFF); + return action; #ifdef UNICODE_ENABLE - } else if (keycode >= 0x8000) { + } else if (keycode >= 0x8000000) { action_t action; uint16_t unicode = keycode & ~(0x8000); action.code = ACTION_FUNCTION_OPT(unicode & 0xFF, (unicode & 0xFF00) >> 8); diff --git a/quantum/keymap_common.h b/quantum/keymap_common.h index b1df4eb0f..100300e81 100644 --- a/quantum/keymap_common.h +++ b/quantum/keymap_common.h @@ -172,8 +172,18 @@ extern const uint16_t fn_actions[]; // Set default layer - 256 layer max #define DF(layer) (layer | 0x5300) +// Toggle to layer - 256 layer max +#define TG(layer) (layer | 0x5400) + #define MIDI(n) (n | 0x6000) +// H-old, T-ap - 256 keycode max +#define HT(mod, kc) (kc | 0x7000 | ((mod & 0xF) << 8)) +#define CTL_T(kc) HT(0x1, kc) +#define SFT_T(kc) HT(0x2, kc) +#define ALT_T(kc) HT(0x4, kc) +#define GUI_T(kc) HT(0x8, kc) + // For sending unicode codes. // You may not send codes over 1FFF -- this supports most of UTF8. // To have a key that sends out Œ, go UC(0x0152)