]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - keyboards/georgi/keymaps/default/keymap.c
[Keymap] Georgi flippydippy layout (#6005)
[qmk_firmware.git] / keyboards / georgi / keymaps / default / keymap.c
index c3d69eb8aa028d13a63d98e31399de83b8262017..93c551af2748ed26985fcf4170818ab981c07189 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  * Good on you for modifying your layout, this is the most nonQMK layout you will come across
  * There are three modes, Steno (the default), QWERTY (Toggleable) and a Momentary symbol layer
  *
 #include QMK_KEYBOARD_H
 #include "sten.h"
 #include "keymap_steno.h"
-#define IGNORE_MOD_TAP_INTERRUPT
-
-int getKeymapCount(void);
 
 // Proper Layers
 #define FUNCT   (LSD | LK | LP | LH)
 #define MEDIA   (LSD | LK | LW | LR)
 #define MOVE    (ST1 | ST2)
 
+// QMK Layers
+#define STENO_LAYER   0
+#define GAMING        1
+#define GAMING_2      2
+
 /* Keyboard Layout
  * ,---------------------------------.    ,------------------------------.
  * | FN  | LSU | LFT | LP | LH | ST1 |    | ST3 | RF | RP | RL | RT | RD |
  * |-----+-----+-----+----+----|-----|    |-----|----+----+----+----+----|
- * | PWR | LSD | LK  | LW | LR | ST2 |    | ST4 | RR | RG | RB | RS | RZ |
+ * | PWR | LSD | LK  | LW | LR | ST2 |    | ST4 | RR | BB | RG | RS | RZ |
  * `---------------------------------'    `------------------------------'
  *                   ,---------------,    .---------------.
- *                   | NUM | LA | LO |    | RE | RU | NUM |
+ *                   | LNO | LA | LO |    | RE | RU | RNO |
  *                   `---------------'    `---------------'
  */
 
-// YOU MUST ORDER THIS!
-// P   Will return from processing on the first match it finds. Therefore
-// PJ  Will run the requested action, remove the matched chord and continue 
+// Note: You can only use basic keycodes here!
+// P() is just a wrapper to make your life easier.
+// PC() applies the mapping to all of the StenoLayers.
+//   To overload, declare it with P() first.
+//   Be sure to enable in rules.mk and see colemak-dh for usage 
 //
-// First any chords that would conflict with PJs need to be checked, then PJs, lastly Ps.
-// For all chords should be ordered by length in their section!
+// FN is unavailable. That is reserved for system use.
+// Chords containing PWR are always available, even in steno mode.
 //
 // http://docs.gboards.ca
-bool processQwerty(void) {
-       // Place P's that would be trashed by PJ's here
-       P( RT  | RS  | RD  | RZ | NUM,          SEND_STRING(VERSION); SEND_STRING(__DATE__));
-       P( NUM | LA  | LO  | RE | RU,           SEND(KC_MPLY));
-       P( ST1 | ST2 | ST3 | ST4,                       SEND(KC_BSPC));
-
-       // Thumb Chords
-       P(  LA  | LO  | RE  | RU,                       SEND(KC_CAPS));
-       P(  LA  | RU,                                           SEND(KC_ESC));
-       PJ( LO  | RE,                                           SEND(KC_LCTL));
-       PJ( NUM | LA | RU,                                      SEND(KC_LCTL); SEND(KC_LSFT));
-       PJ( NUM | LA | RE,                                      SEND(KC_LCTL); SEND(KC_LSFT); SEND(KC_LALT));
-       
-       // Mods 
-       PJ( RT | RD | RS | RZ,                          SEND(KC_LGUI));
-       PJ( RT | RD,                                            SEND(KC_LCTL));
-       PJ( RS | RZ,                                            SEND(KC_LALT));
-       PJ( LA | NUM,                                           SEND(KC_LCTL));
-       PJ( LA | LO,                                            SEND(KC_LALT));
-       PJ( LO,                                                         SEND(KC_LSFT));
-
-       // Function Layer 
-       P( FUNCT | RF | RR,                                     SEND(KC_F5));
-       P( FUNCT | RP | RB,                                     SEND(KC_F6));
-       P( FUNCT | RL | RG,                                     SEND(KC_F7));
-       P( FUNCT | RT | RS,                                     SEND(KC_F8));
-       P( FUNCT | RF,                                          SEND(KC_F1));
-       P( FUNCT | RP,                                          SEND(KC_F2));
-       P( FUNCT | RL,                                          SEND(KC_F3));
-       P( FUNCT | RT,                                          SEND(KC_F4));
-       P( FUNCT | RR,                                          SEND(KC_F9));
-       P( FUNCT | RG,                                          SEND(KC_F10));
-       P( FUNCT | RB,                                          SEND(KC_F11));
-       P( FUNCT | RS,                                          SEND(KC_F12));
-
-       // Movement Layer
-       P( MOVE | RF,                                           SEND(KC_LEFT));
-       P( MOVE | RP,                                           SEND(KC_DOWN));
-       P( MOVE | RL,                                           SEND(KC_UP));
-       P( MOVE | RT,                                           SEND(KC_RIGHT));
-       P( MOVE | ST3,                                          SEND(KC_PGUP));
-       P( MOVE | ST4,                                          SEND(KC_PGDN));
-
-       // Media Layer
-       P( MEDIA | RF,                                          SEND(KC_MPRV));
-       P( MEDIA | RP,                                          SEND(KC_MPLY));
-       P( MEDIA | RL,                                          SEND(KC_MPLY));
-       P( MEDIA | RT,                                          SEND(KC_MNXT));
-       P( MEDIA | RD,                                          SEND(KC_VOLU));
-       P( MEDIA | RZ,                                          SEND(KC_VOLD));
-       P( MEDIA | RS,                                          SEND(KC_MUTE));
-
-       // Mouse Keys
-       P( LP | LH,                                                     clickMouse(KC_MS_BTN1));
-       P( LW | LR,                                                     clickMouse(KC_MS_BTN2));
-       
-       // Number Row
-       P( NUM | LSU,                                           SEND(KC_1));
-       P( NUM | LFT,                                           SEND(KC_2));
-       P( NUM | LP,                                            SEND(KC_3));
-       P( NUM | LH,                                            SEND(KC_4));
-       P( NUM | ST1,                                           SEND(KC_5));
-       P( NUM | ST3,                                           SEND(KC_6));
-       P( NUM | RF,                                            SEND(KC_7));
-       P( NUM | RP,                                            SEND(KC_8));
-       P( NUM | RL,                                            SEND(KC_9));
-       P( NUM | RT,                                            SEND(KC_0));
-       P( NUM | LA,                                            SEND(KC_5));
-       P( NUM | RT,                                            SEND(KC_0));
-       
-       // Specials
-       P( LA | NUM,                                            SEND(KC_ESC));
-       P( RU | NUM,                                            SEND(KC_TAB));
-       P( RE | RU,                                                     SEND(KC_BSPC));
-       P( RD | RZ,                                                     SEND(KC_ENT));
-       P( RE,                                                          SEND(KC_ENT));
-       P( RD,                                                          SEND(KC_BSPC)); 
-       P( NUM,                                                         SEND(KC_BSPC));
-       P( LA,                                                          SEND(KC_SPC));
-       P( RU,                                                          SEND(KC_SPC));
-       P( RZ,                                                          SEND(KC_ESC));
-
-       // Letters
-       P( LSU | LSD,                                           SEND(KC_A));
-       P( LFT | LK,                                            SEND(KC_S));
-       P( LP  | LW,                                            SEND(KC_D));
-       P( LH  | LR,                                            SEND(KC_F));
-       P( ST1 | ST2,                                           SEND(KC_G));
-       P( ST3 | ST4,                                           SEND(KC_H));
-       P( RF  | RR,                                            SEND(KC_J));
-       P( RT  | RS,                                            SEND(KC_SCLN))
-       P( RG  | RL,                                            SEND(KC_L));
-       P( RP  | RB,                                            SEND(KC_K));
-       P( LSU,                                                         SEND(KC_Q));
-       P( LSD,                                                         SEND(KC_Z));
-       P( LFT,                                                         SEND(KC_W));
-       P( LK,                                                          SEND(KC_X));
-       P( LP,                                                          SEND(KC_E));
-       P( LW,                                                          SEND(KC_C));
-       P( LH,                                                          SEND(KC_R));
-       P( LR,                                                          SEND(KC_V));
-       P( ST1,                                                         SEND(KC_T));
-       P( ST2,                                                         SEND(KC_B));
-       P( ST3,                                                         SEND(KC_Y));
-       P( ST4,                                                         SEND(KC_N));
-       P( RF,                                                          SEND(KC_U));
-       P( RR,                                                          SEND(KC_M));
-       P( RP,                                                          SEND(KC_I));
-       P( RB,                                                          SEND(KC_COMM));
-       P( RL,                                                          SEND(KC_O));
-       P( RG,                                                          SEND(KC_DOT));
-       P( RT,                                                          SEND(KC_P));
-       P( RS,                                                          SEND(KC_SLSH));
-
-       // Symbols and Numbers
-       P( PWR | RE | RU,                                       SEND(KC_ENT));
-       P( PWR | LA | LO,                                       SEND(KC_SPC));
-       P( PWR | LP | LW,                                       SEND(KC_LSFT); SEND(KC_9));                     // (
-       P( PWR | LH | LR,                                       SEND(KC_LSFT); SEND(KC_0));                     // )
-       P( PWR | ST1 | ST2,                                     SEND(KC_GRV));                                          // `
-       P( PWR | RD | RZ,                                       SEND(KC_ESC));                                                  
-       P( PWR | LSU | LSD,                                     SEND(KC_LSFT); SEND(KC_3));                     // #
-       P( PWR | LFT | LK,                                      SEND(KC_LSFT); SEND(KC_4));                     // $
-       P( PWR | LSU,                                           SEND(KC_LSFT); SEND(KC_1));                     // !
-       P( PWR | LSD,                                           SEND(KC_LSFT); SEND(KC_5));                     // %
-       P( PWR | LFT,                                           SEND(KC_LSFT); SEND(KC_2));                     // @
-       P( PWR | LK,                                            SEND(KC_LSFT); SEND(KC_6));                     // ^
-       P( PWR | LP,                                            SEND(KC_LSFT); SEND(KC_LBRC));          // {
-       P( PWR | LW,                                            SEND(KC_LBRC));
-       P( PWR | LH,                                            SEND(KC_LSFT); SEND(KC_RBRC));          // }
-       P( PWR | LR,                                            SEND(KC_RBRC));
-       P( PWR | ST1,                                           SEND(KC_LSFT); SEND(KC_BSLS));          // |
-       P( PWR | ST2,                                           SEND(KC_LSFT); SEND(KC_GRV));           // ~
-       P( PWR | ST3,                                           SEND(KC_QUOT));
-       P( PWR | ST4,                                           SEND(KC_LSFT); SEND(KC_QUOT));          // "
-       P( PWR | RF,                                            SEND(KC_KP_PLUS));
-       P( PWR | RR,                                            SEND(KC_LSFT); SEND(KC_7));                     // &
-       P( PWR | RP,                                            SEND(KC_MINS));
-       P( PWR | RB,                                            SEND(KC_EQL));
-       P( PWR | RL,                                            SEND(KC_SLSH));
-       P( PWR | RG,                                            SEND(KC_COMM));
-       P( PWR | RT,                                            SEND(KC_PAST));
-       P( PWR | RS,                                            SEND(KC_DOT));
-       P( PWR | RD,                                            SEND(KC_TAB));
-       P( PWR | LA,                                            SEND(KC_SCLN));
-       P( PWR | LO,                                            SEND(KC_SLSH));
-       P( PWR | RE,                                            SEND(KC_SCLN));
-       P( PWR | RU,                                            SEND(KC_SLSH));
-
-
-       // If we make here, send as a steno chord
-       // If plover is running we can hook that host side
-       return false;
+uint32_t processQwerty(bool lookup) {
+    // Specials
+    P( RT  | RS  | RD  | RZ | LNO,        SEND_STRING(VERSION); SEND_STRING(__DATE__));
+    P( LNO | RNO | LA  | LO | RE | RU,    SEND(KC_MPLY));
+    P( LFT | LK  | LP  | LW,              REPEAT());
+    P( ST1 | ST2 | LW  | ST4,             SEND(KC_BSPC));
+
+    // Mouse Keys
+    P( LO  | LSD | LK,    CLICK_MOUSE(KC_MS_BTN2));
+    P( LO  | LR  | LW,    CLICK_MOUSE(KC_MS_BTN1));
+
+    // Thumb Chords
+    P( LA  | LO  | RE  | RU,    SEND(KC_CAPS));
+    P( LA  | RU,                SEND(KC_ESC));
+    P( LO  | RE,                SEND(KC_LCTL));
+    P( LNO | RNO | LA | RU,     SEND(KC_LCTL); SEND(KC_LSFT));
+    P( LNO | LA  | RE,          SEND(KC_LCTL); SEND(KC_LSFT); SEND(KC_LALT));
+
+    // Mods
+    P( RT | RD   | RS | RZ,    SEND(KC_LGUI));
+    P( RT | RD,                SEND(KC_LCTL));
+    P( RS | RZ,                SEND(KC_LALT));
+    P( LA | LNO,               SEND(KC_LCTL));
+    P( LA | LO,                SEND(KC_LALT));
+    P( LO,                     SEND(KC_LSFT));
+
+    // Function Layer
+    P( FUNCT | RF | RR,    SEND(KC_F5));
+    P( FUNCT | RP | RB,    SEND(KC_F6));
+    P( FUNCT | RL | RG,    SEND(KC_F7));
+    P( FUNCT | RT | RS,    SEND(KC_F8));
+    P( FUNCT | RF,         SEND(KC_F1));
+    P( FUNCT | RP,         SEND(KC_F2));
+    P( FUNCT | RL,         SEND(KC_F3));
+    P( FUNCT | RT,         SEND(KC_F4));
+    P( FUNCT | RR,         SEND(KC_F9));
+    P( FUNCT | RG,         SEND(KC_F10));
+    P( FUNCT | RB,         SEND(KC_F11));
+    P( FUNCT | RS,         SEND(KC_F12));
+
+    // Movement Layer
+    P( MOVE | RF,     SEND(KC_LEFT));
+    P( MOVE | RP,     SEND(KC_DOWN));
+    P( MOVE | RL,     SEND(KC_UP));
+    P( MOVE | RT,     SEND(KC_RIGHT));
+    P( MOVE | ST3,    SEND(KC_PGUP));
+    P( MOVE | ST4,    SEND(KC_PGDN));
+
+    // Media Layer
+    P( MEDIA | RF,    SEND(KC_MPRV));
+    P( MEDIA | RP,    SEND(KC_MPLY));
+    P( MEDIA | RL,    SEND(KC_MPLY));
+    P( MEDIA | RT,    SEND(KC_MNXT));
+    P( MEDIA | RD,    SEND(KC_VOLU));
+    P( MEDIA | RZ,    SEND(KC_VOLD));
+    P( MEDIA | RS,    SEND(KC_MUTE));
+
+    // Number Row, Left
+    P( LNO | LSU,    SEND(KC_1));
+    P( LNO | LFT,    SEND(KC_2));
+    P( LNO | LP,     SEND(KC_3));
+    P( LNO | LH,     SEND(KC_4));
+    P( LNO | ST1,    SEND(KC_5));
+    P( LNO | ST3,    SEND(KC_6));
+    P( LNO | RF,     SEND(KC_7));
+    P( LNO | RP,     SEND(KC_8));
+    P( LNO | RL,     SEND(KC_9));
+    P( LNO | RT,     SEND(KC_0));
+
+    // Number Row, Right
+    P( RNO | LSU,    SEND(KC_1));
+    P( RNO | LFT,    SEND(KC_2));
+    P( RNO | LP,     SEND(KC_3));
+    P( RNO | LH,     SEND(KC_4));
+    P( RNO | ST1,    SEND(KC_5));
+    P( RNO | ST3,    SEND(KC_6));
+    P( RNO | RF,     SEND(KC_7));
+    P( RNO | RP,     SEND(KC_8));
+    P( RNO | RL,     SEND(KC_9));
+    P( RNO | RT,     SEND(KC_0));
+    P( RNO | LA,     SEND(KC_5));
+
+    // Specials
+    P( RU | RNO,    SEND(KC_TAB));
+    P( RE | RU,     SEND(KC_BSPC));
+    P( RD | RZ,     SEND(KC_ENT));
+    P( RE,          SEND(KC_ENT));
+    P( RD,          SEND(KC_BSPC));
+    P( LNO,         SEND(KC_BSPC));
+    P( RNO,         SEND(KC_BSPC));
+    P( LA,          SEND(KC_SPC));
+    P( RU,          SEND(KC_SPC));
+    P( RZ,          SEND(KC_ESC));
+
+    // Symbols and Numbers
+       P( PWR | RE | RU,      SEND(KC_ENT));
+    P( PWR | LA | LO,      SEND(KC_SPC));
+    P( PWR | LP | LW,      SEND(KC_LSFT); SEND(KC_9));       // (
+    P( PWR | LH | LR,      SEND(KC_LSFT); SEND(KC_0));       // )
+    P( PWR | ST1 | ST2,    SEND(KC_GRV));                    // `
+    P( PWR | RD | RZ,      SEND(KC_ESC));
+    P( PWR | LSU | LSD,    SEND(KC_LSFT); SEND(KC_3));       // #
+    P( PWR | LFT | LK,     SEND(KC_LSFT); SEND(KC_4));       // $
+    P( PWR | LSU,          SEND(KC_LSFT); SEND(KC_1));       // !
+    P( PWR | LSD,          SEND(KC_LSFT); SEND(KC_5));       // %
+    P( PWR | LFT,          SEND(KC_LSFT); SEND(KC_2));       // @
+    P( PWR | LK,           SEND(KC_LSFT); SEND(KC_6));       // ^
+    P( PWR | LP,           SEND(KC_LSFT); SEND(KC_LBRC));    // {
+    P( PWR | LW,           SEND(KC_LBRC));
+    P( PWR | LH,           SEND(KC_LSFT); SEND(KC_RBRC));    // }
+    P( PWR | LR,           SEND(KC_RBRC));
+    P( PWR | ST1,          SEND(KC_LSFT); SEND(KC_BSLS));    // |
+    P( PWR | ST2,          SEND(KC_LSFT); SEND(KC_GRV));     // ~
+    P( PWR | ST3,          SEND(KC_QUOT));
+    P( PWR | ST4,          SEND(KC_LSFT); SEND(KC_QUOT));    // "
+    P( PWR | RF,           SEND(KC_KP_PLUS));
+    P( PWR | RR,           SEND(KC_LSFT); SEND(KC_7));       // &
+    P( PWR | RP,           SEND(KC_MINS));
+    P( PWR | RB,           SEND(KC_EQL));
+    P( PWR | RL,           SEND(KC_SLSH));
+    P( PWR | RG,           SEND(KC_COMM));
+    P( PWR | RT,           SEND(KC_PAST));
+    P( PWR | RS,           SEND(KC_DOT));
+    P( PWR | RD,           SEND(KC_TAB));
+    P( PWR | LA,           SEND(KC_LSFT));
+    P( PWR | LO,           SEND(KC_SLSH));
+    P( PWR | RE,           SEND(KC_SCLN));
+    P( PWR | RU,           SEND(KC_BSLS));
+    P( PWR | LNO,          SEND(KC_BSLS));
+    P( PWR | RF | RR,      SEND(KC_LEFT));
+    P( PWR | RP | RB,      SEND(KC_DOWN));
+    P( PWR | RL | RG,      SEND(KC_UP));
+    P( PWR | RT | RS,      SEND(KC_RIGHT));
+
+    // Letters
+    P( LSU | LSD,    SEND(KC_A));
+    P( LFT | LK,     SEND(KC_S));
+    P( LP  | LW,     SEND(KC_D));
+    P( LH  | LR,     SEND(KC_F));
+    P( ST1 | ST2,    SEND(KC_G));
+    P( ST3 | ST4,    SEND(KC_H));
+    P( RF  | RR,     SEND(KC_J));
+    P( RT  | RS,     SEND(KC_SCLN));
+    P( RG  | RL,     SEND(KC_L));
+    P( RP  | RB,     SEND(KC_K));
+    P( LSU,          SEND(KC_Q));
+    P( LSD,          SEND(KC_Z));
+    P( LFT,          SEND(KC_W));
+    P( LK,           SEND(KC_X));
+    P( LP,           SEND(KC_E));
+    P( LW,           SEND(KC_C));
+    P( LH,           SEND(KC_R));
+    P( LR,           SEND(KC_V));
+    P( ST1,          SEND(KC_T));
+    P( ST2,          SEND(KC_B));
+    P( ST3,          SEND(KC_Y));
+    P( ST4,          SEND(KC_N));
+    P( RF,           SEND(KC_U));
+    P( RR,           SEND(KC_M));
+    P( RP,           SEND(KC_I));
+    P( RB,           SEND(KC_COMM));
+    P( RL,           SEND(KC_O));
+    P( RG,           SEND(KC_DOT));
+    P( RT,           SEND(KC_P));
+    P( RS,           SEND(KC_SLSH));
+    P( RNO,          SEND(KC_BSPC));
+    P( LNO,          SEND(KC_BSPC));
+
+    return 0;
 }
 
-#define STENO_LAYER    0
-#define GAMING                 1
-#define GAMING_2               2
-
 // "Layers"
 // Steno layer should be first in your map.
-// When PWR | FN | RR | RG | RB | RS is pressed, the layer is increased to the next map. You must return to STENO_LAYER at the end.
-// If you have only a single layer, you must set SINGLELAYER = yes in your rules.mk, otherwise you may experince undefined behaviour
+// When PWR | FN | ST3 | ST4 is pressed, the layer is increased to the next map. You must return to STENO_LAYER at the end.
+// If you need more space for chords, remove the two gaming layers.
+// Note: If using NO_ACTION_TAPPING, LT will not work!
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-// Main layer, everything goes through here
-[STENO_LAYER] = LAYOUT_georgi(  
-STN_FN,  STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1,       STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR,
-STN_PWR, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2,       STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR,
-                                                STN_N1, STN_A,  STN_O,                 STN_E,   STN_U,  STN_N1)
-,
-// Gaming layer with Numpad, Very limited
-[GAMING] = LAYOUT_georgi(  
-KC_LSFT, KC_Q, KC_W, KC_E, KC_R, KC_T,       KC_Y,   KC_U, KC_I, KC_O, KC_P,    KC_ENT,
-KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,       KC_H,   KC_J, KC_K, KC_L, KC_SCLN, KC_DQUO,
-KC_LALT, KC_SPC, LT(GAMING_2, KC_ENT),      KC_DEL, KC_ASTR,  TO(STENO_LAYER)), 
-
-[GAMING_2] = LAYOUT_georgi(  
-KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5,       KC_6, KC_7, KC_8,  KC_9,  KC_0, KC_MINS,
-KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B,       KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT,
-                         KC_LALT, KC_SPC, KC_ENT,           KC_DEL, KC_ASTR,  TO(STENO_LAYER))
-}; 
-
-int getKeymapCount(void) {
-       return sizeof(keymaps)/sizeof(keymaps[0]);
-}
+    // Main layer, everything goes through here
+    [STENO_LAYER] = LAYOUT_georgi(
+        STN_FN,  STN_S1,  STN_TL,  STN_PL,  STN_HL,  STN_ST1,       STN_ST3, STN_FR,  STN_PR,  STN_LR,  STN_TR,  STN_DR,
+        STN_PWR, STN_S2,  STN_KL,  STN_WL,  STN_RL,  STN_ST2,       STN_ST4, STN_RR,  STN_BR,  STN_GR,  STN_SR,  STN_ZR,
+                                   STN_N1,  STN_A,   STN_O,         STN_E,   STN_U,   STN_N7
+    ),
+    // Gaming layer with Numpad, Very limited
+    [GAMING] = LAYOUT_georgi(
+        KC_LSFT, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                       KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_ENT,
+        KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                       KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_DQUO,
+                                   KC_LALT, KC_SPC,  LT(GAMING_2, KC_ENT),       KC_DEL,  KC_ASTR, TO(STENO_LAYER)
+    ),
+
+    [GAMING_2] = LAYOUT_georgi(
+        KC_LSFT, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,          KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS,
+        KC_LCTL, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,          KC_N,    KC_M,    KC_LT,   KC_GT,   KC_QUES, KC_RSFT,
+                                   KC_LALT, KC_SPC,  KC_ENT,        KC_DEL,  KC_ASTR, TO(STENO_LAYER)
+    )
+};
+
+// Don't fuck with this, thanks.
+size_t keymapsCount  = sizeof(keymaps)/sizeof(keymaps[0]);