From 84065e1d7458ad6b0a04a82fed4dfc69a4ded2b2 Mon Sep 17 00:00:00 2001
From: Tim Schumacher <twschum@gmail.com>
Date: Thu, 21 Nov 2019 06:07:33 -0500
Subject: [PATCH] [Keymap] Add DZ60, Levinson keymaps, twschum user files
 (#7358)

* Adds layout for DZ60rev2 plate B, options 4 and 10

* Use KC_TRANS for layer keys

* Format layer0 with visual key size layout

* Add RGB controls; add start description; add KC_LOCK

* Update comments on rules.mk for DZ60

* Gets keymap compiling

* Fix wiring for shift on row 3

* Hold a with other key to send Ctrl-A before other key

* Adds compile-time defined mac-compatability media keycodes

* Adds logic in place for capturing taps (w/ timeout)

* Add send_keys(...) which can send up to 64 nested keycodes

* Implement send_keys callable with n repeats

* Tweaks some of the keymap

* Add reset keycode; add disable to custom shortcuts

* Adds a special "off" layer where bonus mod goes to layer 0, every other key KC_NO

* Adjust timeout; mousekey settings

* Changes layout of Home,End,PgUp/Dn on the dedicated arrow keys L1/L2

* PoC on rgb lighted layer indication

* Refactors color table defines

* Adds logic for controlling layer lights

* Only change state on one side of the event lol

* Switch back to Tapping Toggle for layer 4

* Add custom config file for keyboard; TT and mousekey settings

* Code cleanup; starting to refactor special ctrl tapping keys functions

* Move defines and reak out functions

* Remove debugging light

* Adjust keymaps; add enter

* Adds a couple custom macros

* Add simplified version of keymap to help debug issues

* Adds basi numpad configuration for levinson keyboard half

* Use ANSI ctrl key as layer 1 for better one hand (`)

* Adapt to new 8bit hue from #5547; layer enum use everywhere

* Move custom code out to users/ space

* Flip col pins, move key assignments to "left hand"

* Update readme

* Implement placeholder macros

* Notes

* Reduce tapping time for SFT_T(/)

* Adds vim features; refactors things

* Adds fork of the vim features written by xton

* Use correct backspace keycode

* Add VIM_ESC

* Add "OFF" to the RGB/HSV definitions

* Clean up rules, use new "OFF" definition

* Add windows KC_CALCULATOR key to numpad

* Reformat layers with better guide; change layer names

* Add sleep key

* Change timeout delay

* Add a "code paste" which surrounds a ^V with ```

* Try removing shift tap on rshift /

* Update macros

* Update the "code paste" macro

* Update keymap with reset, calc, equals

* Update keyboards/dz60/keymaps/twschum_b_4_10_simple/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update keyboards/dz60/keymaps/twschum_b_4_10/keymap.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update users/twschum/twschum.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Update users/twschum/twschum.c

Co-Authored-By: Drashna Jaelre <drashna@live.com>

* Revert quantum/rgblight_list.h

* Better name for split space layout; rename KEYMAP->LAYOUT

* Rename KEYMAP->LAYOUT

* Use simpler :flash command

* Clean up layout files

* Use qmk's MOD_MASK_CTRL

* Sync lufa submodule

* Cleanup from noroadsleft's PR comments

* Modernize vim layer code
---
 .../dz60/keymaps/split_space_arrows/keymap.c  |   67 +
 .../dz60/keymaps/split_space_arrows/rules.mk  |    7 +
 .../dz60/keymaps/twschum_b_4_10/config.h      |   24 +
 .../dz60/keymaps/twschum_b_4_10/keymap.c      |  123 +
 .../dz60/keymaps/twschum_b_4_10/layout.json   | 4877 +++++++++++++++++
 .../dz60/keymaps/twschum_b_4_10/rules.mk      |   15 +
 keyboards/dz60/rules.mk                       |    6 +-
 .../keebio/levinson/keymaps/numpad/config.h   |   34 +
 .../keebio/levinson/keymaps/numpad/keymap.c   |  123 +
 .../keebio/levinson/keymaps/numpad/readme.md  |    4 +
 .../keebio/levinson/keymaps/numpad/rules.mk   |    3 +
 users/twschum/config.h                        |    0
 users/twschum/readme.md                       |   14 +
 users/twschum/rules.mk                        |    5 +
 users/twschum/twschum.c                       |  257 +
 users/twschum/twschum.h                       |  131 +
 users/twschum/xtonhasvim.c                    |  593 ++
 users/twschum/xtonhasvim.h                    |   62 +
 18 files changed, 6342 insertions(+), 3 deletions(-)
 create mode 100644 keyboards/dz60/keymaps/split_space_arrows/keymap.c
 create mode 100644 keyboards/dz60/keymaps/split_space_arrows/rules.mk
 create mode 100644 keyboards/dz60/keymaps/twschum_b_4_10/config.h
 create mode 100644 keyboards/dz60/keymaps/twschum_b_4_10/keymap.c
 create mode 100644 keyboards/dz60/keymaps/twschum_b_4_10/layout.json
 create mode 100644 keyboards/dz60/keymaps/twschum_b_4_10/rules.mk
 create mode 100644 keyboards/keebio/levinson/keymaps/numpad/config.h
 create mode 100644 keyboards/keebio/levinson/keymaps/numpad/keymap.c
 create mode 100644 keyboards/keebio/levinson/keymaps/numpad/readme.md
 create mode 100644 keyboards/keebio/levinson/keymaps/numpad/rules.mk
 create mode 100644 users/twschum/config.h
 create mode 100644 users/twschum/readme.md
 create mode 100644 users/twschum/rules.mk
 create mode 100644 users/twschum/twschum.c
 create mode 100644 users/twschum/twschum.h
 create mode 100644 users/twschum/xtonhasvim.c
 create mode 100644 users/twschum/xtonhasvim.h

diff --git a/keyboards/dz60/keymaps/split_space_arrows/keymap.c b/keyboards/dz60/keymaps/split_space_arrows/keymap.c
new file mode 100644
index 0000000000..6dbfaa9375
--- /dev/null
+++ b/keyboards/dz60/keymaps/split_space_arrows/keymap.c
@@ -0,0 +1,67 @@
+#include QMK_KEYBOARD_H
+
+/* DZ60 layout using following options (from layouts diagram on KBDfans):
+ *  - plate B (2.25u lshift)
+ *  - opt 4 (1.75, 1, 1 on rshift)
+ *  - opt 10 (2.75, 1.25, 2.25 on space, 5x1u bottom right keys)
+ * http://www.keyboard-layout-editor.com/#/gists/225f0f4dcf6671405f744fabe314627c
+ */
+
+#define LAYOUT_b_4_10( \
+        K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,       K014, \
+        K100,       K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+        K200,       K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       \
+        K300,       K302, K303, K304, K305, K306, K307, K308, K309, K310,       K312, K313, K314, \
+        K400, K401,       K403,       K404, K406,       K408,       K410, K411, K412, K413, K414  \
+        ) { \
+    { K000,  K001,  K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  KC_NO, K014 }, \
+    { K100,  KC_NO, K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,  K113,  K114 }, \
+    { K200,  KC_NO, K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,  KC_NO }, \
+    { K300,  KC_NO, K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  KC_NO, K312,  K313,  K314 }, \
+    { K400,  K401,  KC_NO, K403,  K404,  KC_NO, K406,  KC_NO, K408,  KC_NO, K410,  K411,  K412,  K413,  K414 }  \
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Layer 0: basic qwerty */
+    LAYOUT_b_4_10(
+       // |--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------||------2.0-------|
+            KC_ESC,   KC_1,    KC_2,    KC_3,   KC_4,   KC_5,     KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_MINS, KC_EQL,      KC_BSPC,
+       // |--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------||----------------|
+       //
+       // |----1.5-----||--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|----1.5-----|
+             KC_TAB,      KC_Q,     KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,  KC_LBRC, KC_RBRC,   KC_BSLS,
+       // |------------||--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|------------|
+       //
+       // |----1.75------||--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|------2.25--------||
+             KC_LCTL,        KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,   KC_SCLN, KC_QUOT,     KC_ENT,
+       // |--------------||--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|------------------||
+       //
+       // |------2.25--------|--------|--------|--------|--------|--------|--------|--------|--------|--------||----1.75------|--------|--------||
+               KC_LSHIFT,      KC_Z,    KC_X,    KC_C,    KC_V,     KC_B,    KC_N,    KC_M,   KC_COMM, KC_DOT,   SFT_T(KC_SLSH), KC_UP,  KC_HYPR,
+       // |------------------|--------|--------|--------|--------|--------|--------|--------|--------|--------||--------------|--------|--------||
+       //
+       // |---1.25---|---1.25---||---1.25---||--------2.75----------||---1.25---|------2.25--------||--------|--------|--------|--------|--------|
+             KC_MEH,    KC_LALT,    KC_LGUI,         KC_SPC,             TT(1),       MO(1),          TG(1),   TT(2),  KC_LEFT, KC_DOWN, KC_RGHT
+       // |----------|----------||----------||----------------------||----------|------------------||--------|--------|--------|--------|--------|
+          ),
+
+    /* Layer 1: primary fn layer */
+    LAYOUT_b_4_10(
+        KC_GRV,  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_DEL,
+        KC_TAB,  KC_NO,   KC_HOME,       KC_UP,               KC_END,          KC_NO,   KC_HOME, KC_PGDN, KC_PGUP, KC_END,   KC_NO,   KC_NO,   KC_NO,  KC_NO,
+        KC_CAPS, KC_NO,   KC_LEFT,       KC_DOWN,             KC_RIGHT,        KC_NO,   KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT, KC_NO,   KC_NO,   KC_ENT,
+        KC_LSFT, KC_MPRV, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN,   KC_AUDIO_VOL_UP, KC_MNXT, KC_NO,   KC_NO,   KC_NO,   KC_NO,    KC_LOCK, KC_PGUP, KC_INS,
+        KC_MEH,  KC_LALT, KC_LGUI,       KC_MEDIA_PLAY_PAUSE, KC_TRNS,         KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN,  KC_END
+    ),
+
+    /* Layer 2: mouse navigation */
+    /* Layer 3: numpad */
+    /* Layer 4: RGB lighting controls and keyboard config, reset */
+    LAYOUT_b_4_10(
+        KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,   KC_NO,   KC_NO,   KC_NO,          KC_NO,            KC_NO,     TO(5),
+        KC_NO, KC_NO, KC_NO, KC_NO, RESET, KC_NO, KC_NO, KC_NO,   KC_NO,   KC_NO,   KC_NO,          KC_NO,            KC_NO,     RGB_HUD,
+        KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,   KC_NO,   KC_NO,   RGB_MODE_PLAIN, RGB_MODE_FORWARD, KC_RSHIFT,
+        KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,   KC_NO,   KC_NO,   RGB_TOG,        RGB_VAI,          RGB_HUI,
+        KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, RGB_SAD, RGB_VAD, RGB_SAI
+    ),
+};
diff --git a/keyboards/dz60/keymaps/split_space_arrows/rules.mk b/keyboards/dz60/keymaps/split_space_arrows/rules.mk
new file mode 100644
index 0000000000..5d38b9d367
--- /dev/null
+++ b/keyboards/dz60/keymaps/split_space_arrows/rules.mk
@@ -0,0 +1,7 @@
+# Build Options
+# override the options specified in dz60/rules.mk
+BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes       # Mouse keys
+EXTRAKEY_ENABLE = yes       # Audio control and System control
+RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
+KEY_LOCK_ENABLE = yes       # Enables use of KC_LOCK
diff --git a/keyboards/dz60/keymaps/twschum_b_4_10/config.h b/keyboards/dz60/keymaps/twschum_b_4_10/config.h
new file mode 100644
index 0000000000..15cabda364
--- /dev/null
+++ b/keyboards/dz60/keymaps/twschum_b_4_10/config.h
@@ -0,0 +1,24 @@
+#pragma once
+
+// number of taps for TT Tap-Toggle keys to toggle
+#ifdef TAPPING_TOGGLE
+#undef TAPPING_TOGGLE
+#endif
+#define TAPPING_TOGGLE 2
+
+// time in ms that counts as a "tap" for various features
+#ifdef TAPPING_TERM
+#undef TAPPING_TERM
+#endif
+#define TAPPING_TERM 100
+
+// https://docs.qmk.fm/features/mouse-keys#configuring-the-behavior-of-mousekeys
+#define MOUSEKEY_DELAY        0
+#define MOUSEKEY_INTERVAL     20
+#define MOUSEKEY_MAX_SPEED    10
+#define MOUSEKEY_TIME_TO_MAX  15
+#define MOUSEKEY_WHEEL_MAX_SPEED   1
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 255
+
+// flags from user/twschum/
+#define TWSCHUM_TAPPING_CTRL_PREFIX 1
diff --git a/keyboards/dz60/keymaps/twschum_b_4_10/keymap.c b/keyboards/dz60/keymaps/twschum_b_4_10/keymap.c
new file mode 100644
index 0000000000..6efb567133
--- /dev/null
+++ b/keyboards/dz60/keymaps/twschum_b_4_10/keymap.c
@@ -0,0 +1,123 @@
+#include QMK_KEYBOARD_H
+#include "twschum.h"
+
+/* DZ60 layout using following options (from layouts diagram on KBDfans):
+ *  - plate B (2.25u lshift)
+ *  - opt 4 (1.75, 1, 1 on rshift)
+ *  - opt 10 (2.75, 1.25, 2.25 on space, 5x1u bottom right keys)
+ * http://www.keyboard-layout-editor.com/#/gists/225f0f4dcf6671405f744fabe314627c
+ */
+
+
+#define LAYOUT_b_4_10( \
+        K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012,       K014, \
+        K100,       K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
+        K200,       K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213,       \
+        K300,       K302, K303, K304, K305, K306, K307, K308, K309, K310,       K312, K313, K314, \
+        K400, K401,       K403,       K404, K406,       K408,       K410, K411, K412, K413, K414  \
+        ) { \
+    { K000,  K001,  K002,  K003,  K004,  K005,  K006,  K007,  K008,  K009,  K010,  K011,  K012,  XXXXXXX, K014 }, \
+    { K100,  XXXXXXX, K102,  K103,  K104,  K105,  K106,  K107,  K108,  K109,  K110,  K111,  K112,  K113,  K114 }, \
+    { K200,  XXXXXXX, K202,  K203,  K204,  K205,  K206,  K207,  K208,  K209,  K210,  K211,  K212,  K213,  XXXXXXX }, \
+    { K300,  XXXXXXX, K302,  K303,  K304,  K305,  K306,  K307,  K308,  K309,  K310,  XXXXXXX, K312,  K313,  K314 }, \
+    { K400,  K401,  XXXXXXX, K403,  K404,  XXXXXXX, K406,  XXXXXXX, K408,  XXXXXXX, K410,  K411,  K412,  K413,  K414 }  \
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+  /* base 60% qwerty */
+  LAYOUT_b_4_10(
+    // |--------|----1---|----2---|----3---|---4----|---5----|---6----|---7----|---8----|---9----|---0----|-- - ---|-- = ---||------2.0-------|
+         KC_ESC,   KC_1,    KC_2,    KC_3,   KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_MINS, KC_EQL,      KC_BSPC,
+    // |--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------||----------------|
+    //
+    // |----1.5-----||---Q----|---W----|---E----|---R----|---T----|---Y----|---U----|---I----|---O----|---P----|---[----|---]----|----1.5-----|
+          KC_TAB,      KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_LBRC, KC_RBRC,   KC_BSLS,
+    // |------------||--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|------------|
+    //
+    // |----1.75------||---A----|---S----|---D----|---F----|---G----|---H----|---J----|---K----|---L----|---;----|---'----|------2.25--------||
+          KC_LCTL,       KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,   KC_SCLN, KC_QUOT,     KC_ENT,
+    // |--------------||--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|------------------||
+    //
+    // |------2.25--------|---Z----|---X----|---C----|---V----|---B----|---N----|---M----|---,----|---.----||----1.75------|--------|--------||
+          KC_LSHIFT,        KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,   KC_COMM,  KC_DOT,  /*SFT_T*/KC_SLSH, KC_UP,  VIM_START,
+    // |------------------|--------|--------|--------|--------|--------|--------|--------|--------|--------||--------------|--------|--------||
+    //
+    // |---1.25---|---1.25---||---1.25---||--------2.75----------||---1.25---|------2.25--------||--------|--------|--------|--------|--------|
+          MO(_Fn),  KC_LALT,    KC_LGUI,         KC_SPC,           TT(_Nav),      MO(_Fn),       TG(_Num), TT(_Cfg), KC_LEFT, KC_DOWN, KC_RGHT
+    // |----------|----------||----------||----------------------||----------|------------------||--------|--------|--------|--------|--------|
+  ),
+
+  /* vim mode */
+  LAYOUT_b_4_10(
+    VIM_ESC,   _______, _______, _______, _______, _______, _______, _______, _______,   _______,    _______, _______, _______, _______,
+    _______,   _______, VIM_W,   VIM_E,   KC_R,    _______, VIM_Y,   VIM_U,   VIM_I,     VIM_O,      VIM_P,   _______, _______, _______,
+    _______,   VIM_A,   VIM_S,   VIM_D,   _______, VIM_G,   VIM_H,   VIM_J,   VIM_K,     VIM_L,      _______, _______, _______,
+    VIM_SHIFT, _______, VIM_X,   VIM_C,   VIM_V,   VIM_B,   _______, _______, VIM_COMMA, VIM_PERIOD, _______, _______, VIM_ESC,
+    _______,   _______, _______, _______, _______, _______, _______, _______, _______,   _______,    _______
+  ),
+
+  /* primary fn layer */
+  LAYOUT_b_4_10(
+    // |--------|----1---|----2---|----3---|---4----|---5----|---6----|---7----|---8----|---9----|---0----|-- - ---|-- = ---||------2.0-------|
+         KC_GRV,   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_DEL,
+    // |--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------||----------------|
+    //
+    // |----1.5-----||---Q----|---W----|---E----|---R----|---T----|---Y----|---U----|---I----|---O----|---P----|---[----|---]----|----1.5-----|
+          KC_TAB,   CODE_PASTE, KC_HOME, KC_UP,   KC_END, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP,  KC_END, LESS_PD, XXXXXXX, XXXXXXX,  CODE_PASTE,
+    // |------------||--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|------------|
+    //
+    // |----1.75------||---A----|---S----|---D----|---F----|---G----|---H----|---J----|---K----|---L----|---;----|---'----|------2.25--------||
+          KC_CAPS,     SALT_CMD, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, KC_LEFT, KC_DOWN,  KC_UP,  KC_RGHT, XXXXXXX, XXXXXXX,     KC_ENT,
+    // |--------------||--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|--------|------------------||
+    //
+    // |------2.25--------|---Z----|---X----|---C----|---V----|---B----|---N----|---M----|---,----|---.----||----1.75------|--------|--------||
+          KC_LSHIFT,       KC_MPRV, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, _______, _______, XXXXXXX, XXXXXXX,     KC_LOCK,     KC_PGUP,  KC_INS,
+    // |------------------|--------|--------|--------|--------|--------|--------|--------|--------|--------||--------------|--------|--------||
+    //
+    // |---1.25---|---1.25---||---1.25---||--------2.75----------||---1.25---|------2.25--------||--------|--------|--------|--------|--------|
+          KC_MEH,   KC_LALT,    KC_LGUI,    KC_MEDIA_PLAY_PAUSE,    _______,       _______,       _______, _______,  KC_HOME, KC_PGDN, KC_END
+    // |----------|----------||----------||----------------------||----------|------------------||--------|--------|--------|--------|--------|
+  ),
+
+  /* mouse navigation */
+  LAYOUT_b_4_10(
+    TO(_Base), KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, XXXXXXX,     XXXXXXX, XXXXXXX,       XXXXXXX,       XXXXXXX,     XXXXXXX,        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+    XXXXXXX,   XXXXXXX,      KC_MS_BTN2,   KC_MS_UP,     KC_MS_BTN1,  XXXXXXX, XXXXXXX,       KC_SLEP,       KC_PGDN,     KC_PGUP,        XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+    KC_LCTL,   KC_MS_BTN3,   KC_MS_LEFT,   KC_MS_DOWN,   KC_MS_RIGHT, XXXXXXX, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_UP, KC_MS_WH_RIGHT, XXXXXXX, XXXXXXX, XXXXXXX,
+    KC_LSHIFT, XXXXXXX,      XXXXXXX,      XXXXXXX,      XXXXXXX,     XXXXXXX, XXXXXXX,       XXXXXXX,       XXXXXXX,     XXXXXXX,        XXXXXXX, _______, XXXXXXX,
+    XXXXXXX,   XXXXXXX,      XXXXXXX,      KC_MS_BTN1,   _______,     _______, _______,       _______,       _______,     _______,        _______
+  ),
+
+  /* numpad layer */
+  LAYOUT_b_4_10(
+    _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,     XXXXXXX,        XXXXXXX, XXXXXXX, KC_BSPC,
+    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, KC_KP_PLUS,     XXXXXXX, XXXXXXX, XXXXXXX,
+    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_SLASH, KC_KP_ASTERISK, XXXXXXX, KC_ENT,
+    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_DOT,   KC_KP_ENTER,    XXXXXXX, XXXXXXX,
+    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_0, _______, _______, XXXXXXX, XXXXXXX,     XXXXXXX
+  ),
+
+
+  /* RGB lighting controls and keyboard config, reset */
+  LAYOUT_b_4_10(
+    _______,           XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,      TG_L0_RGB,      XXXXXXX,          XXXXXXX,   TO(_None),
+    XXXXXXX,           XXXXXXX, XXXXXXX, XXXXXXX, RESET,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,      XXXXXXX,        XXXXXXX,          XXXXXXX,   RGB_HUD,
+    EN_CTRL_SHORTCUTS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG_LAYER_RGB, RGB_MODE_PLAIN, RGB_MODE_FORWARD, KC_RSHIFT,
+    XXXXXXX,           XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MAKE, XXXXXXX, XXXXXXX,      RGB_TOG,        RGB_VAI,          RGB_HUI,
+    XXXXXXX,           XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_VAD,      RGB_SAI
+  ),
+
+  /* soft "off" state where none of the keystroke register */
+  LAYOUT_b_4_10(
+    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX,
+    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX,
+    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TO(_Base),
+    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+  ),
+};
+
+uint8_t vim_cmd_layer(void) {
+    return _Vim;
+}
diff --git a/keyboards/dz60/keymaps/twschum_b_4_10/layout.json b/keyboards/dz60/keymaps/twschum_b_4_10/layout.json
new file mode 100644
index 0000000000..cd484f9d89
--- /dev/null
+++ b/keyboards/dz60/keymaps/twschum_b_4_10/layout.json
@@ -0,0 +1,4877 @@
+{
+  "configKeymap":{
+    "keys":[
+      "K00",
+      "K01",
+      "K02",
+      "K03",
+      "K04",
+      "K05",
+      "K06",
+      "K07",
+      "K08",
+      "K09",
+      "K0A",
+      "K0B",
+      "K0C",
+      "K0D",
+      "K2D",
+      "K10",
+      "K11",
+      "K12",
+      "K13",
+      "K14",
+      "K15",
+      "K16",
+      "K17",
+      "K18",
+      "K19",
+      "K1A",
+      "K1B",
+      "K1C",
+      "K1D",
+      "K20",
+      "K21",
+      "K22",
+      "K23",
+      "K24",
+      "K25",
+      "K26",
+      "K27",
+      "K28",
+      "K29",
+      "K2A",
+      "K2B",
+      "K2C",
+      "K30",
+      "K31",
+      "K32",
+      "K33",
+      "K34",
+      "K35",
+      "K36",
+      "K37",
+      "K38",
+      "K39",
+      "K3A",
+      "K3B",
+      "K3C",
+      "K3D",
+      "K40",
+      "K41",
+      "K42",
+      "K44",
+      "K45",
+      "K46",
+      "K48",
+      "K49",
+      "K4A",
+      "K4B",
+      "K4C"
+    ],
+    "positions":[
+      [
+        "K00",
+        "K01",
+        "K02",
+        "K03",
+        "K04",
+        "K05",
+        "K06",
+        "K07",
+        "K08",
+        "K09",
+        "K0A",
+        "K0B",
+        "K0C",
+        "K0D"
+      ],
+      [
+        "K10",
+        "K11",
+        "K12",
+        "K13",
+        "K14",
+        "K15",
+        "K16",
+        "K17",
+        "K18",
+        "K19",
+        "K1A",
+        "K1B",
+        "K1C",
+        "K1D"
+      ],
+      [
+        "K20",
+        "K21",
+        "K22",
+        "K23",
+        "K24",
+        "K25",
+        "K26",
+        "K27",
+        "K28",
+        "K29",
+        "K2A",
+        "K2B",
+        "K2C",
+        "K2D"
+      ],
+      [
+        "K30",
+        "K31",
+        "K32",
+        "K33",
+        "K34",
+        "K35",
+        "K36",
+        "K37",
+        "K38",
+        "K39",
+        "K3A",
+        "K3B",
+        "K3C",
+        "K3D"
+      ],
+      [
+        "K40",
+        "K41",
+        "K42",
+        "KC_NO",
+        "K44",
+        "K45",
+        "K46",
+        "KC_NO",
+        "K48",
+        "K49",
+        "K4A",
+        "K4B",
+        "K4C",
+        "KC_NO"
+      ]
+    ]
+  },
+  "keySections":[
+    {
+      "row1":[
+        {
+          "id":"k00",
+          "value":"ESC",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k01",
+          "value":"1",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k02",
+          "value":"2",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k03",
+          "value":"3",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k04",
+          "value":"4",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k05",
+          "value":"5",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k06",
+          "value":"6",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k07",
+          "value":"7",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k08",
+          "value":"8",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k09",
+          "value":"9",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0A",
+          "value":"0",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0B",
+          "value":"MINS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0C",
+          "value":"EQL",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "backspace":[
+        [
+          {
+            "id":"k0D",
+            "value":"BSPC",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k200",
+            "zone":"Backspace"
+          },
+          {
+            "id":"k2D",
+            "value":"NO",
+            "type":"nodisplay",
+            "showMenu":false
+          }
+        ],
+        [
+          {
+            "id":"k0D",
+            "value":"PSCR",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100",
+            "zone":"Backspace"
+          },
+          {
+            "id":"k2D",
+            "value":"PAUS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100",
+            "zone":"Backspace"
+          }
+        ]
+      ],
+      "row2":[
+        {
+          "id":"k10",
+          "value":"TAB",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k150"
+        },
+        {
+          "id":"k11",
+          "value":"Q",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k12",
+          "value":"W",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k13",
+          "value":"E",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k14",
+          "value":"R",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k15",
+          "value":"T",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k16",
+          "value":"Y",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k17",
+          "value":"U",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k18",
+          "value":"I",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k19",
+          "value":"O",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1A",
+          "value":"P",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1B",
+          "value":"LBRC",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1C",
+          "value":"RBRC",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "row2pipe":[
+        [
+          {
+            "id":"k1D",
+            "value":"BSLS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150",
+            "zone":"Enter"
+          }
+        ],
+        [
+          {
+            "id":"k1D",
+            "value":"ENT",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"kISO",
+            "zone":"Enter"
+          }
+        ]
+      ],
+      "caps":[
+        [
+          {
+            "id":"k20",
+            "value":"LCTL",
+            "type":"normal",
+            "secondary":"LCTL",
+            "showMenu":false,
+            "shape":"k175",
+            "zone":"Caps Lock"
+          }
+        ],
+        [
+          {
+            "id":"k20",
+            "value":"CAPS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k175stepped",
+            "zone":"Caps Lock"
+          }
+        ]
+      ],
+      "row3":[
+        {
+          "id":"k21",
+          "value":"A",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k22",
+          "value":"S",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k23",
+          "value":"D",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k24",
+          "value":"F",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k25",
+          "value":"G",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k26",
+          "value":"H",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k27",
+          "value":"J",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k28",
+          "value":"K",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k29",
+          "value":"L",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k2A",
+          "value":"SCLN",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k2B",
+          "value":"QUOT",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "enter":[
+        [
+          {
+            "id":"k2C",
+            "value":"ENT",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k225",
+            "zone":"Enter"
+          }
+        ],
+        [
+          {
+            "id":"k2C",
+            "value":"NUHS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100",
+            "zone":"Enter"
+          }
+        ]
+      ],
+      "leftShift":[
+        [
+          {
+            "id":"k30",
+            "value":"LSFT",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k225",
+            "zone":"Left Shift"
+          },
+          {
+            "id":"k31",
+            "value":"NO",
+            "type":"nodisplay",
+            "showMenu":false
+          }
+        ],
+        [
+          {
+            "id":"k30",
+            "value":"LSFT",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125",
+            "zone":"Left Shift"
+          },
+          {
+            "id":"k31",
+            "value":"NUBS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100",
+            "zone":"Left Shift"
+          }
+        ]
+      ],
+      "row4":[
+        {
+          "id":"k32",
+          "value":"Z",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k33",
+          "value":"X",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k34",
+          "value":"C",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k35",
+          "value":"V",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k36",
+          "value":"B",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k37",
+          "value":"N",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k38",
+          "value":"M",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k39",
+          "value":"COMM",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k3A",
+          "value":"DOT",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "rightShift":[
+        [
+          {
+            "id":"k3B",
+            "value":"SLSH",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100",
+            "zone":"Right Shift"
+          },
+          {
+            "id":"k3C",
+            "value":"RSFT",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k275",
+            "zone":"Right Shift"
+          },
+          {
+            "id":"k3D",
+            "value":"NO",
+            "type":"nodisplay"
+          }
+        ],
+        [
+          {
+            "id":"k3B",
+            "value":"SLSH",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100",
+            "zone":"Right Shift"
+          },
+          {
+            "id":"k3C",
+            "value":"RSFT",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k175",
+            "zone":"Right Shift"
+          },
+          {
+            "id":"k3D",
+            "value":"L1",
+            "type":"momentary",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100",
+            "zone":"Right Shift"
+          }
+        ],
+        [
+          {
+            "id":"k3B",
+            "value":"SLSH",
+            "type":"tapkey",
+            "secondary":"RSFT",
+            "showMenu":false,
+            "shape":"k175",
+            "zone":"Right Shift"
+          },
+          {
+            "id":"k3C",
+            "value":"UP",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100",
+            "zone":"Right Shift"
+          },
+          {
+            "id":"k3D",
+            "value":"HYPR",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100",
+            "zone":"Right Shift"
+          }
+        ]
+      ],
+      "row5":[
+        [
+          {
+            "id":"k40",
+            "value":"MEH",
+            "type":"normal",
+            "secondary":"MEH",
+            "showMenu":false,
+            "shape":"k125",
+            "zone":"Bottom Row"
+          },
+          {
+            "id":"k41",
+            "value":"LALT",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125",
+            "zone":"Bottom Row"
+          },
+          {
+            "id":"k42",
+            "value":"LGUI",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125",
+            "zone":"Bottom Row"
+          }
+        ],
+        [
+          {
+            "id":"k40",
+            "value":"LCTL",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150",
+            "zone":"Bottom Row"
+          },
+          {
+            "id":"k41",
+            "value":"LGUI",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100",
+            "zone":"Bottom Row"
+          },
+          {
+            "id":"k42",
+            "value":"LALT",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150",
+            "zone":"Bottom Row"
+          }
+        ]
+      ],
+      "space":[
+        [
+          [
+            {
+              "id":"k44",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k45",
+              "value":"SPC",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k625",
+              "zone":"Space"
+            },
+            {
+              "id":"k46",
+              "value":"NO",
+              "type":"nodisplay"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"SPC",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275",
+              "zone":"Space"
+            },
+            {
+              "id":"k45",
+              "value":"L2",
+              "type":"taptoggle",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125",
+              "zone":"Space"
+            },
+            {
+              "id":"k46",
+              "value":"L1",
+              "type":"momentary",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k225",
+              "zone":"Space"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"ENT",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k225",
+              "zone":"Space"
+            },
+            {
+              "id":"k45",
+              "value":"BL_STEP",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125",
+              "zone":"Space"
+            },
+            {
+              "id":"k46",
+              "value":"SPC",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275",
+              "zone":"Space"
+            }
+          ]
+        ],
+        [
+          [
+            {
+              "id":"k44",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k45",
+              "value":"SPC",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k700",
+              "zone":"Space"
+            },
+            {
+              "id":"k46",
+              "value":"NO",
+              "type":"nodisplay"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"ENT",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275",
+              "zone":"Space"
+            },
+            {
+              "id":"k45",
+              "value":"BL_STEP",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150",
+              "zone":"Space"
+            },
+            {
+              "id":"k46",
+              "value":"SPC",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275",
+              "zone":"Space"
+            }
+          ]
+        ]
+      ],
+      "bottomRight":[
+        [
+          [
+            {
+              "id":"k48",
+              "value":"RGUI",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125",
+              "zone":"Bottom Right"
+            },
+            {
+              "id":"k49",
+              "value":"RALT",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125",
+              "zone":"Bottom Right"
+            },
+            {
+              "id":"k4A",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k4B",
+              "value":"APP",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125",
+              "zone":"Bottom Right"
+            },
+            {
+              "id":"k4C",
+              "value":"RCTL",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125",
+              "zone":"Bottom Right"
+            }
+          ],
+          [
+            {
+              "id":"k48",
+              "value":"L3",
+              "type":"taptoggle",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100",
+              "zone":"Bottom Right"
+            },
+            {
+              "id":"k49",
+              "value":"L4",
+              "type":"direct",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100",
+              "zone":"Bottom Right"
+            },
+            {
+              "id":"k4A",
+              "value":"LEFT",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100",
+              "zone":"Bottom Right"
+            },
+            {
+              "id":"k4B",
+              "value":"DOWN",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100",
+              "zone":"Bottom Right"
+            },
+            {
+              "id":"k4C",
+              "value":"RIGHT",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100",
+              "zone":"Bottom Right"
+            }
+          ]
+        ],
+        [
+          [
+            {
+              "id":"k48",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k49",
+              "value":"RALT",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150",
+              "zone":"Bottom Right"
+            },
+            {
+              "id":"k4A",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k4B",
+              "value":"APP",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100",
+              "zone":"Bottom Right"
+            },
+            {
+              "id":"k4C",
+              "value":"RCTL",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150",
+              "zone":"Bottom Right"
+            }
+          ],
+          [
+            {
+              "id":"k48",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k49",
+              "value":"RALT",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100",
+              "zone":"Bottom Right"
+            },
+            {
+              "id":"k4A",
+              "value":"LEFT",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100",
+              "zone":"Bottom Right"
+            },
+            {
+              "id":"k4B",
+              "value":"DOWN",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100",
+              "zone":"Bottom Right"
+            },
+            {
+              "id":"k4C",
+              "value":"RIGHT",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100",
+              "zone":"Bottom Right"
+            }
+          ]
+        ]
+      ]
+    },
+    {
+      "row1":[
+        {
+          "id":"k00",
+          "value":"GRV",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k01",
+          "value":"F1",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k02",
+          "value":"F2",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k03",
+          "value":"F3",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k04",
+          "value":"F4",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k05",
+          "value":"F5",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k06",
+          "value":"F6",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k07",
+          "value":"F7",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k08",
+          "value":"F8",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k09",
+          "value":"F9",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0A",
+          "value":"F10",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0B",
+          "value":"F11",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0C",
+          "value":"F12",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "backspace":[
+        [
+          {
+            "id":"k0D",
+            "value":"DEL",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k200"
+          },
+          {
+            "id":"k2D",
+            "value":"NO",
+            "type":"nodisplay",
+            "showMenu":false
+          }
+        ],
+        [
+          {
+            "id":"k0D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k2D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "row2":[
+        {
+          "id":"k10",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k150"
+        },
+        {
+          "id":"k11",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k12",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k13",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k14",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k15",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k16",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k17",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k18",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k19",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1B",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1C",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "row2pipe":[
+        [
+          {
+            "id":"k1D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150"
+          }
+        ],
+        [
+          {
+            "id":"k1D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"kISO"
+          }
+        ]
+      ],
+      "caps":[
+        [
+          {
+            "id":"k20",
+            "value":"CAPS",
+            "type":"normal",
+            "secondary":"LCTL",
+            "showMenu":false,
+            "shape":"k175"
+          }
+        ],
+        [
+          {
+            "id":"k20",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k175stepped"
+          }
+        ]
+      ],
+      "row3":[
+        {
+          "id":"k21",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k22",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k23",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k24",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k25",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k26",
+          "value":"LEFT",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k27",
+          "value":"DOWN",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k28",
+          "value":"UP",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k29",
+          "value":"RIGHT",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k2A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k2B",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "enter":[
+        [
+          {
+            "id":"k2C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k225"
+          }
+        ],
+        [
+          {
+            "id":"k2C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "leftShift":[
+        [
+          {
+            "id":"k30",
+            "value":"LSFT",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k225"
+          },
+          {
+            "id":"k31",
+            "value":"NO",
+            "type":"nodisplay",
+            "showMenu":false
+          }
+        ],
+        [
+          {
+            "id":"k30",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125"
+          },
+          {
+            "id":"k31",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "row4":[
+        {
+          "id":"k32",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k33",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k34",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k35",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k36",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k37",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k38",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k39",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k3A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "rightShift":[
+        [
+          {
+            "id":"k3B",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k3C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k275"
+          },
+          {
+            "id":"k3D",
+            "value":"NO",
+            "type":"nodisplay"
+          }
+        ],
+        [
+          {
+            "id":"k3B",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k3C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k175"
+          },
+          {
+            "id":"k3D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ],
+        [
+          {
+            "id":"k3B",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":"RSFT",
+            "showMenu":false,
+            "shape":"k175"
+          },
+          {
+            "id":"k3C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k3D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "row5":[
+        [
+          {
+            "id":"k40",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":"MEH",
+            "showMenu":false,
+            "shape":"k125"
+          },
+          {
+            "id":"k41",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125"
+          },
+          {
+            "id":"k42",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125"
+          }
+        ],
+        [
+          {
+            "id":"k40",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150"
+          },
+          {
+            "id":"k41",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k42",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150"
+          }
+        ]
+      ],
+      "space":[
+        [
+          [
+            {
+              "id":"k44",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k625"
+            },
+            {
+              "id":"k46",
+              "value":"NO",
+              "type":"nodisplay"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k46",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k225"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k225"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k46",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            }
+          ]
+        ],
+        [
+          [
+            {
+              "id":"k44",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k700"
+            },
+            {
+              "id":"k46",
+              "value":"NO",
+              "type":"nodisplay"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150"
+            },
+            {
+              "id":"k46",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            }
+          ]
+        ]
+      ],
+      "bottomRight":[
+        [
+          [
+            {
+              "id":"k48",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k4A",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            }
+          ],
+          [
+            {
+              "id":"k48",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4A",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            }
+          ]
+        ],
+        [
+          [
+            {
+              "id":"k48",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150"
+            },
+            {
+              "id":"k4A",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150"
+            }
+          ],
+          [
+            {
+              "id":"k48",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4A",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            }
+          ]
+        ]
+      ]
+    },
+    {
+      "row1":[
+        {
+          "id":"k00",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k01",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k02",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k03",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k04",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k05",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k06",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k07",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k08",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k09",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0B",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0C",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "backspace":[
+        [
+          {
+            "id":"k0D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k200"
+          },
+          {
+            "id":"k2D",
+            "value":"NO",
+            "type":"nodisplay",
+            "showMenu":false
+          }
+        ],
+        [
+          {
+            "id":"k0D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k2D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "row2":[
+        {
+          "id":"k10",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k150"
+        },
+        {
+          "id":"k11",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k12",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k13",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k14",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k15",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k16",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k17",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k18",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k19",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1B",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1C",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "row2pipe":[
+        [
+          {
+            "id":"k1D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150"
+          }
+        ],
+        [
+          {
+            "id":"k1D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"kISO"
+          }
+        ]
+      ],
+      "caps":[
+        [
+          {
+            "id":"k20",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":"LCTL",
+            "showMenu":false,
+            "shape":"k175"
+          }
+        ],
+        [
+          {
+            "id":"k20",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k175stepped"
+          }
+        ]
+      ],
+      "row3":[
+        {
+          "id":"k21",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k22",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k23",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k24",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k25",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k26",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k27",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k28",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k29",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k2A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k2B",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "enter":[
+        [
+          {
+            "id":"k2C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k225"
+          }
+        ],
+        [
+          {
+            "id":"k2C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "leftShift":[
+        [
+          {
+            "id":"k30",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k225"
+          },
+          {
+            "id":"k31",
+            "value":"NO",
+            "type":"nodisplay",
+            "showMenu":false
+          }
+        ],
+        [
+          {
+            "id":"k30",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125"
+          },
+          {
+            "id":"k31",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "row4":[
+        {
+          "id":"k32",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k33",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k34",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k35",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k36",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k37",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k38",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k39",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k3A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "rightShift":[
+        [
+          {
+            "id":"k3B",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k3C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k275"
+          },
+          {
+            "id":"k3D",
+            "value":"NO",
+            "type":"nodisplay"
+          }
+        ],
+        [
+          {
+            "id":"k3B",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k3C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k175"
+          },
+          {
+            "id":"k3D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ],
+        [
+          {
+            "id":"k3B",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":"RSFT",
+            "showMenu":false,
+            "shape":"k175"
+          },
+          {
+            "id":"k3C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k3D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "row5":[
+        [
+          {
+            "id":"k40",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":"MEH",
+            "showMenu":false,
+            "shape":"k125"
+          },
+          {
+            "id":"k41",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125"
+          },
+          {
+            "id":"k42",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125"
+          }
+        ],
+        [
+          {
+            "id":"k40",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150"
+          },
+          {
+            "id":"k41",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k42",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150"
+          }
+        ]
+      ],
+      "space":[
+        [
+          [
+            {
+              "id":"k44",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k625"
+            },
+            {
+              "id":"k46",
+              "value":"NO",
+              "type":"nodisplay"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k46",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k225"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k225"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k46",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            }
+          ]
+        ],
+        [
+          [
+            {
+              "id":"k44",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k700"
+            },
+            {
+              "id":"k46",
+              "value":"NO",
+              "type":"nodisplay"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150"
+            },
+            {
+              "id":"k46",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            }
+          ]
+        ]
+      ],
+      "bottomRight":[
+        [
+          [
+            {
+              "id":"k48",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k4A",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            }
+          ],
+          [
+            {
+              "id":"k48",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4A",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            }
+          ]
+        ],
+        [
+          [
+            {
+              "id":"k48",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150"
+            },
+            {
+              "id":"k4A",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150"
+            }
+          ],
+          [
+            {
+              "id":"k48",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4A",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            }
+          ]
+        ]
+      ]
+    },
+    {
+      "row1":[
+        {
+          "id":"k00",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k01",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k02",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k03",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k04",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k05",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k06",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k07",
+          "value":"PSLS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k08",
+          "value":"PAST",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k09",
+          "value":"PEQL",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0B",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0C",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "backspace":[
+        [
+          {
+            "id":"k0D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k200"
+          },
+          {
+            "id":"k2D",
+            "value":"NO",
+            "type":"nodisplay",
+            "showMenu":false
+          }
+        ],
+        [
+          {
+            "id":"k0D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k2D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "row2":[
+        {
+          "id":"k10",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k150"
+        },
+        {
+          "id":"k11",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k12",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k13",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k14",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k15",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k16",
+          "value":"P7",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k17",
+          "value":"P8",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k18",
+          "value":"P8",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k19",
+          "value":"PMNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1B",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1C",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "row2pipe":[
+        [
+          {
+            "id":"k1D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150"
+          }
+        ],
+        [
+          {
+            "id":"k1D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"kISO"
+          }
+        ]
+      ],
+      "caps":[
+        [
+          {
+            "id":"k20",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":"LCTL",
+            "showMenu":false,
+            "shape":"k175"
+          }
+        ],
+        [
+          {
+            "id":"k20",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k175stepped"
+          }
+        ]
+      ],
+      "row3":[
+        {
+          "id":"k21",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k22",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k23",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k24",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k25",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k26",
+          "value":"P4",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k27",
+          "value":"P5",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k28",
+          "value":"P6",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k29",
+          "value":"PPLS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k2A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k2B",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "enter":[
+        [
+          {
+            "id":"k2C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k225"
+          }
+        ],
+        [
+          {
+            "id":"k2C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "leftShift":[
+        [
+          {
+            "id":"k30",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k225"
+          },
+          {
+            "id":"k31",
+            "value":"NO",
+            "type":"nodisplay",
+            "showMenu":false
+          }
+        ],
+        [
+          {
+            "id":"k30",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125"
+          },
+          {
+            "id":"k31",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "row4":[
+        {
+          "id":"k32",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k33",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k34",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k35",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k36",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k37",
+          "value":"P1",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k38",
+          "value":"P2",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k39",
+          "value":"P3",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k3A",
+          "value":"PDOT",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "rightShift":[
+        [
+          {
+            "id":"k3B",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k3C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k275"
+          },
+          {
+            "id":"k3D",
+            "value":"NO",
+            "type":"nodisplay"
+          }
+        ],
+        [
+          {
+            "id":"k3B",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k3C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k175"
+          },
+          {
+            "id":"k3D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ],
+        [
+          {
+            "id":"k3B",
+            "value":"PENT",
+            "type":"normal",
+            "secondary":"RSFT",
+            "showMenu":false,
+            "shape":"k175"
+          },
+          {
+            "id":"k3C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k3D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "row5":[
+        [
+          {
+            "id":"k40",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":"MEH",
+            "showMenu":false,
+            "shape":"k125"
+          },
+          {
+            "id":"k41",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125"
+          },
+          {
+            "id":"k42",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125"
+          }
+        ],
+        [
+          {
+            "id":"k40",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150"
+          },
+          {
+            "id":"k41",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k42",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150"
+          }
+        ]
+      ],
+      "space":[
+        [
+          [
+            {
+              "id":"k44",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k625"
+            },
+            {
+              "id":"k46",
+              "value":"NO",
+              "type":"nodisplay"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k46",
+              "value":"P0",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k225"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k225"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k46",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            }
+          ]
+        ],
+        [
+          [
+            {
+              "id":"k44",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k700"
+            },
+            {
+              "id":"k46",
+              "value":"NO",
+              "type":"nodisplay"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150"
+            },
+            {
+              "id":"k46",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            }
+          ]
+        ]
+      ],
+      "bottomRight":[
+        [
+          [
+            {
+              "id":"k48",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k4A",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            }
+          ],
+          [
+            {
+              "id":"k48",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4A",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            }
+          ]
+        ],
+        [
+          [
+            {
+              "id":"k48",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150"
+            },
+            {
+              "id":"k4A",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150"
+            }
+          ],
+          [
+            {
+              "id":"k48",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4A",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            }
+          ]
+        ]
+      ]
+    },
+    {
+      "row1":[
+        {
+          "id":"k00",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k01",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k02",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k03",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k04",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k05",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k06",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k07",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k08",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k09",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0B",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k0C",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "backspace":[
+        [
+          {
+            "id":"k0D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k200"
+          },
+          {
+            "id":"k2D",
+            "value":"NO",
+            "type":"nodisplay",
+            "showMenu":false
+          }
+        ],
+        [
+          {
+            "id":"k0D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k2D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "row2":[
+        {
+          "id":"k10",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k150"
+        },
+        {
+          "id":"k11",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k12",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k13",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k14",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k15",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k16",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k17",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k18",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k19",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1B",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k1C",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "row2pipe":[
+        [
+          {
+            "id":"k1D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150"
+          }
+        ],
+        [
+          {
+            "id":"k1D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"kISO"
+          }
+        ]
+      ],
+      "caps":[
+        [
+          {
+            "id":"k20",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":"LCTL",
+            "showMenu":false,
+            "shape":"k175"
+          }
+        ],
+        [
+          {
+            "id":"k20",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k175stepped"
+          }
+        ]
+      ],
+      "row3":[
+        {
+          "id":"k21",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k22",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k23",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k24",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k25",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k26",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k27",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k28",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k29",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k2A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k2B",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "enter":[
+        [
+          {
+            "id":"k2C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k225"
+          }
+        ],
+        [
+          {
+            "id":"k2C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "leftShift":[
+        [
+          {
+            "id":"k30",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k225"
+          },
+          {
+            "id":"k31",
+            "value":"NO",
+            "type":"nodisplay",
+            "showMenu":false
+          }
+        ],
+        [
+          {
+            "id":"k30",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125"
+          },
+          {
+            "id":"k31",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "row4":[
+        {
+          "id":"k32",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k33",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k34",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k35",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k36",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k37",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k38",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k39",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        },
+        {
+          "id":"k3A",
+          "value":"TRNS",
+          "type":"normal",
+          "secondary":null,
+          "showMenu":false,
+          "shape":"k100"
+        }
+      ],
+      "rightShift":[
+        [
+          {
+            "id":"k3B",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k3C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k275"
+          },
+          {
+            "id":"k3D",
+            "value":"NO",
+            "type":"nodisplay"
+          }
+        ],
+        [
+          {
+            "id":"k3B",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k3C",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k175"
+          },
+          {
+            "id":"k3D",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ],
+        [
+          {
+            "id":"k3B",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":"RSFT",
+            "showMenu":false,
+            "shape":"k175"
+          },
+          {
+            "id":"k3C",
+            "value":"HOME",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k3D",
+            "value":"PGUP",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          }
+        ]
+      ],
+      "row5":[
+        [
+          {
+            "id":"k40",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":"MEH",
+            "showMenu":false,
+            "shape":"k125"
+          },
+          {
+            "id":"k41",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125"
+          },
+          {
+            "id":"k42",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k125"
+          }
+        ],
+        [
+          {
+            "id":"k40",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150"
+          },
+          {
+            "id":"k41",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k100"
+          },
+          {
+            "id":"k42",
+            "value":"TRNS",
+            "type":"normal",
+            "secondary":null,
+            "showMenu":false,
+            "shape":"k150"
+          }
+        ]
+      ],
+      "space":[
+        [
+          [
+            {
+              "id":"k44",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k625"
+            },
+            {
+              "id":"k46",
+              "value":"NO",
+              "type":"nodisplay"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k46",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k225"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k225"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k46",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            }
+          ]
+        ],
+        [
+          [
+            {
+              "id":"k44",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k700"
+            },
+            {
+              "id":"k46",
+              "value":"NO",
+              "type":"nodisplay"
+            }
+          ],
+          [
+            {
+              "id":"k44",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            },
+            {
+              "id":"k45",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150"
+            },
+            {
+              "id":"k46",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k275"
+            }
+          ]
+        ]
+      ],
+      "bottomRight":[
+        [
+          [
+            {
+              "id":"k48",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k4A",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k125"
+            }
+          ],
+          [
+            {
+              "id":"k48",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4A",
+              "value":"DEL",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4B",
+              "value":"HOME",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4C",
+              "value":"PGDN",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            }
+          ]
+        ],
+        [
+          [
+            {
+              "id":"k48",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150"
+            },
+            {
+              "id":"k4A",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k150"
+            }
+          ],
+          [
+            {
+              "id":"k48",
+              "value":"NO",
+              "type":"nodisplay"
+            },
+            {
+              "id":"k49",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4A",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4B",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            },
+            {
+              "id":"k4C",
+              "value":"TRNS",
+              "type":"normal",
+              "secondary":null,
+              "showMenu":false,
+              "shape":"k100"
+            }
+          ]
+        ]
+      ]
+    }
+  ],
+  "layoutName":"twschum_DZ60_b_4_10_v1.2",
+  "timestamp":1525116588644
+}
diff --git a/keyboards/dz60/keymaps/twschum_b_4_10/rules.mk b/keyboards/dz60/keymaps/twschum_b_4_10/rules.mk
new file mode 100644
index 0000000000..1610eace74
--- /dev/null
+++ b/keyboards/dz60/keymaps/twschum_b_4_10/rules.mk
@@ -0,0 +1,15 @@
+# Build Options
+# override the options specified in dz60/rules.mk
+BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes       # Mouse keys
+EXTRAKEY_ENABLE = yes       # Audio control and System control
+CONSOLE_ENABLE = no         # Console for debug
+COMMAND_ENABLE = no         # Commands for debug and configuration
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = yes           # USB Nkey Rollover
+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
+KEY_LOCK_ENABLE = yes       # Enables use of KC_LOCK
+
+# Enables including users/twschum/twschum.h
+USER_NAME := twschum
diff --git a/keyboards/dz60/rules.mk b/keyboards/dz60/rules.mk
index 556d9e55c7..7ed2571da0 100644
--- a/keyboards/dz60/rules.mk
+++ b/keyboards/dz60/rules.mk
@@ -21,8 +21,8 @@ CONSOLE_ENABLE = no	# Console for debug(+400)
 COMMAND_ENABLE = no    # Commands for debug and configuration
 SLEEP_LED_ENABLE = no  # Breathing sleep LED during USB suspend
 NKRO_ENABLE = yes		# USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-BACKLIGHT_ENABLE = yes  # Enable keyboard backlight functionality
-AUDIO_ENABLE = no
-RGBLIGHT_ENABLE = yes
+BACKLIGHT_ENABLE = yes  # Enable per-key backlight LEDs
+AUDIO_ENABLE = no    # There is no speaker on this PCB
+RGBLIGHT_ENABLE = yes # Enable the RGB underglow LEDs
 
 LAYOUTS = 60_ansi 60_ansi_split_bs_rshift 60_hhkb 60_iso 60_abnt2
diff --git a/keyboards/keebio/levinson/keymaps/numpad/config.h b/keyboards/keebio/levinson/keymaps/numpad/config.h
new file mode 100644
index 0000000000..7e10bc445c
--- /dev/null
+++ b/keyboards/keebio/levinson/keymaps/numpad/config.h
@@ -0,0 +1,34 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+Copyright 2018 Danny Nguyen <danny@keeb.io>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+// #define USE_I2C
+// Need to flip the rows
+#undef MATRIX_COL_PINS
+#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6 }
+
+/* Select hand configuration */
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+/* Time in ms until oneshot layer times out */
+#define ONESHOT_TIMEOUT 3000
diff --git a/keyboards/keebio/levinson/keymaps/numpad/keymap.c b/keyboards/keebio/levinson/keymaps/numpad/keymap.c
new file mode 100644
index 0000000000..32a1113c5d
--- /dev/null
+++ b/keyboards/keebio/levinson/keymaps/numpad/keymap.c
@@ -0,0 +1,123 @@
+#include QMK_KEYBOARD_H
+
+/* Add the stings you want to send as macros, see
+ * https://docs.qmk.fm/#/feature_macros for what all can be used
+ */
+#define MACRO_0 "zero"
+#define MACRO_1 "one"
+#define MACRO_2 "two"
+#define MACRO_3 "three"
+#define MACRO_4 "four"
+#define MACRO_5 "five"
+#define MACRO_6 "six"
+#define MACRO_7 "seven"
+#define MACRO_8 "eight"
+#define MACRO_9 "nine"
+
+enum macro_keycodes {
+    M0 = SAFE_RANGE,
+    M1,
+    M2,
+    M3,
+    M4,
+    M5,
+    M6,
+    M7,
+    M8,
+    M9
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Numpad
+ * ,-----------------------------------------------------------------------------------.
+ * |   0  |   1  |   4  |   7  | BkSp |OSL(1)|      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |   ,  |   2  |   5  |   8  |   /  | Down |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |   .  |   3  |   6  |   9  |   *  | Up   |      |      |      |      |      |      |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |    Enter    |   +  |   -  |   =  | MO(1)|      |      |      |      |      |      |
+ * `-----------------------------------------------------------------------------------'
+ */
+[0] = LAYOUT_ortho_4x12( \
+    KC_KP_0,     KC_KP_1, KC_KP_4,    KC_KP_7,     KC_BSPACE,      OSL(1),  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
+    KC_COMMA,    KC_KP_2, KC_KP_5,    KC_KP_8,     KC_KP_SLASH,    KC_DOWN, KC_NO, KC_A,  KC_B,  KC_C,  KC_D,  KC_NO, \
+    KC_KP_DOT,   KC_KP_3, KC_KP_6,    KC_KP_9,     KC_KP_ASTERISK, KC_UP,   KC_NO, KC_E,  KC_F,  KC_G,  KC_H,  KC_NO, \
+    KC_KP_ENTER, KC_NO,   KC_KP_PLUS, KC_KP_MINUS, KC_KP_EQUAL,    MO(1),  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO  \
+),
+/* Macro layer - the number keys are macros,
+ * other functions on remaining keys
+ * ,-----------------------------------------.
+ * | M(0) | M(1) | M(4) | M(7) |      | Esc  |
+ * |------+------+------+------+------+------|
+ * | Left | M(2) | M(5) | M(8) |      |      |
+ * |------+------+------+------+------+------|
+ * | Right| M(3) | M(6) | M(9) |      |      |
+ * |------+------+------+------+------+------|
+ * |   NumLock   | RESET|      |      | Calc |
+ * `-----------------------------------------'
+ */
+[1] = LAYOUT_ortho_4x12( \
+    M0,         M1, M4, M7, KC_NO, KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
+    KC_LEFT,    M2, M5, M8, KC_NO, KC_NO,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
+    KC_RIGHT,   M3, M6, M8, KC_NO, KC_NO,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
+    KC_NUMLOCK, RESET, KC_NO, KC_NO, KC_CALC, KC_NO,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO  \
+)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+    switch (keycode) {
+        case M0:
+            if (record->event.pressed) {
+                SEND_STRING(MACRO_0);
+            }
+            break;
+        case M1:
+            if (record->event.pressed) {
+                SEND_STRING(MACRO_1);
+            }
+            break;
+        case M2:
+            if (record->event.pressed) {
+                SEND_STRING(MACRO_2);
+            }
+            break;
+        case M3:
+            if (record->event.pressed) {
+                SEND_STRING(MACRO_3);
+            }
+            break;
+        case M4:
+            if (record->event.pressed) {
+                SEND_STRING(MACRO_4);
+            }
+            break;
+        case M5:
+            if (record->event.pressed) {
+                SEND_STRING(MACRO_5);
+            }
+            break;
+        case M6:
+            if (record->event.pressed) {
+                SEND_STRING(MACRO_6);
+            }
+            break;
+        case M7:
+            if (record->event.pressed) {
+                SEND_STRING(MACRO_7);
+            }
+            break;
+        case M8:
+            if (record->event.pressed) {
+                SEND_STRING(MACRO_8);
+            }
+            break;
+        case M9:
+            if (record->event.pressed) {
+                SEND_STRING(MACRO_9);
+            }
+            break;
+    }
+    return true;
+};
diff --git a/keyboards/keebio/levinson/keymaps/numpad/readme.md b/keyboards/keebio/levinson/keymaps/numpad/readme.md
new file mode 100644
index 0000000000..0c15ac54d3
--- /dev/null
+++ b/keyboards/keebio/levinson/keymaps/numpad/readme.md
@@ -0,0 +1,4 @@
+# Numpad Layout
+[Layout Example](http://www.keyboard-layout-editor.com/##@@_c=%23ffd100&a:7%3B&=&_c=%23909596&f:5%3B&=&=&=%3B&@_c=%23c4c8c5&st=MX1A-L1xx&f:6%3B&=Esc&=%2F%2F&=*&=%3F%3B&@=7&=8&=9&=%E2%80%93%3B&@=4&_n:true%3B&=5&=6&=+%3B&@=1&=2&=3&_c=%23ffd100&h:2%3B&=%3B&@_c=%23c4c8c5%3B&=0&_a:5%3B&=%3C%0A,&=%3E%0A.)
+
+Uses a single half of the Levinson a vertical 4x6 numpad/macropad.
diff --git a/keyboards/keebio/levinson/keymaps/numpad/rules.mk b/keyboards/keebio/levinson/keymaps/numpad/rules.mk
new file mode 100644
index 0000000000..639c76834c
--- /dev/null
+++ b/keyboards/keebio/levinson/keymaps/numpad/rules.mk
@@ -0,0 +1,3 @@
+# Build Options
+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes       # Enable keyboard RGB underglow
diff --git a/users/twschum/config.h b/users/twschum/config.h
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/users/twschum/readme.md b/users/twschum/readme.md
new file mode 100644
index 0000000000..b354e4b79c
--- /dev/null
+++ b/users/twschum/readme.md
@@ -0,0 +1,14 @@
+Copyright 2019 Tim Schumacher <twschum@gmail.com> @twschum
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
diff --git a/users/twschum/rules.mk b/users/twschum/rules.mk
new file mode 100644
index 0000000000..9878e6f690
--- /dev/null
+++ b/users/twschum/rules.mk
@@ -0,0 +1,5 @@
+SRC += twschum.c
+SRC += xtonhasvim.c
+ifeq ($(strip $(FLASH_BOOTLOADER)), yes)
+    OPT_DEFS += -DFLASH_BOOTLOADER
+endif
diff --git a/users/twschum/twschum.c b/users/twschum/twschum.c
new file mode 100644
index 0000000000..2d34f95718
--- /dev/null
+++ b/users/twschum/twschum.c
@@ -0,0 +1,257 @@
+#include "twschum.h"
+
+#ifdef TWSCHUM_TAPPING_CTRL_PREFIX
+// state for the great state machine of custom actions!
+#define TIMEOUT_DELAY 200 // ms
+static uint16_t idle_timer;
+static bool timeout_is_active = false;
+
+static bool ctrl_shortcuts_enabled_g = false;
+//static bool B_down = 0; // TODO just use top bit from count
+//static int8_t B_count = 0;
+
+#define N_TAPPING_CTRL_KEYS 2
+static struct Tapping_ctrl_key_t special_keys_g[N_TAPPING_CTRL_KEYS] = {
+    {false, 0, KC_B}, {false, 0, KC_A}
+};
+
+static inline void start_idle_timer(void) {
+    idle_timer = timer_read();
+    timeout_is_active = true;
+}
+static inline void clear_state_after_idle_timeout(void) {
+    idle_timer = 0;
+    timeout_is_active = false;
+
+    // send timed out plain keys from tapping ctrl mod
+    for (int i = 0; i < N_TAPPING_CTRL_KEYS; ++i) {
+        struct Tapping_ctrl_key_t* key = special_keys_g + i;
+        repeat_send_keys(key->count, key->keycode);
+        key->count = 0;
+    }
+}
+
+inline void matrix_scan_user(void) {
+    if (timeout_is_active && timer_elapsed(idle_timer) > TIMEOUT_DELAY) {
+        clear_state_after_idle_timeout();
+    }
+}
+
+static inline bool tap_ctrl_event(struct Tapping_ctrl_key_t* key, keyrecord_t* record) {
+    if (!ctrl_shortcuts_enabled_g) {
+        // normal operation, just send the plain keycode
+        if (record->event.pressed) {
+            register_code(key->keycode);
+        }
+        else {
+            unregister_code(key->keycode);
+        }
+        return false;
+    }
+    key->down = record->event.pressed;
+    // increment count and reset timer when key pressed
+    // start the timeout when released
+    if (key->down) {
+        ++(key->count);
+        timeout_is_active = false;
+        idle_timer = 0;
+    }
+    else {
+        if (key->count) {
+            start_idle_timer();
+        }
+    }
+    return false;
+}
+
+static inline bool tap_ctrl_other_pressed(void) {
+    for (int i = 0; i < N_TAPPING_CTRL_KEYS; ++i) {
+        struct Tapping_ctrl_key_t* key = special_keys_g + i;
+        if (key->count) {
+            if (key->down) {
+                // another key has been pressed while the leader key is down,
+                // so send number of ctrl-KEY combos before the other key
+                repeat_send_keys(key->count, KC_LCTL, key->keycode);
+                key->count = 0;
+            }
+            else {
+                // another key pressed after leader key released,
+                // need to send the plain keycode plus potential mods
+                if (get_mods() & MOD_MASK_CTRL) {
+                    // make sure to send a shift if prssed
+                    repeat_send_keys(key->count, KC_RSHIFT, key->keycode);
+                }
+                else {
+                    repeat_send_keys(key->count, key->keycode);
+                }
+                key->count = 0;
+            }
+            return true; // will send the other keycode
+        }
+    }
+    return true; // safe default
+}
+#endif /* TWSCHUM_TAPPING_CTRL_PREFIX */
+
+
+/* Use RGB underglow to indicate layer
+ * https://docs.qmk.fm/reference/customizing-functionality
+ */
+// add to quantum/rgblight_list.h
+#ifdef RGBLIGHT_ENABLE
+static bool rgb_layers_enabled = true;
+static bool rgb_L0_enabled = false;
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+    if (!rgb_layers_enabled) {
+        return state;
+    }
+    switch (get_highest_layer(state)) {
+    case _Base:
+        if (rgb_L0_enabled) {
+            rgblight_sethsv_noeeprom(_Base_HSV_ON);
+        }
+        else {
+            rgblight_sethsv_noeeprom(_Base_HSV_OFF);
+        }
+        break;
+    case _Vim:
+        rgblight_sethsv_noeeprom(_Vim_HSV);
+        break;
+    case _Fn:
+        rgblight_sethsv_noeeprom(_Fn_HSV);
+        break;
+    case _Nav:
+        rgblight_sethsv_noeeprom(_Nav_HSV);
+        break;
+    case _Num:
+        rgblight_sethsv_noeeprom(_Num_HSV);
+        break;
+    case _Cfg:
+        rgblight_sethsv_noeeprom(_Cfg_HSV);
+        break;
+    case _None:
+        rgblight_sethsv_noeeprom(_None_HSV);
+        break;
+    }
+    return state;
+}
+#endif /* RGBLIGHT_ENABLE */
+
+/* process_record_vimlayer: handles the VIM_ keycodes from xtonhasvim's vim
+ * emulation layer
+ * add process_record_keymap to allow specific keymap to still add keys
+ * Makes the callstack look like:
+ * process_record_
+ *  _quantum
+ *    _kb
+ *      _user
+ *        _keymap
+ *        _vimlayer
+ */
+__attribute__ ((weak))
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+/* Return True to continue processing keycode, false to stop further processing
+ * process_record_keymap to be call by process_record_user in the vim addon */
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+  /* keymap gets first whack, then vimlayer */
+  if(!process_record_keymap(keycode, record)) return false;
+  if(!process_record_vimlayer(keycode, record)) return false;
+
+    switch (keycode) {
+        /* KC_MAKE is a keycode to be used with any keymap
+         * Outputs `make <keyboard>:<keymap>`
+         * Holding shift will add the appropriate flashing command (:dfu,
+         *   :teensy, :avrdude, :dfu-util) for a majority of keyboards.
+         * Holding control will add some commands that will speed up compiling
+         *   time by processing multiple files at once
+         * For the boards that lack a shift key, or that you want to always
+         *   attempt the flashing part, you can add FLASH_BOOTLOADER = yes to the
+         *   rules.mk of that keymap.
+         */
+        case KC_MAKE:  // Compiles the firmware, and adds the flash command based on keyboard bootloader
+            if (!record->event.pressed) {
+            uint8_t temp_mod = get_mods();
+            uint8_t temp_osm = get_oneshot_mods();
+            clear_mods(); clear_oneshot_mods();
+            SEND_STRING("make " QMK_KEYBOARD ":" QMK_KEYMAP);
+        #ifndef FLASH_BOOTLOADER
+            if ( (temp_mod | temp_osm) & MOD_MASK_SHIFT ) {
+                SEND_STRING(":flash");
+            }
+        #endif
+            if ( (temp_mod | temp_osm) & MOD_MASK_CTRL) {
+                SEND_STRING(" -j8 --output-sync");
+            }
+            SEND_STRING(SS_TAP(X_ENTER));
+            set_mods(temp_mod);
+        }
+        break;
+
+        #ifdef RGBLIGHT_ENABLE
+        case TG_LAYER_RGB:
+            if (record->event.pressed) {
+                rgb_layers_enabled = !rgb_layers_enabled;
+            }
+            return false;
+        case TG_L0_RGB:
+            if (record->event.pressed) {
+                rgb_L0_enabled = !rgb_L0_enabled;
+            }
+            return false;
+        #endif
+
+        case SALT_CMD:
+            if (!record->event.pressed) {
+                SEND_STRING(SALT_CMD_MACRO);
+            }
+            return false;
+        case LESS_PD:
+            if (!record->event.pressed) {
+                SEND_STRING(LESS_PD_MACRO);
+            }
+            return false;
+        case CODE_PASTE:
+            if (!record->event.pressed) {
+                SEND_STRING(CODE_PASTE_MACRO);
+            }
+            return false;
+
+        #ifdef TWSCHUM_TAPPING_CTRL_PREFIX
+        case EN_CTRL_SHORTCUTS:
+            if (record->event.pressed) {
+                ctrl_shortcuts_enabled_g = !ctrl_shortcuts_enabled_g;
+                start_idle_timer(); // need to clear out state in some cases
+            }
+            return false;
+        case CTRL_A:
+            return tap_ctrl_event(&special_keys_g[1], record);
+        case CTRL_B:
+            return tap_ctrl_event(&special_keys_g[0], record);
+        default:
+            if (record->event.pressed) {
+                return tap_ctrl_other_pressed();
+            }
+        #endif
+    }
+    return true;
+}
+
+#ifdef RGBLIGHT_ENABLE
+void matrix_init_user(void) {
+    // called once on board init
+    rgblight_enable();
+}
+#endif
+
+void suspend_power_down_user(void) {
+    // TODO shut off backlighting
+}
+
+void suspend_wakeup_init_user(void) {
+    // TODO turn on backlighting
+}
diff --git a/users/twschum/twschum.h b/users/twschum/twschum.h
new file mode 100644
index 0000000000..e8c9aeffcd
--- /dev/null
+++ b/users/twschum/twschum.h
@@ -0,0 +1,131 @@
+#pragma once
+#include <stdarg.h>
+#include "quantum.h"
+#include "xtonhasvim.h"
+
+/**************************
+ * QMK Features Used
+ **************************
+ * RGBLIGHT_ENABLE
+ *  - Adds layer indication via RGB underglow
+ *  - see the `layer_definitions` enum and following _*_HSV #defines
+ *
+ *
+ *
+ **************************
+ * Custom Feature Flags
+ **************************
+ *
+ * TWSCHUM_TAPPING_CTRL_PREFIX
+ * - Adds feature that makes sending nested sequences of C-a, C-b[, C-b, ...]
+ *   as simple as C-a b [b ...]
+ * - Not necessarily super useful outside specialized nested tmux sessions,
+ *   but it was a fun state-machine to build
+ *
+ * TWSCHUM_VIM_LAYER
+ * - Fork of xtonhasvim, adding vim-emulation
+ *
+ * TWSCHUM_IS_MAC
+ * - Flag for handling media keys and other settings between OSX and Win/Unix
+ *   without having to include bootmagic
+ *
+ **************************
+ * Features Wishlist
+ **************************
+ * use VIM_Q as macro recorder!
+ * Dynamic macros
+ * Leader functions
+ * Uniicode leader commands??? (symbolic unicode)
+ * Mac mode vs not: -probably bootmagic or use default with dynamic swap out here
+ *    KC_MFFD(KC_MEDIA_FAST_FORWARD) and KC_MRWD(KC_MEDIA_REWIND) instead of KC_MNXT and KC_MPRV
+ */
+
+/* Each layer gets a color, overwritable per keyboard */
+enum layers_definitions {
+    _Base,
+    _Vim,
+    _Fn,
+    _Nav,
+    _Num,
+    _Cfg,
+    _None,
+};
+#ifdef RGBLIGHT_ENABLE
+#define _Base_HSV_ON  HSV_WHITE
+#define _Base_HSV_OFF 0, 0, 0
+#define _Vim_HSV      HSV_ORANGE
+#define _Fn_HSV       HSV_GREEN
+#define _Nav_HSV      HSV_AZURE
+#define _Num_HSV      HSV_GOLD
+#define _Cfg_HSV      HSV_RED
+#define _None_HSV     HSV_WHITE
+#endif
+
+enum extra_keycodes {
+    TWSCHUM_START = VIM_SAFE_RANGE,
+    KC_MAKE, // types the make command for this keyboard
+#ifdef TWSCHUM_TAPPING_CTRL_PREFIX
+    CTRL_A,
+    CTRL_B,
+    EN_CTRL_SHORTCUTS,
+#endif
+#ifdef RGBLIGHT_ENABLE
+    TG_LAYER_RGB, // Toggle between standard RGB underglow, and RGB underglow to do layer indication
+    TG_L0_RGB, // Toggle color on or off of layer0
+#endif
+    SALT_CMD, // macro
+    LESS_PD, // macro
+    CODE_PASTE, // macro
+    KEYMAP_SAFE_RANGE, // range to start for the keymap
+};
+#define SALT_CMD_MACRO "sudo salt \\* cmd.run ''"SS_TAP(X_LEFT)
+#define LESS_PD_MACRO "sudo less /pipedream/cache/"
+// TODO mac vs linux
+#define CODE_PASTE_MACRO SS_LSFT("\n")"```"SS_LSFT("\n")SS_LALT("v")SS_LSFT("\n")"```"
+
+
+/* PP_NARG macro returns the number of arguments passed to it.
+ * https://groups.google.com/forum/#!topic/comp.std.c/d-6Mj5Lko_s
+ */
+#define PP_NARG(...) PP_NARG_(__VA_ARGS__,PP_RSEQ_N())
+#define PP_NARG_(...) PP_ARG_N(__VA_ARGS__)
+#define PP_MAX_ARGS 64
+#define PP_ARG_N( \
+          _1, _2, _3, _4, _5, _6, _7, _8, _9,_10, \
+         _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \
+         _21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \
+         _31,_32,_33,_34,_35,_36,_37,_38,_39,_40, \
+         _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \
+         _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \
+         _61,_62,_63,N,...) N
+#define PP_RSEQ_N() 63,62,61,60,        \
+         59,58,57,56,55,54,53,52,51,50, \
+         49,48,47,46,45,44,43,42,41,40, \
+         39,38,37,36,35,34,33,32,31,30, \
+         29,28,27,26,25,24,23,22,21,20, \
+         19,18,17,16,15,14,13,12,11,10, \
+         9,8,7,6,5,4,3,2,1,0
+
+#define send_keys(...) send_n_keys(PP_NARG(__VA_ARGS__), __VA_ARGS__)
+static inline void send_n_keys(int n, ...) {
+    uint8_t i = 0;
+    uint16_t keycodes[PP_MAX_ARGS];
+    va_list keys;
+    va_start(keys, n);
+    for (; i < n; ++i) {
+        keycodes[i] = (uint16_t)va_arg(keys, int); // cast suppresses warning
+        register_code(keycodes[i]);
+    }
+    for (; n > 0; --n) {
+        unregister_code(keycodes[n-1]);
+    }
+    va_end(keys);
+}
+#define repeat_send_keys(n, ...) {for (int i=0; i < n; ++i) {send_keys(__VA_ARGS__);}}
+
+/* State functions for nested c-a & c-b leader keystrokes */
+struct Tapping_ctrl_key_t {
+    bool down;
+    int8_t count;
+    const uint16_t keycode;
+};
diff --git a/users/twschum/xtonhasvim.c b/users/twschum/xtonhasvim.c
new file mode 100644
index 0000000000..a1adf39f04
--- /dev/null
+++ b/users/twschum/xtonhasvim.c
@@ -0,0 +1,593 @@
+ /* Copyright 2015-2017 Christon DeWan *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "xtonhasvim.h"
+
+
+uint16_t vstate = VIM_START;
+static bool yank_was_lines = false;
+static bool SHIFTED = false;
+static uint32_t mod_override_layer_state = 0;
+static uint16_t mod_override_triggering_key = 0;
+
+static void edit(void) { vstate = VIM_START; layer_clear(); }
+#define EDIT edit()
+
+
+static void simple_movement(uint16_t keycode) {
+  switch(keycode) {
+    case VIM_B:
+      register_code(KC_LALT);
+        tap_code16(LSFT(KC_LEFT)); // select to start of this word
+      unregister_code(KC_LALT);
+      break;
+    case VIM_E:
+      register_code(KC_LALT);
+        tap_code16(LSFT(KC_RIGHT)); // select to end of this word
+      unregister_code(KC_LALT);
+      break;
+    case VIM_H:
+      tap_code16(LSFT(KC_LEFT));
+      break;
+    case VIM_J:
+      tap_code16(LGUI(KC_LEFT));
+      tap_code16(LSFT(KC_DOWN));
+      tap_code16(LSFT(KC_DOWN));
+      break;
+    case VIM_K:
+      tap_code16(LGUI(KC_LEFT));
+      tap_code(KC_DOWN);
+      tap_code16(LSFT(KC_UP));
+      tap_code16(LSFT(KC_UP));
+      break;
+    case VIM_L:
+      tap_code16(LSFT(KC_RIGHT));
+      break;
+    case VIM_W:
+      register_code(KC_LALT);
+      tap_code16(LSFT(KC_RIGHT)); // select to end of this word
+      tap_code16(LSFT(KC_RIGHT)); // select to end of next word
+      tap_code16(LSFT(KC_LEFT));  // select to start of next word
+      unregister_code(KC_LALT);
+      break;
+  }
+}
+
+static void comma_period(uint16_t keycode) {
+  switch (keycode) {
+  case VIM_COMMA:
+    if (SHIFTED) {
+      // indent
+      tap_code16(LGUI(KC_LBRACKET));
+    } else {
+      // toggle comment
+      tap_code16(LGUI(KC_SLASH));
+    }
+    break;
+  case VIM_PERIOD:
+    if (SHIFTED) {
+      // outdent
+      tap_code16(LGUI(KC_RBRACKET));
+    }
+    break;
+  }
+}
+
+
+bool process_record_vimlayer(uint16_t keycode, keyrecord_t *record) {
+
+  /****** mod passthru *****/
+  if(record->event.pressed && layer_state_is(vim_cmd_layer()) && (IS_MOD(keycode) || keycode == LSFT(KC_LALT))) {
+    mod_override_layer_state = layer_state;
+    mod_override_triggering_key = keycode;
+    // TODO: change this to track key location instead
+    layer_clear();
+    return true; // let the event fall through...
+  }
+  if(mod_override_layer_state && !record->event.pressed && keycode == mod_override_triggering_key) {
+    layer_state_set(mod_override_layer_state);
+    mod_override_layer_state = 0;
+    mod_override_triggering_key = 0;
+    return true;
+  }
+
+  if (VIM_START <= keycode && keycode <= VIM_ESC) {
+    if(keycode == VIM_SHIFT) {
+      SHIFTED = record->event.pressed;
+      return false;
+    }
+
+    if (record->event.pressed) {
+      if(keycode == VIM_START) {
+        // entry from anywhere
+        layer_on(vim_cmd_layer());
+        vstate = VIM_START;
+
+        // reset state
+        yank_was_lines = false;
+        SHIFTED = false;
+        mod_override_layer_state = 0;
+        mod_override_triggering_key = 0;
+
+        return false;
+      }
+      switch(vstate) {
+        case VIM_START:
+          switch(keycode){
+            /*****************************
+             * ground state
+             *****************************/
+            case VIM_A:
+              if(SHIFTED) {
+                // tap_code16(LGUI(KC_RIGHT));
+                tap_code16(LCTL(KC_E));
+              } else {
+                tap_code(KC_RIGHT);
+              }
+              EDIT;
+              break;
+            case VIM_B:
+              register_code(KC_LALT);
+              register_code(KC_LEFT);
+              break;
+            case VIM_C:
+              if(SHIFTED) {
+                register_code(KC_LSHIFT);
+                  tap_code16(LGUI(KC_RIGHT));
+                unregister_code(KC_LSHIFT);
+                tap_code16(LGUI(KC_X));
+                yank_was_lines = false;
+                EDIT;
+              } else {
+                vstate = VIM_C;
+              }
+              break;
+            case VIM_D:
+              if(SHIFTED) {
+                tap_code16(LCTL(KC_K));
+              } else {
+                vstate = VIM_D;
+              }
+              break;
+            case VIM_E:
+              register_code(KC_LALT);
+              register_code(KC_RIGHT);
+              break;
+            case VIM_G:
+              if(SHIFTED) {
+                tap_code(KC_END);
+              } else {
+                vstate = VIM_G;
+              }
+              break;
+            case VIM_H:
+              register_code(KC_LEFT);
+              break;
+            case VIM_I:
+              if(SHIFTED){
+                tap_code16(LCTL(KC_A));
+              }
+              EDIT;
+              break;
+            case VIM_J:
+              if(SHIFTED) {
+                tap_code16(LGUI(KC_RIGHT));
+                tap_code(KC_DEL);
+              } else {
+                register_code(KC_DOWN);
+              }
+              break;
+            case VIM_K:
+              register_code(KC_UP);
+              break;
+            case VIM_L:
+              register_code(KC_RIGHT);
+              break;
+            case VIM_O:
+              if(SHIFTED) {
+                tap_code16(LGUI(KC_LEFT));
+                tap_code(KC_ENTER);
+                tap_code(KC_UP);
+                EDIT;
+              } else {
+                tap_code16(LGUI(KC_RIGHT));
+                tap_code(KC_ENTER);
+                EDIT;
+              }
+              break;
+            case VIM_P:
+              if(SHIFTED) {
+                tap_code16(LGUI(KC_LEFT));
+                tap_code16(LGUI(KC_V));
+              } else {
+                if(yank_was_lines) {
+                  tap_code16(LGUI(KC_RIGHT));
+                  tap_code(KC_RIGHT);
+                  tap_code16(LGUI(KC_V));
+                } else {
+                  tap_code16(LGUI(KC_V));
+                }
+              }
+              break;
+            case VIM_S:
+              // s for substitute?
+              if(SHIFTED) {
+                tap_code16(LGUI(KC_LEFT));
+                register_code(KC_LSHIFT);
+                  tap_code16(LGUI(KC_RIGHT));
+                unregister_code(KC_LSHIFT);
+                tap_code16(LGUI(KC_X));
+                yank_was_lines = false;
+                EDIT;
+              } else {
+                tap_code16(LSFT(KC_RIGHT));
+                tap_code16(LGUI(KC_X));
+                yank_was_lines = false;
+                EDIT;
+              }
+              break;
+            case VIM_U:
+              if(SHIFTED) {
+                register_code(KC_LSFT);
+                  tap_code16(LGUI(KC_Z));
+                unregister_code(KC_LSHIFT);
+              } else {
+                tap_code16(LGUI(KC_Z));
+              }
+              break;
+            case VIM_V:
+              if(SHIFTED) {
+                tap_code16(LGUI(KC_LEFT));
+                tap_code16(LSFT(KC_DOWN));
+                vstate = VIM_VS;
+              } else {
+                vstate = VIM_V;
+              }
+              break;
+            case VIM_W:
+              register_code(KC_LALT);
+                tap_code(KC_RIGHT);
+                tap_code(KC_RIGHT);
+                tap_code(KC_LEFT);
+              unregister_code(KC_LALT);
+              break;
+            case VIM_X:
+              // tap_code16(LSFT(KC_RIGHT));
+              // tap_code16(LGUI(KC_X));
+              register_code(KC_DEL);
+              break;
+            case VIM_Y:
+              if(SHIFTED) {
+                tap_code16(LGUI(KC_LEFT));
+                tap_code16(LSFT(KC_DOWN));
+                tap_code16(LGUI(KC_C));
+                tap_code(KC_RIGHT);
+                yank_was_lines = true;
+              } else {
+                vstate = VIM_Y;
+              }
+              break;
+            case VIM_COMMA:
+            case VIM_PERIOD:
+              comma_period(keycode);
+              break;
+          }
+          break;
+        case VIM_C:
+          /*****************************
+           * c-  ...for change. I never use this...
+           *****************************/
+          switch(keycode) {
+          case VIM_B:
+          case VIM_E:
+          case VIM_H:
+          case VIM_J:
+          case VIM_K:
+          case VIM_L:
+          case VIM_W:
+            simple_movement(keycode);
+            tap_code16(LGUI(KC_X));
+            yank_was_lines = false;
+            EDIT;
+            break;
+
+          case VIM_C:
+            tap_code16(LGUI(KC_LEFT));
+            register_code(KC_LSHIFT);
+              tap_code16(LGUI(KC_RIGHT));
+            unregister_code(KC_LSHIFT);
+            tap_code16(LGUI(KC_X));
+            yank_was_lines = false;
+            EDIT;
+            break;
+          case VIM_I:
+            vstate = VIM_CI;
+            break;
+          default:
+            vstate = VIM_START;
+            break;
+          }
+          break;
+        case VIM_CI:
+          /*****************************
+           * ci-  ...change inner word
+           *****************************/
+          switch(keycode) {
+            case VIM_W:
+              tap_code16(LALT(KC_LEFT));
+              register_code(KC_LSHIFT);
+                tap_code16(LALT(KC_RIGHT));
+              unregister_code(KC_LSHIFT);
+              tap_code16(LGUI(KC_X));
+              yank_was_lines = false;
+              EDIT;
+            default:
+              vstate = VIM_START;
+              break;
+          }
+          break;
+        case VIM_D:
+          /*****************************
+           * d-  ...delete stuff
+           *****************************/
+          switch(keycode) {
+          case VIM_B:
+          case VIM_E:
+          case VIM_H:
+          case VIM_J:
+          case VIM_K:
+          case VIM_L:
+          case VIM_W:
+            simple_movement(keycode);
+            tap_code16(LGUI(KC_X));
+            yank_was_lines = false;
+            vstate = VIM_START;
+            break;
+          case VIM_D:
+            tap_code16(LGUI(KC_LEFT));
+            tap_code16(LSFT(KC_DOWN));
+            tap_code16(LGUI(KC_X));
+            yank_was_lines = true;
+            vstate = VIM_START;
+            break;
+          case VIM_I:
+            vstate = VIM_DI;
+            break;
+          default:
+            vstate = VIM_START;
+            break;
+          }
+          break;
+        case VIM_DI:
+          /*****************************
+           * ci-  ...delete a word... FROM THE INSIDE!
+           *****************************/
+          switch(keycode) {
+            case VIM_W:
+              tap_code16(LALT(KC_LEFT));
+              register_code(KC_LSHIFT);
+                tap_code16(LALT(KC_RIGHT));
+              unregister_code(KC_LSHIFT);
+              tap_code16(LGUI(KC_X));
+              yank_was_lines = false;
+              vstate = VIM_START;
+            default:
+              vstate = VIM_START;
+              break;
+          }
+          break;
+        case VIM_V:
+          /*****************************
+           * visual!
+           *****************************/
+          switch(keycode) {
+            case VIM_D:
+            case VIM_X:
+              tap_code16(LGUI(KC_X));
+              yank_was_lines = false;
+              vstate = VIM_START;
+              break;
+            case VIM_B:
+              register_code(KC_LALT);
+              register_code(KC_LSHIFT);
+              register_code(KC_LEFT);
+              // leave open for key repeat
+              break;
+            case VIM_E:
+              register_code(KC_LALT);
+              register_code(KC_LSHIFT);
+              register_code(KC_RIGHT);
+              // leave open for key repeat
+              break;
+            case VIM_H:
+              register_code(KC_LSHIFT);
+              register_code(KC_LEFT);
+              break;
+            case VIM_I:
+              vstate = VIM_VI;
+              break;
+            case VIM_J:
+              register_code(KC_LSHIFT);
+              register_code(KC_DOWN);
+              break;
+            case VIM_K:
+              register_code(KC_LSHIFT);
+              register_code(KC_UP);
+              break;
+            case VIM_L:
+              register_code(KC_LSHIFT);
+              register_code(KC_RIGHT);
+              break;
+            case VIM_W:
+              register_code(KC_LALT);
+              tap_code16(LSFT(KC_RIGHT)); // select to end of this word
+              tap_code16(LSFT(KC_RIGHT)); // select to end of next word
+              tap_code16(LSFT(KC_LEFT));  // select to start of next word
+              unregister_code(KC_LALT);
+              break;
+            case VIM_P:
+              tap_code16(LGUI(KC_V));
+              vstate = VIM_START;
+              break;
+            case VIM_Y:
+              tap_code16(LGUI(KC_C));
+              tap_code(KC_RIGHT);
+              yank_was_lines = false;
+              vstate = VIM_START;
+              break;
+            case VIM_V:
+            case VIM_ESC:
+              tap_code(KC_RIGHT);
+              vstate = VIM_START;
+              break;
+            case VIM_COMMA:
+            case VIM_PERIOD:
+              comma_period(keycode);
+              break;
+            default:
+              // do nothing
+              break;
+          }
+          break;
+        case VIM_VI:
+          /*****************************
+           * vi-  ...select a word... FROM THE INSIDE!
+           *****************************/
+          switch(keycode) {
+            case VIM_W:
+              tap_code16(LALT(KC_LEFT));
+              register_code(KC_LSHIFT);
+                tap_code16(LALT(KC_RIGHT));
+              unregister_code(KC_LSHIFT);
+              vstate = VIM_V;
+            default:
+              // ignore
+              vstate = VIM_V;
+              break;
+          }
+          break;
+        case VIM_VS:
+          /*****************************
+           * visual line
+           *****************************/
+          switch(keycode) {
+            case VIM_D:
+            case VIM_X:
+              tap_code16(LGUI(KC_X));
+              yank_was_lines = true;
+              vstate = VIM_START;
+              break;
+            case VIM_J:
+              register_code(KC_LSHIFT);
+              register_code(KC_DOWN);
+              break;
+            case VIM_K:
+              register_code(KC_LSHIFT);
+              register_code(KC_UP);
+              break;
+            case VIM_Y:
+              tap_code16(LGUI(KC_C));
+              yank_was_lines = true;
+              tap_code(KC_RIGHT);
+              vstate = VIM_START;
+              break;
+            case VIM_P:
+              tap_code16(LGUI(KC_V));
+              vstate = VIM_START;
+              break;
+            case VIM_V:
+            case VIM_ESC:
+              tap_code(KC_RIGHT);
+              vstate = VIM_START;
+              break;
+            case VIM_COMMA:
+            case VIM_PERIOD:
+              comma_period(keycode);
+              break;
+            default:
+              // do nothing
+              break;
+          }
+          break;
+        case VIM_G:
+          /*****************************
+           * gg, and a grab-bag of other macros i find useful
+           *****************************/
+          switch(keycode) {
+            case VIM_G:
+              tap_code(KC_HOME);
+              break;
+            // codes b
+            case VIM_H:
+              tap_code16(LCTL(KC_A));
+              break;
+            case VIM_J:
+              register_code(KC_PGDN);
+              break;
+            case VIM_K:
+              register_code(KC_PGUP);
+              break;
+            case VIM_L:
+              tap_code16(LCTL(KC_E));
+              break;
+            default:
+              // do nothing
+              break;
+          }
+          vstate = VIM_START;
+          break;
+        case VIM_Y:
+          /*****************************
+           * yoink!
+           *****************************/
+          switch(keycode) {
+          case VIM_B:
+          case VIM_E:
+          case VIM_H:
+          case VIM_J:
+          case VIM_K:
+          case VIM_L:
+          case VIM_W:
+            simple_movement(keycode);
+            tap_code16(LGUI(KC_C));
+            tap_code(KC_RIGHT);
+            yank_was_lines = false;
+            break;
+          case VIM_Y:
+            tap_code16(LGUI(KC_LEFT));
+            tap_code16(LSFT(KC_DOWN));
+            tap_code16(LGUI(KC_C));
+            tap_code(KC_RIGHT);
+            yank_was_lines = true;
+            break;
+          default:
+            // NOTHING
+            break;
+          }
+          vstate = VIM_START;
+          break;
+        }
+    } else {
+      /************************
+       * key unregister_code events
+       ************************/
+      clear_keyboard();
+    }
+    return false;
+  } else {
+    return true;
+  }
+}
+
diff --git a/users/twschum/xtonhasvim.h b/users/twschum/xtonhasvim.h
new file mode 100644
index 0000000000..fd9ebd4f03
--- /dev/null
+++ b/users/twschum/xtonhasvim.h
@@ -0,0 +1,62 @@
+ /* Copyright 2015-2017 Christon DeWan
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef USERSPACE
+#define USERSPACE
+
+#include QMK_KEYBOARD_H
+
+enum xtonhasvim_keycodes {
+  VIM_START = SAFE_RANGE,  // bookend for vim states
+  VIM_A,
+  VIM_B,
+  VIM_C,
+  VIM_CI,
+  VIM_D,
+  VIM_DI,
+  VIM_E,
+  VIM_H,
+  VIM_G,
+  VIM_I,
+  VIM_J,
+  VIM_K,
+  VIM_L,
+  VIM_O,
+  VIM_P,
+  VIM_S,
+  VIM_U,
+  VIM_V,
+  VIM_VS, // visual-line
+  VIM_VI,
+  VIM_W,
+  VIM_X,
+  VIM_Y,
+  VIM_PERIOD, // to support indent/outdent
+  VIM_COMMA,  // and toggle comments
+  VIM_SHIFT, // avoid side-effect of supporting real shift.
+  VIM_ESC, // bookend
+  VIM_SAFE_RANGE // start other keycodes here.
+};
+
+bool process_record_vimlayer(uint16_t keycode, keyrecord_t *record);
+
+// NOTE: Define this in keymap.c to return vim layer
+extern uint8_t vim_cmd_layer(void);
+
+extern uint16_t vstate;
+
+
+#endif