qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

keymap.c (10311B)


      1 /*
      2  * Good on you for modifying your layout, this is the most nonQMK layout you will come across
      3  * There are three modes, Steno (the default), QWERTY (Toggleable) and a Momentary symbol layer
      4  *
      5  * Don't modify the steno layer directly, instead add chords using the keycodes and macros
      6  * from sten.h to the layout you want to modify.
      7  *
      8  * Observe the comment above processQWERTY!
      9  *
     10  * http://docs.gboards.ca
     11  */
     12 
     13 #include QMK_KEYBOARD_H
     14 #include "sten.h"
     15 
     16 // Proper Layers
     17 #define FUNCT   (LSD | LK | LP | LH)
     18 #define MEDIA   (LSD | LK | LW | LR)
     19 #define MOVE    (LH | ST2)
     20 
     21 /* Keyboard Layout
     22  * ,---------------------------------.    ,------------------------------.
     23  * | FN  | LSU | LFT | LP | LH | ST1 |    | ST3 | RF | RP | RL | RT | RD |
     24  * |-----+-----+-----+----+----|-----|    |-----|----+----+----+----+----|
     25  * | PWR | LSD | LK  | LW | LR | ST2 |    | ST4 | RR | RB | RG | RS | RZ |
     26  * `---------------------------------'    `------------------------------'
     27  *                   ,---------------,    .---------------.
     28  *                   | LNO | LA | LO |    | RE | RU | RNO |
     29  *                   `---------------'    `---------------'
     30  */
     31 
     32 // YOU MUST ORDER THIS!
     33 // Order your chords from longest to shortest!
     34 // You can only use basic keycodes here!
     35 //
     36 // P() is just a wrapper to make your life easier.
     37 //
     38 // http://docs.gboards.ca
     39 uint32_t processQwerty(bool lookup) {
     40 	// Specials
     41 	P( RT  | RS  | RD  | RZ | LNO,		SEND_STRING(VERSION); SEND_STRING(__DATE__));
     42 	P( LNO | LA  | LO  | RE | RU,		SEND(KC_MPLY));
     43 	P( ST1 | ST2 | ST3 | ST4,			SEND(KC_BSPC));
     44 
     45 	// Thumb Chords
     46 	P(  LA  | LO  | RE  | RU,			SEND(KC_CAPS));
     47 	P(  LA  | RU,						SEND(KC_ESC));
     48 	P( LO  | RE,						SEND(KC_LCTL));
     49 	P( LNO | LA | RU,					SEND(KC_LCTL); SEND(KC_LSFT));
     50 	P( LNO | LA | RE,					SEND(KC_LCTL); SEND(KC_LSFT); SEND(KC_LALT));
     51 
     52 	// Mods
     53 	P( RT | RD | RS | RZ,				SEND(KC_LGUI));
     54 	P( RT | RD,						SEND(KC_LCTL));
     55 	P( RS | RZ,						SEND(KC_LALT));
     56 	P( LA | LNO,						SEND(KC_LCTL));
     57 	P( LA | LO,						SEND(KC_LALT));
     58 	P( LO,								SEND(KC_LSFT));
     59 
     60 	// Function Layer
     61 	P( FUNCT | RF | RR,					SEND(KC_F6));
     62 	P( FUNCT | RP | RB,					SEND(KC_F7));
     63 	P( FUNCT | RL | RG,					SEND(KC_F8));
     64 	P( FUNCT | ST3 | ST4,				SEND(KC_F5));
     65   P( FUNCT| ST3,              SEND(KC_F1));
     66   P( FUNCT| ST4,              SEND(KC_F9));
     67 	P( FUNCT | RF,						SEND(KC_F2));
     68 	P( FUNCT | RP,						SEND(KC_F3));
     69 	P( FUNCT | RL,						SEND(KC_F4));
     70 	P( FUNCT | RR,						SEND(KC_F10));
     71 	P( FUNCT | RG,						SEND(KC_F12));
     72 	P( FUNCT | RB,						SEND(KC_F11));
     73   P( FUNCT | RD,            SEND(KC_RALT); SEND(KC_T); SEND(KC_H); SEND(KC_U); SEND(KC_P));
     74   P( FUNCT | RZ,            SEND(KC_RALT); SEND(KC_T); SEND(KC_H); SEND(KC_D); SEND(KC_N));
     75   P( FUNCT | RT,            SEND(KC_RALT); SEND(KC_S); SEND(KC_F));
     76   P( FUNCT | RS,            SEND(KC_LALT); SEND(KC_SPC));
     77   P( FUNCT | RE,            SEND(KC_LCTL); SEND(KC_LSFT); SEND(KC_ESC));
     78   P( FUNCT | RU,            SEND(KC_LCTL); SEND(KC_LSFT); SEND(KC_0));
     79 
     80 	// Movement Layer
     81 	P( MOVE | RF,						 SEND(KC_LGUI); SEND(KC_LSFT); SEND(KC_LEFT));
     82 	P( MOVE | RP,						SEND(KC_UP));
     83 	P( MOVE | RL,						SEND(KC_LGUI); SEND(KC_LSFT); SEND(KC_RGHT));
     84 	P( MOVE | RT,						SEND(KC_LALT); SEND(KC_LCTL); SEND(KC_LGUI); SEND(KC_C));
     85 	P( MOVE | ST3,						SEND(KC_PGUP));
     86 	P( MOVE | ST4,						SEND(KC_PGDN));
     87   P( MOVE | RD,           SEND(KC_HOME));
     88   P( MOVE | RZ,           SEND(KC_END));
     89   P( MOVE | RG,            SEND(KC_RIGHT));
     90   P( MOVE | RB,            SEND(KC_DOWN));
     91   P( MOVE | RR,            SEND(KC_LEFT));
     92   P( MOVE | RS,            SEND(KC_LSFT); SEND(KC_LCTL); SEND(KC_LGUI); SEND(KC_T));
     93   P( MOVE | RE,            SEND(KC_LSFT); SEND(KC_LALT); SEND(KC_LGUI); SEND(KC_S));
     94   P( MOVE | RU,            SEND(KC_LSFT); SEND(KC_LCTL); SEND(KC_1));
     95 
     96 
     97 	// Media Layer
     98 	P( MEDIA | RF,						SEND(KC_MEDIA_PREV_TRACK));
     99 	P( MEDIA | RP,						SEND(KC_MPLY));
    100 	P( MEDIA | RL,						SEND(KC_MPLY));
    101 	P( MEDIA | RT,						SEND(KC_MEDIA_NEXT_TRACK));
    102 	P( MEDIA | RD,						SEND(KC_VOLU));
    103 	P( MEDIA | RZ,						SEND(KC_VOLD));
    104 	P( MEDIA | RS,						SEND(KC_MUTE));
    105   P( MEDIA | ST3,           SEND(KC_LALT); SEND(KC_LCTL); SEND(KC_LGUI); SEND(KC_4));
    106   P( MEDIA | ST4,           SEND(KC_LALT); SEND(KC_LCTL); SEND(KC_LGUI); SEND(KC_2));
    107   P( MEDIA | RR,            SEND(KC_LALT); SEND(KC_LCTL); SEND(KC_LGUI); SEND(KC_3));
    108   P( MEDIA | RB,            SEND(KC_LCTL); SEND(KC_LSFT); SEND(KC_GRV));
    109   P( MEDIA | RG,            SEND(KC_LCTL); SEND(KC_LSFT); SEND(KC_8));
    110   P( MEDIA | RE,            SEND(KC_RALT); SEND(KC_F); SEND(KC_I); SEND(KC_R); SEND(KC_E));
    111   P( MEDIA | RU,            SEND(KC_RALT); SEND(KC_T); SEND(KC_A); SEND(KC_D));
    112 
    113 	// Mouse Keys and Printscreen
    114 	P( LFT | LH,							CLICK_MOUSE(MS_BTN1));
    115 	P( LK | LR,							CLICK_MOUSE(MS_BTN2));
    116 	P( RF | RT,							SEND(KC_PSCR););
    117 
    118 	// Number Row Left
    119 	P( LNO | LSU,						SEND(KC_1));
    120 	P( LNO | LFT,						SEND(KC_2));
    121 	P( LNO | LP,						SEND(KC_3));
    122 	P( LNO | LH,						SEND(KC_4));
    123 	P( LNO | ST1,						SEND(KC_5));
    124 	P( LNO | ST3,						SEND(KC_6));
    125 	P( LNO | RF,						SEND(KC_7));
    126 	P( LNO | RP,						SEND(KC_8));
    127 	P( LNO | RL,						SEND(KC_9));
    128 	P( LNO | RT,						SEND(KC_0));
    129 	P( LNO | LA,						SEND(KC_5));
    130 	P( LNO | RT,						SEND(KC_0));
    131 
    132   // Number Row Right
    133 	P( RNO | LSU,						SEND(KC_1));
    134 	P( RNO | LFT,						SEND(KC_2));
    135 	P( RNO | LP,						SEND(KC_3));
    136 	P( RNO | LH,						SEND(KC_4));
    137 	P( RNO | ST1,						SEND(KC_5));
    138 	P( RNO | ST3,						SEND(KC_6));
    139 	P( RNO | RF,						SEND(KC_7));
    140 	P( RNO | RP,						SEND(KC_8));
    141 	P( RNO | RL,						SEND(KC_9));
    142 	P( RNO | RT,						SEND(KC_0));
    143 	P( RNO | LA,						SEND(KC_5));
    144 	P( RNO | RT,						SEND(KC_0));
    145 
    146 	// Specials
    147 	P( LA | LNO,						SEND(KC_ESC));
    148 	P( RU | RNO,						SEND(KC_TAB));
    149 	P( RE | RU,							SEND(KC_LSFT); SEND(KC_SLSH));
    150 	P( RD | RZ,							SEND(KC_ENT));
    151 	P( RE,								SEND(KC_ENT));
    152 	//P( RD,								SEND(KC_BSPC));
    153 	P( LNO,								SEND(KC_BSPC));
    154   P( RD,								SEND(KC_DEL));
    155 	P( LA,								SEND(KC_SPC));
    156 	P( RU,								SEND(KC_SPC));
    157 	P( RZ,								SEND(KC_ESC));
    158   //P( RNO,               REPEAT());
    159 
    160 	// Letters
    161 	P( LSU | LSD,						SEND(KC_A));
    162 	P( LFT | LK,						SEND(KC_S));
    163 	P( LP  | LW,						SEND(KC_E));
    164 	P( LH  | LR,						SEND(KC_T));
    165 	P( ST1 | ST2,						SEND(KC_G));
    166 	P( ST3 | ST4,						SEND(KC_Y));
    167 	P( RF  | RR,						SEND(KC_N));
    168 	P( RT  | RS,						SEND(KC_H))
    169 	P( RG  | RL,						SEND(KC_O));
    170 	P( RP  | RB,						SEND(KC_I));
    171 	P( LSU,								SEND(KC_Q));
    172 	P( LSD,								SEND(KC_Z));
    173 	P( LFT,								SEND(KC_W));
    174 	P( LK,								SEND(KC_X));
    175 	P( LP,								SEND(KC_D));
    176 	P( LW,								SEND(KC_C));
    177 	P( LH,								SEND(KC_F));
    178 	P( LR,								SEND(KC_V));
    179 	P( ST1,								SEND(KC_K));
    180 	P( ST2,								SEND(KC_B));
    181 	P( ST3,								SEND(KC_J));
    182 	P( ST4,								SEND(KC_P));
    183 	P( RF,								SEND(KC_U));
    184 	P( RR,								SEND(KC_M));
    185 	P( RP,								SEND(KC_R));
    186 	P( RB,								SEND(KC_COMM));
    187 	P( RL,								SEND(KC_L));
    188 	P( RG,								SEND(KC_DOT));
    189 	P( RT,								SEND(KC_SCLN));
    190 	P( RS,								SEND(KC_SLSH));
    191 
    192 	// Symbols and Numbers
    193 	P( PWR | RE | RU,					SEND(KC_ENT));
    194 	P( PWR | LA | LO,					SEND(KC_SPC));
    195 	P( PWR | LP | LW,					SEND(KC_LSFT); SEND(KC_9));			// (
    196 	P( PWR | LH | LR,					SEND(KC_LSFT); SEND(KC_0));			// )
    197 	P( PWR | ST1 | ST2,					SEND(KC_GRV));						// `
    198 	P( PWR | RD | RZ,					SEND(KC_ESC));
    199 	P( PWR | LSU | LSD,					SEND(KC_LSFT); SEND(KC_3));			// #
    200 	P( PWR | LFT | LK,					SEND(KC_LSFT); SEND(KC_4));			// $
    201 	P( PWR | LSU,						SEND(KC_LSFT); SEND(KC_1));			// !
    202 	P( PWR | LSD,						SEND(KC_LSFT); SEND(KC_5));			// %
    203 	P( PWR | LFT,						SEND(KC_LSFT); SEND(KC_2));			// @
    204 	P( PWR | LK,						SEND(KC_LSFT); SEND(KC_6));			// ^
    205 	P( PWR | LP,						SEND(KC_LSFT); SEND(KC_LBRC));		// {
    206 	P( PWR | LW,						SEND(KC_LBRC));
    207 	P( PWR | LH,						SEND(KC_LSFT); SEND(KC_RBRC));		// }
    208 	P( PWR | LR,						SEND(KC_RBRC));
    209 	P( PWR | ST1,						SEND(KC_LSFT); SEND(KC_BSLS));		// |
    210 	P( PWR | ST2,						SEND(KC_LSFT); SEND(KC_GRV));		// ~
    211 	P( PWR | ST3,						SEND(KC_QUOT));
    212 	P( PWR | ST4,						SEND(KC_LSFT); SEND(KC_QUOT));		// "
    213 	P( PWR | RF,						SEND(KC_KP_PLUS));
    214 	P( PWR | RR,						SEND(KC_LSFT); SEND(KC_7));			// &
    215 	P( PWR | RP,						SEND(KC_MINS));
    216 	P( PWR | RB,						SEND(KC_EQL));
    217 	P( PWR | RL,						SEND(KC_SLSH));
    218 	P( PWR | RG,						SEND(KC_LSFT); SEND(KC_MINS));
    219 	P( PWR | RT,						SEND(KC_PAST));
    220 	P( PWR | RS,						SEND(KC_DOT));
    221 	P( PWR | RD,						SEND(KC_TAB));
    222 	P( PWR | LA,						SEND(KC_LSFT); SEND(KC_SCLN));
    223 	P( PWR | LO,						SEND(KC_BSLS));
    224 	P( PWR | RE,						SEND(KC_SCLN));
    225 	P( PWR | RU,						SEND(KC_BSLS));
    226   P( PWR | RZ,						SEND(KC_LSFT));
    227 
    228 	return 0;
    229 }
    230 
    231 #define STENO_LAYER		0
    232 #define GAMING			1
    233 #define GAMING_2		2
    234 #define MOVEMENT    3
    235 
    236 // "Layers"
    237 // Steno layer should be first in your map.
    238 // When PWR | FN | ST3 | ST4 is pressed, the layer is increased to the next map. You must return to STENO_LAYER at the end.
    239 // If you need more space for chords, remove the two gaming layers.
    240 
    241 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    242 // Main layer, everything goes through here
    243 [STENO_LAYER] = LAYOUT_georgi(
    244 STN_FN,  STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1,       STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR,
    245 STN_PWR, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2,       STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR,
    246 						 STN_N1, STN_A,  STN_O,			STN_E,   STN_U,  STN_N7)
    247 ,
    248 // Gaming layer with Numpad, Very limited
    249 [GAMING] = LAYOUT_georgi(
    250 KC_LSFT, KC_Q, KC_W, KC_E, KC_R, KC_T,       KC_Y,   KC_U, KC_I, KC_O, KC_P,    KC_ENT,
    251 KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,       KC_H,   KC_J, KC_K, KC_L, KC_SCLN, KC_DQUO,
    252 KC_LALT, KC_SPC, LT(GAMING_2, KC_ENT),	     KC_DEL, KC_ASTR,  TO(STENO_LAYER)),
    253 
    254 [GAMING_2] = LAYOUT_georgi(
    255 KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5,       KC_6, KC_7, KC_8,  KC_9,  KC_0, KC_MINS,
    256 KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B,       KC_N, KC_M, KC_LT, KC_GT, KC_QUES, KC_RSFT,
    257 			  KC_LALT, KC_SPC, KC_NO,	             KC_DEL, KC_ASTR,  TO(STENO_LAYER)),
    258 
    259 [MOVEMENT] = LAYOUT_georgi(
    260 KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS,KC_TRNS,       KC_PGUP, KC_TRNS, KC_UP,   KC_TRNS,  KC_TRNS, KC_HOME,
    261 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,       KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_END,
    262 			  KC_TRNS, KC_TRNS, KC_TRNS,	                        KC_TRNS, KC_TRNS, KC_TRNS)
    263 };
    264 // Don't fuck with this, thanks.
    265 size_t keymapsCount  = ARRAY_SIZE(keymaps);