]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
colemak shortcuts
authorJack Humbert <jack.humb@gmail.com>
Sat, 21 Mar 2015 05:01:09 +0000 (01:01 -0400)
committerJack Humbert <jack.humb@gmail.com>
Sat, 21 Mar 2015 05:01:09 +0000 (01:01 -0400)
keyboard/planck/extended_keymap_common.c
keyboard/planck/extended_keymap_common.h
keyboard/planck/extended_keymap_jack.c

index 387ad43d3568f1c82cb6e112a06a88643b06a64a..d9f79ac041cbb283c53819288b240d6aba8ad136 100644 (file)
@@ -30,14 +30,17 @@ static action_t keycode_to_action(uint16_t keycode);
 /* converts key to action */
 action_t action_for_key(uint8_t layer, keypos_t key)
 {
+       // 16bit keycodes - important
     uint16_t keycode = keymap_key_to_keycode(layer, key);
 
-    // Handle mods in keymap
     if (keycode > 0x00FF && keycode < 0x2000) {
+       // Has a modifier
        action_t action;
+       // Split it up
        action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF);
        return action;
        } else if (keycode > 0x1FFF && keycode < 0x3000) {
+               // Is a shortcut for function layer, pull last 12bits
         return keymap_func_to_action(keycode & 0xFFF);
        }
 
@@ -160,9 +163,7 @@ static action_t keycode_to_action(uint16_t keycode)
 /* translates key to keycode */
 uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
 {
-    // return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]);
-    // This limits it to a byte
-
+       // Read entire word (16bits)
     return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]);
 }
 
@@ -175,5 +176,6 @@ action_t keymap_fn_to_action(uint16_t keycode)
 /* translates Fn keycode to action */
 action_t keymap_func_to_action(uint16_t keycode)
 {
+       // For FUNC without 8bit limit
     return (action_t){ .code = pgm_read_word(&fn_actions[(int)keycode]) };
 }
\ No newline at end of file
index fdce9df970e0d2792a04133f00ded4af829b29d3..24c2cb848e1e473c18295a722552fbcb942d428b 100644 (file)
@@ -70,9 +70,46 @@ extern const uint16_t fn_actions[];
 #define RALT(kc) kc | 0x1400
 #define RGUI(kc) kc | 0x1800
 
+// Alias for function layers than expand past FN31
 #define FUNC(kc) kc | 0x2000
 
+// Aliases
 #define S(kc) LSFT(kc)
 #define F(kc) FUNC(kc)
 
+// For software implementation of colemak
+#define CM_Q    KC_Q
+#define CM_W    KC_W
+#define CM_F    KC_E
+#define CM_P    KC_R
+#define CM_G    KC_T
+#define CM_J    KC_Y
+#define CM_L    KC_U
+#define CM_U    KC_I
+#define CM_Y    KC_O
+#define CM_SCLN KC_P
+
+#define CM_A    KC_A
+#define CM_R    KC_S
+#define CM_S    KC_D
+#define CM_T    KC_F
+#define CM_D    KC_G
+#define CM_H    KC_H
+#define CM_N    KC_J
+#define CM_E    KC_K
+#define CM_I    KC_L
+#define CM_O    KC_SCLN
+
+#define CM_Z    KC_Z
+#define CM_X    KC_X
+#define CM_C    KC_C
+#define CM_V    KC_V
+#define CM_B    KC_B
+#define CM_K    KC_N
+#define CM_M    KC_M
+#define CM_COMM KC_COMM
+#define CM_DOT  KC_DOT
+#define CM_SLSH KC_SLSH
+
+
 #endif
index 3f620afbb14197cb783e71318e43c70cbb7208e2..ef1eae49f71d6e9a4fc0539c70f43a1629536644 100644 (file)
@@ -1,31 +1,33 @@
 #include "extended_keymap_common.h"
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Jack */
-  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
-  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {KC_RSFT, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),  KC_SPC, KC_NO,    KC_FN1, KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+[0] = { /* Jack soft-coded colemak */
+  {KC_TAB,  CM_Q,    CM_W,    CM_F,    CM_P,    CM_G,    CM_J,    CM_L,    CM_U,    CM_Y,    CM_SCLN, KC_BSPC},
+  {KC_ESC,  CM_A,    CM_R,    CM_S,    CM_T,    CM_D,    CM_H,    CM_N,    CM_E,    CM_I,    CM_O,     KC_QUOT},
+  {KC_LSFT, CM_Z,    CM_X,    CM_C,    CM_V,    CM_B,    CM_K,    CM_M,    CM_COMM, CM_DOT,  CM_SLSH, KC_ENT},
+  {KC_RSFT, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_NO,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
 },
-[1] = { /* Jack colemak */
+[1] = { /* Jack hard-coded colemak */
   {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
   {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_QUOT},
   {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, KC_FN2,    KC_SPC,   KC_NO,    KC_FN1, KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
+  {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_NO,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
 },
 [2] = { /* Jack RAISE */
   {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, KC_FN3, KC_FN4, KC_PAUSE, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
   {KC_TRNS, KC_F11,  KC_F12,  KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_NO,  KC_FN1,  KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_NO,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 },
 [3] = { /* Jack LOWER */
   {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_BSPC},
-  {KC_TRNS, FUNC(3), KC_FN4, LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
+  {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
   {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_FN2,    KC_TRNS,   KC_NO,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_NO,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
 }
 };
+
+
 const uint16_t PROGMEM fn_actions[] = {
     [1] = ACTION_LAYER_MOMENTARY(2),  // to Fn overlay
     [2] = ACTION_LAYER_MOMENTARY(3),  // to Fn overlay
@@ -33,4 +35,4 @@ const uint16_t PROGMEM fn_actions[] = {
     [3] = ACTION_DEFAULT_LAYER_SET(0),
     [4] = ACTION_DEFAULT_LAYER_SET(1),
 
-};
+};
\ No newline at end of file