keyboard

My QMK keyboard layouts
git clone git://gtms.dev/keyboard
Log | Files | Refs | README | LICENSE

keymap.c (18969B)


      1 /* Copyright 2015-2021 Jack Humbert
      2  *
      3  * This program is free software: you can redistribute it and/or modify
      4  * it under the terms of the GNU General Public License as published by
      5  * the Free Software Foundation, either version 2 of the License, or
      6  * (at your option) any later version.
      7  *
      8  * This program is distributed in the hope that it will be useful,
      9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     11  * GNU General Public License for more details.
     12  *
     13  * You should have received a copy of the GNU General Public License
     14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
     15  */
     16 
     17 #include QMK_KEYBOARD_H
     18 
     19 enum planck_layers { _DVORAK, _QWERTY, _SYMBOL, _MOVE, _NUMPAD, _FKEYS, _SERVICE };
     20 
     21 enum planck_keycodes {
     22     DVORAK = SAFE_RANGE,
     23     QWERTY,
     24 };
     25 
     26 // Left-hand home row mods
     27 #define HOME_A LGUI_T(KC_A)
     28 #define HOME_O LALT_T(KC_O)
     29 #define HOME_E LSFT_T(KC_E)
     30 #define HOME_U LCTL_T(KC_U)
     31 
     32 // Right-hand home row mods
     33 #define HOME_H RCTL_T(KC_H)
     34 #define HOME_T RSFT_T(KC_T)
     35 #define HOME_N LALT_T(KC_N)
     36 #define HOME_S RGUI_T(KC_S)
     37 
     38 #define LOWER LT(_SYMBOL, KC_TAB)
     39 #define RAISE LT(_SYMBOL, KC_ENT)
     40 
     41 // clang-format off
     42 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     43 //    ┌──────────────┬────────┬────────┬───────────┬────────┬─────┬─────┬────────┬─────────────┬────────┬────────┬──────┐
     44 //    │      ?       │   '    │   ,    │     .     │   p    │  y  │  f  │   g    │      c      │   r    │   l    │  !   │
     45 //    ├──────────────┼────────┼────────┼───────────┼────────┼─────┼─────┼────────┼─────────────┼────────┼────────┼──────┤
     46 //    │     esc      │ HOME_A │ HOME_O │  HOME_E   │ HOME_U │  i  │  d  │ HOME_H │   HOME_T    │ HOME_N │ HOME_S │  -   │
     47 //    ├──────────────┼────────┼────────┼───────────┼────────┼─────┼─────┼────────┼─────────────┼────────┼────────┼──────┤
     48 //    │     lsft     │   ;    │   q    │     j     │   k    │  x  │  b  │   m    │      w      │   v    │   z    │ rsft │
     49 //    ├──────────────┼────────┼────────┼───────────┼────────┼─────┼─────┼────────┼─────────────┼────────┼────────┼──────┤
     50 //    │ MO(_SERVICE) │        │        │ MO(_MOVE) │ LOWER  │ spc │ spc │ RAISE  │ MO(_NUMPAD) │        │        │      │
     51 //    └──────────────┴────────┴────────┴───────────┴────────┴─────┴─────┴────────┴─────────────┴────────┴────────┴──────┘
     52 [_DVORAK] = LAYOUT_planck_grid(
     53   KC_QUES      , KC_QUOT , KC_COMM , KC_DOT    , KC_P   , KC_Y   , KC_F   , KC_G   , KC_C        , KC_R    , KC_L    , KC_EXLM,
     54   KC_ESC       , HOME_A  , HOME_O  , HOME_E    , HOME_U , KC_I   , KC_D   , HOME_H , HOME_T      , HOME_N  , HOME_S  , KC_MINS,
     55   KC_LSFT      , KC_SCLN , KC_Q    , KC_J      , KC_K   , KC_X   , KC_B   , KC_M   , KC_W        , KC_V    , KC_Z    , KC_RSFT,
     56   MO(_SERVICE) , _______ , _______ , MO(_MOVE) , LOWER  , KC_SPC , KC_SPC , RAISE  , MO(_NUMPAD) , _______ , _______ , _______
     57 ),
     58 
     59 //    ┌──────┬─────┬──────┬──────┬───────┬─────┬─────┬───────┬──────┬─────┬─────┬─────┐
     60 //    │ tab  │  q  │  w   │  e   │   r   │  t  │  y  │   u   │  i   │  o  │  p  │     │
     61 //    ├──────┼─────┼──────┼──────┼───────┼─────┼─────┼───────┼──────┼─────┼─────┼─────┤
     62 //    │ esc  │  a  │  s   │  d   │   f   │  g  │  h  │   j   │  k   │  l  │  ;  │  '  │
     63 //    ├──────┼─────┼──────┼──────┼───────┼─────┼─────┼───────┼──────┼─────┼─────┼─────┤
     64 //    │ lsft │  z  │  x   │  c   │   v   │  b  │  n  │   m   │  ,   │  .  │  /  │ ent │
     65 //    ├──────┼─────┼──────┼──────┼───────┼─────┼─────┼───────┼──────┼─────┼─────┼─────┤
     66 //    │ lctl │     │ lalt │ lgui │ LOWER │ spc │ spc │ RAISE │ rgui │     │     │     │
     67 //    └──────┴─────┴──────┴──────┴───────┴─────┴─────┴───────┴──────┴─────┴─────┴─────┘
     68 [_QWERTY] = LAYOUT_planck_grid(
     69   KC_TAB  , KC_Q    , KC_W    , KC_E    , KC_R  , KC_T   , KC_Y   , KC_U  , KC_I    , KC_O    , KC_P    , _______,
     70   KC_ESC  , KC_A    , KC_S    , KC_D    , KC_F  , KC_G   , KC_H   , KC_J  , KC_K    , KC_L    , KC_SCLN , KC_QUOT,
     71   KC_LSFT , KC_Z    , KC_X    , KC_C    , KC_V  , KC_B   , KC_N   , KC_M  , KC_COMM , KC_DOT  , KC_SLSH , KC_ENT ,
     72   KC_LCTL , _______ , KC_LALT , KC_LGUI , LOWER , KC_SPC , KC_SPC , RAISE , KC_RGUI , _______ , _______ , _______
     73 ),
     74 
     75 //    ┌──────┬─────┬─────┬─────┬───┬─────┬─────┬───┬─────┬─────┬─────┬──────┐
     76 //    │      │  &  │  <  │  >  │ % │  @  │  ^  │ $ │  [  │  ]  │  `  │ bspc │
     77 //    ├──────┼─────┼─────┼─────┼───┼─────┼─────┼───┼─────┼─────┼─────┼──────┤
     78 //    │  ~   │  |  │  :  │  (  │ 0 │  )  │  {  │ 1 │  }  │  =  │  +  │  _   │
     79 //    ├──────┼─────┼─────┼─────┼───┼─────┼─────┼───┼─────┼─────┼─────┼──────┤
     80 //    │ lsft │  6  │  7  │  8  │ 9 │  #  │  *  │ 2 │  3  │  4  │  5  │ rsft │
     81 //    ├──────┼─────┼─────┼─────┼───┼─────┼─────┼───┼─────┼─────┼─────┼──────┤
     82 //    │      │     │     │     │ \ │     │     │ / │     │     │     │      │
     83 //    └──────┴─────┴─────┴─────┴───┴─────┴─────┴───┴─────┴─────┴─────┴──────┘
     84 [_SYMBOL] = LAYOUT_planck_grid(
     85   _______ , KC_AMPR , KC_LT   , KC_GT   , KC_PERC , KC_AT   , KC_CIRC , KC_DLR  , KC_LBRC , KC_RBRC , KC_GRV  , KC_BSPC,
     86   KC_TILD , KC_PIPE , KC_COLN , KC_LPRN , KC_0    , KC_RPRN , KC_LCBR , KC_1    , KC_RCBR , KC_EQL  , KC_PLUS , KC_UNDS,
     87   KC_LSFT , KC_6    , KC_7    , KC_8    , KC_9    , KC_HASH , KC_ASTR , KC_2    , KC_3    , KC_4    , KC_5    , KC_RSFT,
     88   _______ , _______ , _______ , _______ , KC_BSLS , _______ , _______ , KC_SLSH , _______ , _______ , _______ , _______
     89 ),
     90 
     91 //    ┌─────┬─────┬─────┬─────┬────────────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
     92 //    │     │     │     │     │            │     │     │  7  │  8  │  9  │     │     │
     93 //    ├─────┼─────┼─────┼─────┼────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
     94 //    │     │     │     │     │            │     │     │  4  │  5  │  6  │     │     │
     95 //    ├─────┼─────┼─────┼─────┼────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
     96 //    │     │     │     │     │            │     │     │  1  │  2  │  3  │     │     │
     97 //    ├─────┼─────┼─────┼─────┼────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
     98 //    │     │     │     │     │ MO(_FKEYS) │     │     │     │     │     │     │     │
     99 //    └─────┴─────┴─────┴─────┴────────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
    100 [_NUMPAD] = LAYOUT_planck_grid(
    101   _______ , _______ , _______ , _______ , _______    , _______ , _______ , KC_7    , KC_8    , KC_9    , _______ , _______,
    102   _______ , _______ , _______ , _______ , _______    , _______ , _______ , KC_4    , KC_5    , KC_6    , _______ , _______,
    103   _______ , _______ , _______ , _______ , _______    , _______ , _______ , KC_1    , KC_2    , KC_3    , _______ , _______,
    104   _______ , _______ , _______ , _______ , MO(_FKEYS) , _______ , _______ , _______ , _______ , _______ , _______ , _______
    105 ),
    106 
    107 //    ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
    108 //    │     │     │     │     │     │     │ f10 │ f7  │ f8  │ f9  │     │     │
    109 //    ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
    110 //    │     │     │     │     │     │     │ f11 │ f4  │ f5  │ f6  │     │     │
    111 //    ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
    112 //    │     │     │     │     │     │     │ f12 │ f1  │ f2  │ f3  │     │     │
    113 //    ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
    114 //    │     │     │     │     │     │     │     │     │     │     │     │     │
    115 //    └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
    116 [_FKEYS] = LAYOUT_planck_grid(
    117   _______ , _______ , _______ , _______ , _______ , _______ , KC_F10  , KC_F7   , KC_F8   , KC_F9   , _______ , _______,
    118   _______ , _______ , _______ , _______ , _______ , _______ , KC_F11  , KC_F4   , KC_F5   , KC_F6   , _______ , _______,
    119   _______ , _______ , _______ , _______ , _______ , _______ , KC_F12  , KC_F1   , KC_F2   , KC_F3   , _______ , _______,
    120   _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______
    121 ),
    122 
    123 //    ┌─────┬─────┬─────┬─────┬─────┬─────┬──────┬──────┬──────┬──────┬─────┬─────┐
    124 //    │     │     │     │     │     │     │ home │ pgdn │ pgup │ end  │     │     │
    125 //    ├─────┼─────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┼─────┼─────┤
    126 //    │     │     │     │     │     │     │ left │ down │  up  │ rght │     │     │
    127 //    ├─────┼─────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┼─────┼─────┤
    128 //    │     │     │     │     │     │     │      │      │      │      │     │     │
    129 //    ├─────┼─────┼─────┼─────┼─────┼─────┼──────┼──────┼──────┼──────┼─────┼─────┤
    130 //    │     │     │     │     │     │     │      │      │      │      │     │     │
    131 //    └─────┴─────┴─────┴─────┴─────┴─────┴──────┴──────┴──────┴──────┴─────┴─────┘
    132 [_MOVE] = LAYOUT_planck_grid(
    133   _______ , _______ , _______ , _______ , _______ , _______ , KC_HOME , KC_PGDN , KC_PGUP , KC_END  , _______ , _______,
    134   _______ , _______ , _______ , _______ , _______ , _______ , KC_LEFT , KC_DOWN , KC_UP   , KC_RGHT , _______ , _______,
    135   _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
    136   _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______
    137 ),
    138 
    139 //    ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────────┬─────────┬─────┬─────────┬─────────┐
    140 //    │     │     │     │     │     │     │     │         │         │     │         │         │
    141 //    ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────────┼─────────┼─────┼─────────┼─────────┤
    142 //    │     │     │     │     │     │     │     │ RGB_HUI │ RGB_HUD │     │ QWERTY  │ DVORAK  │
    143 //    ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────────┼─────────┼─────┼─────────┼─────────┤
    144 //    │     │     │     │     │     │     │     │ RGB_SAI │ RGB_SAD │     │         │         │
    145 //    ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────────┼─────────┼─────┼─────────┼─────────┤
    146 //    │     │     │     │     │     │     │     │ RGB_VAI │ RGB_VAD │     │ QK_MAKE │ QK_BOOT │
    147 //    └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────────┴─────────┴─────┴─────────┴─────────┘
    148 [_SERVICE] = LAYOUT_planck_grid(
    149   _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
    150   _______ , _______ , _______ , _______ , _______ , _______ , _______ , RGB_HUI , RGB_HUD , _______ , QWERTY  , DVORAK ,
    151   _______ , _______ , _______ , _______ , _______ , _______ , _______ , RGB_SAI , RGB_SAD , _______ , _______ , _______,
    152   _______ , _______ , _______ , _______ , _______ , _______ , _______ , RGB_VAI , RGB_VAD , _______ , QK_MAKE , QK_BOOT
    153 )
    154 };
    155 // clang-format on
    156 
    157 /* [_BASE] = LAYOUT_planck_grid( */
    158 /*   _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, */
    159 /*   _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, */
    160 /*   _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______, */
    161 /*   _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ */
    162 /* ) */
    163 
    164 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    165     switch (keycode) {
    166         case DVORAK:
    167             if (record->event.pressed) {
    168                 set_single_persistent_default_layer(_DVORAK);
    169             }
    170             return false;
    171             break;
    172         case QWERTY:
    173             if (record->event.pressed) {
    174                 set_single_persistent_default_layer(_QWERTY);
    175             }
    176             return false;
    177             break;
    178     }
    179     return true;
    180 }
    181 
    182 uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
    183     switch (keycode) {
    184         case LOWER:
    185             return 100;
    186         case RAISE:
    187             return 100;
    188         default:
    189             return TAPPING_TERM;
    190     }
    191 }
    192 
    193 // clang-format off
    194 const char chordal_hold_layout[MATRIX_ROWS][MATRIX_COLS] PROGMEM =
    195     LAYOUT_planck_grid(
    196   'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' ,
    197   'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' ,
    198   'L' , 'L' , 'L' , 'L' , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' ,
    199   'L' , 'L' , 'L' , 'L' , 'L' , '*' , '*' , 'R' , 'R' , 'R' , 'R' , 'R'
    200     );
    201 // clang-format on