]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
toggle and hold-tap action shortcuts
authorJack Humbert <jack.humb@gmail.com>
Wed, 28 Oct 2015 02:00:52 +0000 (22:00 -0400)
committerJack Humbert <jack.humb@gmail.com>
Wed, 28 Oct 2015 02:00:52 +0000 (22:00 -0400)
quantum/keymap_common.c
quantum/keymap_common.h

index 5c00c0afa2216a8d9d159b821b1accff1aff8bcf..da7527172715297ae977df19465a8eec755447b7 100644 (file)
@@ -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);
index b1df4eb0f610e80fe7953269a5eb38aeec78c46e..100300e8133b4422336172dcadb8c69b5d5c0830 100644 (file)
@@ -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)