qmk_firmware

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

keymap.c (8372B)


      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    (ST1 | ST2)
     20 
     21 // QMK Layers
     22 #define STENO_LAYER   0
     23 
     24 /* Keyboard Layout
     25  * ,---------------------------------.    ,------------------------------.
     26  * | FN  | LSU | LFT | LP | LH | ST1 |    | ST3 | RF | RP | RL | RT | RD |
     27  * |-----+-----+-----+----+----|-----|    |-----|----+----+----+----+----|
     28  * | PWR | LSD | LK  | LW | LR | ST2 |    | ST4 | RR | BB | RG | RS | RZ |
     29  * `---------------------------------'    `------------------------------'
     30  *                   ,---------------,    .---------------.
     31  *                   | LNO | LA | LO |    | RE | RU | RNO |
     32  *                   `---------------'    `---------------'
     33  */
     34 
     35 // Note: You can only use basic keycodes here!
     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 | RNO | LA  | LO | RE | RU,    SEND(KC_MPLY));
     43     P( LFT | LK  | LP  | LW,              REPEAT());
     44     P( ST1 | ST2 | LW  | ST4,             SEND(KC_BSPC));
     45 
     46     // Mouse Keys
     47     P( LO  | LSD | LK,    CLICK_MOUSE(MS_BTN2));
     48     P( LO  | LR  | LW,    CLICK_MOUSE(MS_BTN1));
     49 
     50     // Thumb Chords
     51     P( LA  | LO  | RE  | RU,    SEND(KC_CAPS));
     52     P( LA  | RU,                SEND(KC_ESC));
     53     P( LO  | RE,                SEND(KC_LCTL));
     54     P( LNO | RNO | LA | RU,     SEND(KC_LCTL); SEND(KC_LSFT));
     55     P( LNO | LA  | RE,          SEND(KC_LCTL); SEND(KC_LSFT); SEND(KC_LALT));
     56 
     57     // Mods
     58     P( RT | RD   | RS | RZ,    SEND(KC_LGUI));
     59     P( RT | RD,                SEND(KC_LCTL));
     60     P( RS | RZ,                SEND(KC_LALT));
     61     P( LA | LNO,               SEND(KC_LCTL));
     62     P( LA | LO,                SEND(KC_LALT));
     63     P( LO,                     SEND(KC_LSFT));
     64 
     65     // Function Layer
     66     P( FUNCT | RF | RR,    SEND(KC_F5));
     67     P( FUNCT | RP | RB,    SEND(KC_F6));
     68     P( FUNCT | RL | RG,    SEND(KC_F7));
     69     P( FUNCT | RT | RS,    SEND(KC_F8));
     70     P( FUNCT | RF,         SEND(KC_F1));
     71     P( FUNCT | RP,         SEND(KC_F2));
     72     P( FUNCT | RL,         SEND(KC_F3));
     73     P( FUNCT | RT,         SEND(KC_F4));
     74     P( FUNCT | RR,         SEND(KC_F9));
     75     P( FUNCT | RG,         SEND(KC_F10));
     76     P( FUNCT | RB,         SEND(KC_F11));
     77     P( FUNCT | RS,         SEND(KC_F12));
     78 
     79     // Movement Layer
     80     P( MOVE | RF,     SEND(KC_LEFT));
     81     P( MOVE | RP,     SEND(KC_DOWN));
     82     P( MOVE | RL,     SEND(KC_UP));
     83     P( MOVE | RT,     SEND(KC_RIGHT));
     84     P( MOVE | ST3,    SEND(KC_PGUP));
     85     P( MOVE | ST4,    SEND(KC_PGDN));
     86 
     87     // Media Layer
     88     P( MEDIA | RF,    SEND(KC_MPRV));
     89     P( MEDIA | RP,    SEND(KC_MPLY));
     90     P( MEDIA | RL,    SEND(KC_MPLY));
     91     P( MEDIA | RT,    SEND(KC_MNXT));
     92     P( MEDIA | RD,    SEND(KC_VOLU));
     93     P( MEDIA | RZ,    SEND(KC_VOLD));
     94     P( MEDIA | RS,    SEND(KC_MUTE));
     95 
     96     // Number Row, Left
     97     P( LNO | LSU,    SEND(KC_1));
     98     P( LNO | LFT,    SEND(KC_2));
     99     P( LNO | LP,     SEND(KC_3));
    100     P( LNO | LH,     SEND(KC_4));
    101     P( LNO | ST1,    SEND(KC_5));
    102     P( LNO | ST3,    SEND(KC_6));
    103     P( LNO | RF,     SEND(KC_7));
    104     P( LNO | RP,     SEND(KC_8));
    105     P( LNO | RL,     SEND(KC_9));
    106     P( LNO | RT,     SEND(KC_0));
    107 
    108     // Number Row, Right
    109     P( RNO | LSU,    SEND(KC_1));
    110     P( RNO | LFT,    SEND(KC_2));
    111     P( RNO | LP,     SEND(KC_3));
    112     P( RNO | LH,     SEND(KC_4));
    113     P( RNO | ST1,    SEND(KC_5));
    114     P( RNO | ST3,    SEND(KC_6));
    115     P( RNO | RF,     SEND(KC_7));
    116     P( RNO | RP,     SEND(KC_8));
    117     P( RNO | RL,     SEND(KC_9));
    118     P( RNO | RT,     SEND(KC_0));
    119     P( RNO | LA,     SEND(KC_5));
    120 
    121     // Specials
    122     P( RU | RNO,    SEND(KC_TAB));
    123     P( RE | RU,     SEND(KC_BSPC));
    124     P( RD | RZ,     SEND(KC_ENT));
    125     P( RE,          SEND(KC_ENT));
    126     P( RD,          SEND(KC_BSPC));
    127     P( LNO,         SEND(KC_BSPC));
    128     P( RNO,         SEND(KC_BSPC));
    129     P( LA,          SEND(KC_SPC));
    130     P( RU,          SEND(KC_SPC));
    131     P( RZ,          SEND(KC_ESC));
    132 
    133     // Symbols and Numbers
    134     P( PWR | RE | RU,      SEND(KC_ENT));
    135     P( PWR | LA | LO,      SEND(KC_SPC));
    136     P( PWR | LP | LW,      SEND(KC_LSFT); SEND(KC_9));       // (
    137     P( PWR | LH | LR,      SEND(KC_LSFT); SEND(KC_0));       // )
    138     P( PWR | ST1 | ST2,    SEND(KC_GRV));                    // `
    139     P( PWR | RD | RZ,      SEND(KC_ESC));
    140     P( PWR | LSU | LSD,    SEND(KC_LSFT); SEND(KC_3));       // #
    141     P( PWR | LFT | LK,     SEND(KC_LSFT); SEND(KC_4));       // $
    142     P( PWR | LSU,          SEND(KC_LSFT); SEND(KC_1));       // !
    143     P( PWR | LSD,          SEND(KC_LSFT); SEND(KC_5));       // %
    144     P( PWR | LFT,          SEND(KC_LSFT); SEND(KC_2));       // @
    145     P( PWR | LK,           SEND(KC_LSFT); SEND(KC_6));       // ^
    146     P( PWR | LP,           SEND(KC_LSFT); SEND(KC_LBRC));    // {
    147     P( PWR | LW,           SEND(KC_LBRC));
    148     P( PWR | LH,           SEND(KC_LSFT); SEND(KC_RBRC));    // }
    149     P( PWR | LR,           SEND(KC_RBRC));
    150     P( PWR | ST1,          SEND(KC_LSFT); SEND(KC_BSLS));    // |
    151     P( PWR | ST2,          SEND(KC_LSFT); SEND(KC_GRV));     // ~
    152     P( PWR | ST3,          SEND(KC_QUOT));
    153     P( PWR | ST4,          SEND(KC_LSFT); SEND(KC_QUOT));    // "
    154     P( PWR | RF,           SEND(KC_KP_PLUS));
    155     P( PWR | RR,           SEND(KC_LSFT); SEND(KC_7));       // &
    156     P( PWR | RP,           SEND(KC_MINS));
    157     P( PWR | RB,           SEND(KC_EQL));
    158     P( PWR | RL,           SEND(KC_SLSH));
    159     P( PWR | RG,           SEND(KC_COMM));
    160     P( PWR | RT,           SEND(KC_PAST));
    161     P( PWR | RS,           SEND(KC_DOT));
    162     P( PWR | RD,           SEND(KC_TAB));
    163     P( PWR | LA,           SEND(KC_LSFT));
    164     P( PWR | LO,           SEND(KC_SLSH));
    165     P( PWR | RE,           SEND(KC_SCLN));
    166     P( PWR | RU,           SEND(KC_BSLS));
    167     P( PWR | LNO,          SEND(KC_BSLS));
    168 
    169     // Letters
    170     P( LSU | LSD,    SEND(KC_A));
    171     P( LFT | LK,     SEND(KC_S));
    172     P( LP  | LW,     SEND(KC_D));
    173     P( LH  | LR,     SEND(KC_F));
    174     P( ST1 | ST2,    SEND(KC_G));
    175     P( ST3 | ST4,    SEND(KC_H));
    176     P( RF  | RR,     SEND(KC_J));
    177     P( RT  | RS,     SEND(KC_SCLN));
    178     P( RG  | RL,     SEND(KC_L));
    179     P( RP  | RB,     SEND(KC_K));
    180     P( LSU,          SEND(KC_Q));
    181     P( LSD,          SEND(KC_Z));
    182     P( LFT,          SEND(KC_W));
    183     P( LK,           SEND(KC_X));
    184     P( LP,           SEND(KC_E));
    185     P( LW,           SEND(KC_C));
    186     P( LH,           SEND(KC_R));
    187     P( LR,           SEND(KC_V));
    188     P( ST1,          SEND(KC_T));
    189     P( ST2,          SEND(KC_B));
    190     P( ST3,          SEND(KC_Y));
    191     P( ST4,          SEND(KC_N));
    192     P( RF,           SEND(KC_U));
    193     P( RR,           SEND(KC_M));
    194     P( RP,           SEND(KC_I));
    195     P( RB,           SEND(KC_COMM));
    196     P( RL,           SEND(KC_O));
    197     P( RG,           SEND(KC_DOT));
    198     P( RT,           SEND(KC_P));
    199     P( RS,           SEND(KC_SLSH));
    200     P( RNO,          SEND(KC_BSPC));
    201     P( LNO,          SEND(KC_BSPC));
    202 
    203     return 0;
    204 }
    205 
    206 // "Layers"
    207 // Steno layer should be first in your map.
    208 // When PWR | FN | ST3 | ST4 is pressed, the layer is increased to the next map. You must return to STENO_LAYER at the end.
    209 // If you need more space for chords, remove the two gaming layers.
    210 // Note: If using NO_ACTION_TAPPING, LT will not work!
    211 
    212 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    213     // Main layer, everything goes through here
    214     [STENO_LAYER] = LAYOUT_georgi(
    215     STN_FN,  STN_S1,  STN_TL,  STN_PL,  STN_HL,  STN_ST1,       STN_ST3, STN_FR,  STN_PR,  STN_LR,  STN_TR,  STN_DR,
    216     STN_PWR, STN_S2,  STN_KL,  STN_WL,  STN_RL,  STN_ST2,       STN_ST4, STN_RR,  STN_BR,  STN_GR,  STN_SR,  STN_ZR,
    217                                STN_N1,  STN_A,   STN_O,         STN_E,   STN_U,  STN_N7
    218     )
    219 };
    220 // Don't fuck with this, thanks.
    221 size_t keymapsCount  = ARRAY_SIZE(keymaps);