keyboard

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

keymap.c (26049B)


      1 // Copyright 2022 Framework Computer
      2 // SPDX-License-Identifier: GPL-2.0-or-later
      3 
      4 #include QMK_KEYBOARD_H
      5 #include "framework.h"
      6 
      7 enum _layers { _BASE, _SMB, _QWERTY, _FN, _FN_LOCK, _FM };
      8 
      9 // Left-hand home row mods
     10 #define HOME_A LGUI_T(KC_A)
     11 #define HOME_O LALT_T(KC_O)
     12 #define HOME_E LSFT_T(KC_E)
     13 #define HOME_U LCTL_T(KC_U)
     14 
     15 // Right-hand home row mods
     16 #define HOME_H RCTL_T(KC_H)
     17 #define HOME_T RSFT_T(KC_T)
     18 #define HOME_N LALT_T(KC_N)
     19 #define HOME_S RGUI_T(KC_S)
     20 
     21 // clang-format off
     22 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     23 //    ┌──────┬─────────┬────────┬────────┬────────┬──────┬──────┬────────┬────────┬────────┬────────┬──────┬──────┬──────┐
     24 //    │ caps │  mute   │  vold  │  volu  │  mprv  │ mply │ mnxt │  bRID  │  bRIU  │  sCRN  │  aIRP  │ pscr │ msel │ del  │
     25 //    ├──────┼─────────┼────────┼────────┼────────┼──────┼──────┼────────┼────────┼────────┼────────┼──────┼──────┼──────┤
     26 //    │  `   │    1    │   2    │   3    │   4    │  5   │  6   │   7    │   8    │   9    │   0    │      │      │ bspc │
     27 //    ├──────┼─────────┼────────┼────────┼────────┼──────┼──────┼────────┼────────┼────────┼────────┼──────┼──────┼──────┤
     28 //    │ tab  │    ;    │   ,    │   .    │   p    │  y   │  f   │   g    │   c    │   r    │   l    │  \   │  /   │      │
     29 //    ├──────┼─────────┼────────┼────────┼────────┼──────┼──────┼────────┼────────┼────────┼────────┼──────┼──────┴──────┤
     30 //    │ esc  │ HOME_A  │ HOME_O │ HOME_E │ HOME_U │  i   │  d   │ HOME_H │ HOME_T │ HOME_N │ HOME_S │  -   │     ent     │
     31 //    ├──────┴─────────┼────────┼────────┼────────┼──────┼──────┼────────┼────────┼────────┼────────┼──────┼─────────────┤
     32 //    │      lsft      │   '    │   q    │   j    │  k   │  x   │   b    │   m    │   w    │   v    │  z   │    rsft     │
     33 //    ├──────┬─────────┼────────┼────────┼────────┴──────┴──────┴────────┼────────┼────────┼────────┼──────┼──────┬──────┤
     34 //    │ lctl │ MO(_FN) │  lgui  │  lalt  │         LT(_SMB, spc)         │  ralt  │  rctl  │  left  │  up  │ down │ rght │
     35 //    └──────┴─────────┴────────┴────────┴───────────────────────────────┴────────┴────────┴────────┴──────┴──────┴──────┘
     36 [_BASE] = LAYOUT(
     37   KC_CAPS , KC_MUTE , KC_VOLD , KC_VOLU , KC_MPRV , KC_MPLY , KC_MNXT , KC_BRID , KC_BRIU , KC_SCRN , KC_AIRP , KC_PSCR , KC_MSEL , KC_DEL ,
     38   KC_GRV  , KC_1    , KC_2    , KC_3    , KC_4    , KC_5    , KC_6    , KC_7    , KC_8    , KC_9    , KC_0    , _______ , _______ , KC_BSPC,
     39   KC_TAB  , KC_SCLN , KC_COMM , KC_DOT  , KC_P    , KC_Y    , KC_F    , KC_G    , KC_C    , KC_R    , KC_L    , KC_BSLS , KC_SLSH , _______,
     40   KC_ESC  , HOME_A  , HOME_O  , HOME_E  , HOME_U  , KC_I    , KC_D    , HOME_H  , HOME_T  , HOME_N  , HOME_S  , KC_MINS ,            KC_ENT,
     41   KC_LSFT           , KC_QUOT , KC_Q    , KC_J    , KC_K    , KC_X    , KC_B    , KC_M    , KC_W    , KC_V    , KC_Z    ,           KC_RSFT,
     42   KC_LCTL , MO(_FN) , KC_LGUI , KC_LALT ,           LT(_SMB, KC_SPC)            , KC_RALT , KC_RCTL , KC_LEFT , KC_UP   , KC_DOWN , KC_RGHT
     43 ),
     44 
     45 //    ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
     46 //    │     │     │     │     │     │     │     │     │     │     │     │     │     │     │
     47 //    ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
     48 //    │     │     │     │     │     │     │     │     │     │     │     │     │     │     │
     49 //    ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
     50 //    │     │  &  │  <  │  >  │  %  │  @  │  ^  │  $  │  [  │  ]  │  `  │  !  │  ?  │     │
     51 //    ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┴─────┤
     52 //    │  ~  │  |  │  :  │  (  │  0  │  )  │  {  │  1  │  }  │  =  │  +  │  _  │           │
     53 //    ├─────┴─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼───────────┤
     54 //    │   lsft    │  6  │  7  │  8  │  9  │  #  │  *  │  2  │  3  │  4  │  5  │   rsft    │
     55 //    ├─────┬─────┼─────┼─────┼─────┴─────┴─────┴─────┼─────┼─────┼─────┼─────┼─────┬─────┤
     56 //    │     │     │     │     │                       │     │     │     │     │     │     │
     57 //    └─────┴─────┴─────┴─────┴───────────────────────┴─────┴─────┴─────┴─────┴─────┴─────┘
     58 [_SMB] = LAYOUT(
     59   _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
     60   _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
     61   _______ , KC_AMPR , KC_LT   , KC_GT   , KC_PERC , KC_AT   , KC_CIRC , KC_DLR  , KC_LBRC , KC_RBRC , KC_GRV  , KC_EXLM , KC_QUES , _______,
     62   KC_TILD , KC_PIPE , KC_COLN , KC_LPRN , KC_0    , KC_RPRN , KC_LCBR , KC_1    , KC_RCBR , KC_EQL  , KC_PLUS , KC_UNDS ,           _______,
     63   KC_LSFT           , KC_6    , KC_7    , KC_8    , KC_9    , KC_HASH , KC_ASTR , KC_2    , KC_3    , KC_4    , KC_5    ,           KC_RSFT,
     64   _______ , _______ , _______ , _______ ,                _______                , _______ , _______ , _______ , _______ , _______ , _______
     65 ),
     66 
     67 //    ┌──────┬─────────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
     68 //    │ esc  │  mute   │ vold │ volu │ mprv │ mply │ mnxt │ bRID │ bRIU │ sCRN │ aIRP │ pscr │ msel │ del  │
     69 //    ├──────┼─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
     70 //    │  `   │    1    │  2   │  3   │  4   │  5   │  6   │  7   │  8   │  9   │  0   │  -   │  =   │ bspc │
     71 //    ├──────┼─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
     72 //    │ tab  │    q    │  w   │  e   │  r   │  t   │  y   │  u   │  i   │  o   │  p   │  [   │  ]   │  \   │
     73 //    ├──────┼─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┴──────┤
     74 //    │ caps │    a    │  s   │  d   │  f   │  g   │  h   │  j   │  k   │  l   │  ;   │  '   │     ent     │
     75 //    ├──────┴─────────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼─────────────┤
     76 //    │      lsft      │  z   │  x   │  c   │  v   │  b   │  n   │  m   │  ,   │  .   │  /   │    rsft     │
     77 //    ├──────┬─────────┼──────┼──────┼──────┴──────┴──────┴──────┼──────┼──────┼──────┼──────┼──────┬──────┤
     78 //    │ lctl │ MO(_FN) │ lgui │ lalt │            spc            │ ralt │ rctl │ left │  up  │ down │ rght │
     79 //    └──────┴─────────┴──────┴──────┴───────────────────────────┴──────┴──────┴──────┴──────┴──────┴──────┘
     80 [_QWERTY] = LAYOUT(
     81   KC_ESC  , KC_MUTE , KC_VOLD , KC_VOLU , KC_MPRV , KC_MPLY , KC_MNXT , KC_BRID , KC_BRIU , KC_SCRN , KC_AIRP , KC_PSCR , KC_MSEL , KC_DEL ,
     82   KC_GRV  , 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,
     83   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,
     84   KC_CAPS , KC_A    , KC_S    , KC_D    , KC_F    , KC_G    , KC_H    , KC_J    , KC_K    , KC_L    , KC_SCLN , KC_QUOT ,            KC_ENT,
     85   KC_LSFT           , KC_Z    , KC_X    , KC_C    , KC_V    , KC_B    , KC_N    , KC_M    , KC_COMM , KC_DOT  , KC_SLSH ,           KC_RSFT,
     86   KC_LCTL , MO(_FN) , KC_LGUI , KC_LALT ,                KC_SPC                 , KC_RALT , KC_RCTL , KC_LEFT , KC_UP   , KC_DOWN , KC_RGHT
     87 ),
     88 
     89 //    ┌─────────┬─────┬─────────┬──────────┬─────────┬─────────┬─────────┬─────────┬──────┬─────┬──────┬──────┬──────┬─────────┐
     90 //    │ FN_LOCK │ f1  │   f2    │    f3    │   f4    │   f5    │   f6    │   f7    │  f8  │ f9  │ f10  │ f11  │ f12  │   ins   │
     91 //    ├─────────┼─────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼─────┼──────┼──────┼──────┼─────────┤
     92 //    │         │     │         │          │         │         │         │         │      │     │      │      │      │ QK_BOOT │
     93 //    ├─────────┼─────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼─────┼──────┼──────┼──────┼─────────┤
     94 //    │ QWERTY  │     │ RGB_TOG │ RGB_MOD  │ RGB_HUI │ RGB_SAI │ RGB_SPI │ RGB_VAI │      │     │ paus │      │      │         │
     95 //    ├─────────┼─────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼─────┼──────┼──────┼──────┴─────────┤
     96 //    │  BASE   │     │  sYRQ   │ RGB_RMOD │ RGB_HUD │ RGB_SAD │ RGB_SPD │ RGB_VAD │ sCRL │     │      │      │                │
     97 //    ├─────────┴─────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼─────┼──────┼──────┼────────────────┤
     98 //    │               │         │          │ BL_BRTG │         │  paus   │         │      │     │      │      │                │
     99 //    ├─────────┬─────┼─────────┼──────────┼─────────┴─────────┴─────────┴─────────┼──────┼─────┼──────┼──────┼──────┬─────────┤
    100 //    │         │     │         │          │                BL_STEP                │      │     │ home │ pgup │ pgdn │   end   │
    101 //    └─────────┴─────┴─────────┴──────────┴───────────────────────────────────────┴──────┴─────┴──────┴──────┴──────┴─────────┘
    102 [_FN] = LAYOUT(
    103   FN_LOCK , 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_INS ,
    104   _______ , _______ , _______ , _______  , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , QK_BOOT,
    105   QWERTY  , _______ , RGB_TOG , RGB_MOD  , RGB_HUI , RGB_SAI , RGB_SPI , RGB_VAI , _______ , _______ , KC_PAUS , _______ , _______ , _______,
    106   BASE    , _______ , KC_SYRQ , RGB_RMOD , RGB_HUD , RGB_SAD , RGB_SPD , RGB_VAD , KC_SCRL , _______ , _______ , _______ ,           _______,
    107   _______           , _______ , _______  , BL_BRTG , _______ , KC_BRK  , _______ , _______ , _______ , _______ , _______ ,           _______,
    108   _______ , _______ , _______ , _______  ,                BL_STEP                , _______ , _______ , KC_HOME , KC_PGUP , KC_PGDN , KC_END
    109 ),
    110 
    111 //    ┌─────┬─────────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
    112 //    │     │   f1    │ f2  │ f3  │ f4  │ f5  │ f6  │ f7  │ f8  │ f9  │ f10 │ f11 │ f12 │     │
    113 //    ├─────┼─────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
    114 //    │     │         │     │     │     │     │     │     │     │     │     │     │     │     │
    115 //    ├─────┼─────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
    116 //    │     │         │     │     │     │     │     │     │     │     │     │     │     │     │
    117 //    ├─────┼─────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┴─────┤
    118 //    │     │         │     │     │     │     │     │     │     │     │     │     │           │
    119 //    ├─────┴─────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼───────────┤
    120 //    │               │     │     │     │     │     │     │     │     │     │     │           │
    121 //    ├─────┬─────────┼─────┼─────┼─────┴─────┴─────┴─────┼─────┼─────┼─────┼─────┼─────┬─────┤
    122 //    │     │ MO(_FM) │     │     │                       │     │     │     │     │     │     │
    123 //    └─────┴─────────┴─────┴─────┴───────────────────────┴─────┴─────┴─────┴─────┴─────┴─────┘
    124 [_FN_LOCK] = LAYOUT(
    125   _______ , KC_F1   , KC_F2   , KC_F3   , KC_F4   , KC_F5   , KC_F6   , KC_F7   , KC_F8   , KC_F9   , KC_F10  , KC_F11  , KC_F12  , _______,
    126   _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
    127   _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
    128   _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,           _______,
    129   _______           , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,           _______,
    130   _______ , MO(_FM) , _______ , _______ ,                _______                , _______ , _______ , _______ , _______ , _______ , _______
    131 ),
    132 
    133 //    ┌─────────┬──────┬─────────┬──────────┬─────────┬─────────┬─────────┬─────────┬──────┬──────┬──────┬──────┬──────┬─────┐
    134 //    │ FN_LOCK │ mute │  vold   │   volu   │  mprv   │  mply   │  mnxt   │  bRID   │ bRIU │ sCRN │ aIRP │ pscr │ msel │ ins │
    135 //    ├─────────┼──────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼──────┼──────┼──────┼──────┼─────┤
    136 //    │         │      │         │          │         │         │         │         │      │      │      │      │      │     │
    137 //    ├─────────┼──────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼──────┼──────┼──────┼──────┼─────┤
    138 //    │         │      │ RGB_TOG │ RGB_MOD  │ RGB_HUI │ RGB_SAI │ RGB_SPI │ RGB_VAI │      │      │ paus │      │      │     │
    139 //    ├─────────┼──────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼──────┼──────┼──────┼──────┴─────┤
    140 //    │         │      │  sYRQ   │ RGB_RMOD │ RGB_HUD │ RGB_SAD │ RGB_SPD │ RGB_VAD │ sCRL │      │      │      │            │
    141 //    ├─────────┴──────┼─────────┼──────────┼─────────┼─────────┼─────────┼─────────┼──────┼──────┼──────┼──────┼────────────┤
    142 //    │                │         │          │ BL_BRTG │         │  paus   │         │      │      │      │      │            │
    143 //    ├─────────┬──────┼─────────┼──────────┼─────────┴─────────┴─────────┴─────────┼──────┼──────┼──────┼──────┼──────┬─────┤
    144 //    │         │      │         │          │                BL_STEP                │      │      │ home │ pgup │ pgdn │ end │
    145 //    └─────────┴──────┴─────────┴──────────┴───────────────────────────────────────┴──────┴──────┴──────┴──────┴──────┴─────┘
    146 [_FM] = LAYOUT(
    147   FN_LOCK , KC_MUTE , KC_VOLD , KC_VOLU  , KC_MPRV , KC_MPLY , KC_MNXT , KC_BRID , KC_BRIU , KC_SCRN , KC_AIRP , KC_PSCR , KC_MSEL , KC_INS ,
    148   _______ , _______ , _______ , _______  , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
    149   _______ , _______ , RGB_TOG , RGB_MOD  , RGB_HUI , RGB_SAI , RGB_SPI , RGB_VAI , _______ , _______ , KC_PAUS , _______ , _______ , _______,
    150   _______ , _______ , KC_SYRQ , RGB_RMOD , RGB_HUD , RGB_SAD , RGB_SPD , RGB_VAD , KC_SCRL , _______ , _______ , _______ ,           _______,
    151   _______           , _______ , _______  , BL_BRTG , _______ , KC_BRK  , _______ , _______ , _______ , _______ , _______ ,           _______,
    152   _______ , _______ , _______ , _______  ,                BL_STEP                , _______ , _______ , KC_HOME , KC_PGUP , KC_PGDN , KC_END
    153 )
    154 };
    155 // clang-format off
    156 
    157 // Make sure to keep FN Lock even after reset
    158 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    159     switch (keycode) {
    160         case QWERTY:
    161               if (record->event.pressed) {
    162                 set_single_persistent_default_layer(_QWERTY);
    163               }
    164               return false;
    165             break;
    166         case BASE:
    167               if (record->event.pressed) {
    168                 set_single_persistent_default_layer(_BASE);
    169               }
    170               return false;
    171             break;
    172         case FN_LOCK:
    173             if (record->event.pressed) {
    174                 if (layer_state_is(_FN)) {
    175                     set_single_persistent_default_layer(_FN_LOCK);
    176                 }
    177                 if (layer_state_is(_FM)) {
    178                     set_single_persistent_default_layer(_BASE);
    179                 }
    180             }
    181             return false;
    182             break;
    183         default:
    184             break;
    185     }
    186     return true;
    187 }
    188 
    189 // clang-format off
    190 const char chordal_hold_layout[MATRIX_ROWS][MATRIX_COLS] PROGMEM =
    191     LAYOUT(
    192   'L' , 'L' , 'L' , 'L'  , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R',
    193   'L' , 'L' , 'L' , 'L'  , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R',
    194   'L' , 'L' , 'L' , 'L'  , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R',
    195   'L' , 'L' , 'L' , 'L'  , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R' , 'R' ,       'R',
    196   'L' ,       'L' , 'L'  , 'L' , 'L' , 'R' , 'R' , 'R' , 'R' , 'R',  'R' ,       'R',
    197   'L' , 'L' , 'L' , 'L'  ,       '*' ,             'R' , 'R' , 'R' , 'R' , 'R' , 'R'
    198 );
    199 // clang-format on
    200 // 77