summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Sterling <xyverz@gmail.com>2016-08-10 08:49:27 +0200
committerIan Sterling <xyverz@gmail.com>2016-08-10 08:49:27 +0200
commit6f700f1eb0c76aa19187efd83ab2b49a0db7f71f (patch)
tree9c1cdf16a03f7fbbeb0ec384e46fadc7591ef619
parent78a6fae453f1bf92f4015fc22138034f03725efc (diff)
downloadqmk_firmware-6f700f1eb0c76aa19187efd83ab2b49a0db7f71f.tar.gz
qmk_firmware-6f700f1eb0c76aa19187efd83ab2b49a0db7f71f.tar.xz
Adding my own layouts for the Phantom and Ergodox. My Ergodox layout adds persistent layers
based on the Planck and Preonic setup. The layout arrays are pulled directly from the ergodox/ez/ez.h keymap definition starting at line 81.
-rw-r--r--keyboards/ergodox/keymaps/xyverz/keymap.c311
-rw-r--r--keyboards/phantom/keymaps/xyverz/keymap.c67
2 files changed, 378 insertions, 0 deletions
diff --git a/keyboards/ergodox/keymaps/xyverz/keymap.c b/keyboards/ergodox/keymaps/xyverz/keymap.c
new file mode 100644
index 000000000..c5ce99dd2
--- /dev/null
+++ b/keyboards/ergodox/keymaps/xyverz/keymap.c
@@ -0,0 +1,311 @@
+/*
+ * The Dvorak layout shown herestems from my early Kinesis years, using the Contour PS/2 with a Dvorak
+ * software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the corner
+ * keys. I've decided to continue using this layout with my ErgoDox.
+ *
+ * The QWERTY layout shown here is based entirely on the Kinesis Advantage layout, with the additional
+ * keys as shown in the diagrams. The Colemak layout is merely an adaptation of that.
+ *
+ * I've enabled persistent keymaps for Qwerty, Dvorak and Colemak layers, similar to the default Planck
+ * layouts.
+ *
+ * For a better explanation of the layout matrices shown below, take a look at ../../ez/ez.h where the
+ * keymap is defined, beginning on line 81.
+ *
+ */
+
+#include "ergodox.h"
+#include "debug.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+
+extern keymap_config_t keymap_config;
+
+#define _DV 0 // Dvorak layer
+#define _QW 1 // Qwerty layer
+#define _CM 2 // Colemak layer
+#define _MD 3 // Media Layer
+#define _KP 4 // Keypad Layer
+
+// Macro name shortcuts
+#define DVORAK M(_DV)
+#define QWERTY M(_QW)
+#define COLEMAK M(_CM)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Dvorak layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | ] | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | [ |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab | ' | , | . | Y | Y | | | | F | G | C | R | L | \ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | CapsLk | A | O | E | U | I |------| |------| D | H | T | N | S | - |
+ * |--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------|
+ * | LShift | Z | X | C | V | X | | | | B | M | W | V | Z | RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | LGUI | ` | INS | Left | Rght | | Up | Dn | / | = | RGUI |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | LCtr | LAlt | | Ralt | RCtr |
+ * ,------|------|------| |------+------+------.
+ * | | | Home | | PgUp | | |
+ * | BkSp | Del |------| |------| Enter| Space|
+ * | | | End | | PgDn | | |
+ * `--------------------' `--------------------'
+ *
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[_DV] = { // layer 0 : Dvorak
+ // left hand
+ {KC_RBRC, KC_TAB, KC_CAPS, KC_LSFT, KC_LGUI, KC_NO },
+ {KC_1, KC_QUOT, KC_A, KC_SCLN, KC_GRV, KC_END },
+ {KC_2, KC_COMM, KC_O, KC_Q, KC_INS, KC_DEL },
+ {KC_3, KC_DOT, KC_E, KC_J, KC_LEFT, KC_BSPC},
+ {KC_4, KC_P, KC_U, KC_K, KC_RGHT, KC_HOME},
+ {KC_5, KC_Y, KC_I, KC_X, KC_NO, KC_LCTL},
+ {KC_ESC, KC_NO, KC_NO, MO(_MD), KC_NO, KC_LALT},
+
+ // right hand
+ {KC_ESC, KC_NO, KC_NO, MO(_KP), KC_NO, KC_RALT},
+ {KC_6, KC_F, KC_D, KC_B, KC_NO, KC_RCTL},
+ {KC_7, KC_G, KC_H, KC_M, KC_UP, KC_PGUP},
+ {KC_8, KC_C, KC_T, KC_W, KC_DOWN, KC_SPC },
+ {KC_9, KC_R, KC_N, KC_V, KC_SLSH, KC_ENT },
+ {KC_0, KC_L, KC_S, KC_Z, KC_EQL, KC_PGDN},
+ {KC_LBRC, KC_BSLS, KC_MINS, KC_RSFT, KC_RGUI, KC_NO }
+},
+
+/* Keymap 1: QWERTY layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | \ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | CapsLk | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
+ * |--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------|
+ * | LShift | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | LCtr | LAlt | | Ralt | RCtr |
+ * ,------|------|------| |------+------+------.
+ * | | | Home | | PgUp | | |
+ * | BkSp | Del |------| |------| Enter| Space|
+ * | | | End | | PgDn | | |
+ * `--------------------' `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[_QW] = { // layer 1 : QWERTY
+ // left hand
+ {KC_EQL, KC_TAB, KC_CAPS, KC_LSFT, KC_LGUI, KC_NO },
+ {KC_1, KC_Q, KC_A, KC_Z, KC_GRV, KC_END },
+ {KC_2, KC_W, KC_S, KC_X, KC_INS, KC_DEL },
+ {KC_3, KC_E, KC_D, KC_C, KC_LEFT, KC_BSPC},
+ {KC_4, KC_R, KC_F, KC_V, KC_RGHT, KC_HOME},
+ {KC_5, KC_T, KC_G, KC_B, KC_NO, KC_LCTL},
+ {KC_ESC, KC_NO, KC_NO, MO(_MD), KC_NO, KC_LALT},
+
+ // right hand
+ {KC_ESC, KC_NO, KC_NO, MO(_KP), KC_NO, KC_RALT},
+ {KC_6, KC_Y, KC_H, KC_N, KC_NO, KC_RCTL},
+ {KC_7, KC_U, KC_J, KC_M, KC_UP, KC_PGUP},
+ {KC_8, KC_I, KC_K, KC_COMM, KC_DOWN, KC_SPC },
+ {KC_9, KC_O, KC_L, KC_DOT, KC_LBRC, KC_ENT },
+ {KC_0, KC_P, KC_SCLN, KC_SLSH, KC_RBRC, KC_PGDN},
+ {KC_MINS, KC_BSLS, KC_QUOT, KC_RSFT, KC_RGUI, KC_NO }
+ },
+
+/* Keymap 2: Colemak layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | = | 1 | 2 | 3 | 4 | 5 | ESC | | ESC | 6 | 7 | 8 | 9 | 0 | - |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab | Q | W | F | P | G | | | | J | L | U | Y | ; | \ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | BkSpc | A | R | S | T | D |------| |------| H | N | E | I | O | ' |
+ * |--------+------+------+------+------+------| _MD | | _KP |------+------+------+------+------+--------|
+ * | LShift | Z | X | C | V | B | | | | K | M | , | . | / | RShift |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | LGUI | ` | INS | Left | Rght | | Up | Dn | [ | ] | RGUI |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | LCtr | LAlt | | Ralt | RCtr |
+ * ,------|------|------| |------+------+------.
+ * | | | Home | | PgUp | | |
+ * | BkSp | Del |------| |------| Enter| Space|
+ * | | | End | | PgDn | | |
+ * `--------------------' `--------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[_CM] = { // layer 2 : Colemak
+ // left hand
+ {KC_EQL, KC_TAB, KC_BSPC, KC_LSFT, KC_LGUI, KC_NO },
+ {KC_1, KC_Q, KC_A, KC_Z, KC_GRV, KC_END },
+ {KC_2, KC_W, KC_R, KC_X, KC_INS, KC_DEL },
+ {KC_3, KC_F, KC_S, KC_C, KC_LEFT, KC_BSPC},
+ {KC_4, KC_P, KC_T, KC_V, KC_RGHT, KC_HOME},
+ {KC_5, KC_G, KC_D, KC_B, KC_NO, KC_LCTL},
+ {KC_ESC, KC_NO, KC_NO, MO(_MD), KC_NO, KC_LALT},
+
+ // right hand
+ {KC_ESC, KC_NO, KC_NO, MO(_KP), KC_NO, KC_RALT},
+ {KC_6, KC_J, KC_H, KC_K, KC_NO, KC_RCTL},
+ {KC_7, KC_L, KC_N, KC_M, KC_UP, KC_PGUP},
+ {KC_8, KC_U, KC_E, KC_COMM, KC_DOWN, KC_SPC },
+ {KC_9, KC_Y, KC_I, KC_DOT, KC_LBRC, KC_ENT },
+ {KC_0, KC_SCLN, KC_O, KC_SLSH, KC_RBRC, KC_PGDN},
+ {KC_MINS, KC_BSLS, KC_QUOT, KC_RSFT, KC_RGUI, KC_NO }
+ },
+
+/* Keymap 3: Symbol Layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | TEENSY | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | PrSc | ScLk | Paus | | FN4 | | FN5 | | Mute | Vol- | Vol+ | | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | | | | | | |------| |------| Stop | Prev | Play | Next | Sel | |
+ * |--------+------+------+------+------+------| FN4 | | FN5 |------+------+------+------+------+--------|
+ * | | |Dvorak|Qwerty|Colemk| | | | | | | | | | |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// Media Layer
+[_MD] = { // layer 3 : Media layer
+ // left hand
+ {RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO },
+ {KC_F1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_F2, KC_PSCR, KC_TRNS, DVORAK, KC_TRNS, KC_TRNS},
+ {KC_F3, KC_SLCK, KC_TRNS, QWERTY, KC_TRNS, KC_TRNS},
+ {KC_F4, KC_PAUS, KC_TRNS, COLEMAK, KC_TRNS, KC_TRNS},
+ {KC_F5, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS},
+ {KC_F11, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_TRNS},
+
+ // right hand
+ {KC_F12, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_TRNS},
+ {KC_F6, KC_TRNS, KC_MSTP, KC_TRNS, KC_NO, KC_TRNS},
+ {KC_F7, KC_MUTE, KC_MPRV, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_F8, KC_VOLD, KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_F9, KC_VOLU, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_F10, KC_TRNS, KC_MSEL, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO }
+ },
+
+/* Keymap 4: Keypad layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | Power | | | | | | | | | | NmLk | KP / | KP * | KP - | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Sleep | | | | | | FN5 | | FN4 | | KP 7 | KP 8 | KP 9 | KP + | |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
+ * | Wake | | | | | |------| |------| | KP 4 | KP 5 | KP 6 | KP + | |
+ * |--------+------+------+------+------+------| FN5 | | FN4 |------+------+------+------+------+--------|
+ * | | | | | | | | | | | KP 1 | KP 2 | KP 3 |KP Ent| |
+ * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
+ * | | | | | | | KP 0 | | KP . |KP Ent| |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * | | | | | |
+ * ,------|------|------| |------+------+------.
+ * | | | | | | | |
+ * | | |------| |------| | |
+ * | | | | | | | |
+ * `--------------------' `--------------------'
+ */
+// Keypad Layer
+[_KP] = { // layer 4 : Keypad layer
+ // left hand
+ {KC_PWR, KC_SLEP, KC_WAKE, KC_TRNS, KC_TRNS, KC_NO },
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS},
+ {KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_TRNS},
+
+ // right hand
+ {KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS},
+ {KC_NLCK, KC_P7, KC_P4, KC_P1, KC_P0, KC_TRNS},
+ {KC_PSLS, KC_P8, KC_P5, KC_P2, KC_NO, KC_TRNS},
+ {KC_PAST, KC_P9, KC_P6, KC_P3, KC_PDOT, KC_TRNS},
+ {KC_PMNS, KC_PPLS, KC_PPLS, KC_PENT, KC_PENT, KC_TRNS},
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO }
+ },
+
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+void persistant_default_layer_set(uint16_t default_layer) {
+ eeconfig_update_default_layer(default_layer);
+ default_layer_set(default_layer);
+}
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ switch(id) {
+ case _DV:
+ if (record->event.pressed) {
+ persistant_default_layer_set(1UL<<_DV);
+ }
+ break;
+ case _QW:
+ if (record->event.pressed) {
+ persistant_default_layer_set(1UL<<_QW);
+ }
+ break;
+ case _CM:
+ if (record->event.pressed) {
+ persistant_default_layer_set(1UL<<_CM);
+ }
+ break;
+ }
+ return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+ uint8_t layer = biton32(layer_state);
+
+ ergodox_board_led_off();
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+ switch (layer) {
+ // TODO: Make this relevant to the ErgoDox EZ.
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ default:
+ // none
+ break;
+ }
+
+};
diff --git a/keyboards/phantom/keymaps/xyverz/keymap.c b/keyboards/phantom/keymaps/xyverz/keymap.c
new file mode 100644
index 000000000..5948e4ca5
--- /dev/null
+++ b/keyboards/phantom/keymaps/xyverz/keymap.c
@@ -0,0 +1,67 @@
+#include "phantom.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _BL 0
+#define _FL 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: (Base Layer) Default Layer
+ * ,-----------------------------------------------------------------------------.
+ * |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus|
+ * |-----------------------------------------------------------| |--------------|
+ * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp|
+ * |-----------------------------------------------------------| |--------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del| End|PgDn|
+ * |-----------------------------------------------------------| `--------------'
+ * |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
+ * |-----------------------------------------------------------| ,----.
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
+ * |-----------------------------------------------------------| ,-------------.
+ * |Ctrl|Gui |Alt | Space |ALT |GUI |_FL |CTRL | |Lft| Dn |Rig |
+ * `-----------------------------------------------------------' `-------------'
+ */
+[_BL] = KEYMAP(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, \
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_LBRC, KC_RBRC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, \
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_DELETE, KC_END, KC_PGDN, \
+ KC_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, \
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT, KC_UP, \
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, MO(_FL), KC_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap _FL: Function Layer
+ * ,-----------------------------------------------------------------------------.
+ * |RESET| | | | | | | | | | | | | | | | | | |
+ * |-----------------------------------------------------------| |--------------|
+ * | | | | | | | | | | | | | | | | | | |
+ * |-----------------------------------------------------------| |--------------|
+ * | | | | | | | | | | | | | | | | | | |
+ * |-----------------------------------------------------------| `--------------'
+ * | | | | | | | | | | | | | |
+ * |-----------------------------------------------------------| ,----.
+ * | | F1| F2| F3| F4| F5|F6 |F7 |F8 | | | | | |
+ * |-----------------------------------------------------------| ,-------------.
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------' `-------------'
+ */
+[_FL] = KEYMAP(
+ KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_SLEP, \
+ RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MUTE,KC_VOLD,KC_VOLU,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, \
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MSTP,KC_MPLY,KC_MPRV,KC_MNXT,KC_MSEL, KC_TRNS,KC_TRNS,KC_TRNS, \
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_TRNS,KC_TRNS,KC_CALC,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_CAPS, KC_TRNS, \
+ KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS)
+};
+
+enum function_id {
+ SHIFT_ESC,
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+}