qmk_firmware

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

keymap.c (18274B)


      1 /* Copyright 2023 Etienne Collin (@etiennecollin)
      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 3 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 <https://www.gnu.org/licenses/>.
     15  */
     16 
     17 #include QMK_KEYBOARD_H
     18 
     19 enum custom_layers {
     20     COL,
     21     QWE,
     22     GAM,
     23     MED,
     24     NAV,
     25     MOS,
     26     SYM,
     27     NUM,
     28     FUN,
     29     SYS,
     30 };
     31 
     32 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     33   [COL] = LAYOUT_split_3x5_3(
     34   // -----------------------------------------                    -----------------------------------------
     35   // |   q   |   w   |   f   |   p   |   b   |                    |   j   |   l   |   u   |   y   |   '   |
     36   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     37   // |   a   |   r   |   s   |   t   |   g   |                    |   m   |   n   |   e   |   i   |   o   |
     38   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     39   // |   z   |   x   |   c   |   d   |   v   |                    |   k   |   h   |   ,   |   .   |   /   |
     40   // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     41   //                 |  esc  |  spc  |  tab  |                    |  ent  |  bsp  |  del  |
     42   //                 --------+-------+--------                    --------+-------+--------
     43     KC_Q,               KC_W,               KC_F,               KC_P,               KC_B,               KC_J,               KC_L,               KC_U,               KC_Y,               KC_QUOT,
     44     LGUI_T(KC_A),       LALT_T(KC_R),       LCTL_T(KC_S),       LSFT_T(KC_T),       KC_G,               KC_M,               LSFT_T(KC_N),       LCTL_T(KC_E),       LALT_T(KC_I),       LGUI_T(KC_O),
     45     KC_Z,               KC_X,               KC_C,               KC_D,               KC_V,               KC_K,               KC_H,               KC_COMM,            KC_DOT,             KC_SLSH,
     46                                             LT(MED, KC_ESC),    LT(NAV, KC_SPC),    LT(MOS, KC_TAB),    LT(SYM, KC_ENT),    LT(NUM, KC_BSPC),    LT(FUN, KC_DEL)
     47   ),
     48   [QWE] = LAYOUT_split_3x5_3(
     49   // -----------------------------------------                    -----------------------------------------
     50   // |   q   |   w   |   e   |   r   |   t   |                    |   y   |   u   |   i   |   o   |   p   |
     51   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     52   // |   a   |   s   |   d   |   f   |   g   |                    |   h   |   j   |   k   |   l   |   '   |
     53   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     54   // |   z   |   x   |   c   |   v   |   b   |                    |   n   |   m   |   ,   |   .   |   /   |
     55   // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     56   //                 |  esc  |  spc  |  tab  |                    |  ent  |  bsp  |  del  |
     57   //                 --------+-------+--------                    --------+-------+--------
     58     KC_Q,               KC_W,               KC_E,               KC_R,               KC_T,               KC_Y,               KC_U,               KC_I,               KC_O,               KC_P,
     59     LGUI_T(KC_A),       LALT_T(KC_S),       LCTL_T(KC_D),       LSFT_T(KC_F),       KC_G,               KC_H,               LSFT_T(KC_J),       LCTL_T(KC_K),       LALT_T(KC_L),       LGUI_T(KC_QUOT),
     60     KC_Z,               KC_X,               KC_C,               KC_V,               KC_B,               KC_N,               KC_M,               KC_COMM,            KC_DOT,             KC_SLSH,
     61                                             LT(MED, KC_ESC),    LT(NAV, KC_SPC),    LT(MOS, KC_TAB),    LT(SYM, KC_ENT),    LT(NUM, KC_BSPC),    LT(FUN, KC_DEL)
     62   ),
     63   [GAM] = LAYOUT_split_3x5_3(
     64   // -----------------------------------------                    -----------------------------------------
     65   // |  tab  |   q   |   w   |   e   |   r   |                    |   t   |   y   |   u   |   i   |   o   |
     66   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     67   // |  sht  |   a   |   s   |   d   |   f   |                    |   g   |   h   |   j   |   k   |   l   |
     68   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     69   // |  ctl  |   z   |   x   |   c   |   v   |                    |   b   |   n   |   m   |   ,   |   .   |
     70   // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     71   //                 |  alt  |  cps  |  spc  |                    |  ent  |  bsp  |  esc  |
     72   //                 --------+-------+--------                    --------+-------+--------
     73     KC_TAB,             KC_Q,               KC_W,               KC_E,               KC_R,               KC_T,               KC_Y,               KC_U,               KC_I,               KC_O,
     74     KC_LSFT,            KC_A,               KC_S,               KC_D,               KC_F,               KC_G,               KC_H,               KC_J,               KC_K,               KC_L,
     75     KC_LCTL,            KC_Z,               KC_X,               KC_C,               KC_V,               KC_B,               KC_N,               KC_M,               KC_COMM,            KC_DOT,
     76                                             KC_LALT,            KC_CAPS,            KC_SPC,             LT(SYM, KC_ENT),    LT(NUM, KC_BSPC),   LT(FUN, KC_ESC)
     77   ),
     78   [MED] = LAYOUT_split_3x5_3(
     79   // -----------------------------------------                    -----------------------------------------
     80   // |       |       |       |       |       |                    |       |       |       |       |       |
     81   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     82   // |  gui  |  alt  |  ctl  |  sht  |       |                    |       |  prev | vol - | vol + |  next |
     83   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     84   // |       |       |       |       |       |                    |       |       |       |       |       |
     85   // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     86   //                 |  ___  |       |       |                    |  stop | pause |  mute |
     87   //                 --------+-------+--------                    --------+-------+--------
     88     XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
     89     KC_LGUI,            KC_LALT,            KC_LCTL,            KC_LSFT,            XXXXXXX,            XXXXXXX,            KC_MPRV,            KC_VOLD,            KC_VOLU,            KC_MNXT,
     90     XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            KC_MRWD,            XXXXXXX,            XXXXXXX,            KC_MFFD,
     91                                             _______,            XXXXXXX,            XXXXXXX,            KC_MSTP,            KC_MPLY,            KC_MUTE
     92   ),
     93   [NAV] = LAYOUT_split_3x5_3(
     94   // -----------------------------------------                    -----------------------------------------
     95   // |       |       |       |       |       |                    |       |       |       |       |       |
     96   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     97   // |  gui  |  alt  |  ctl  |  sht  |       |                    |  cps  |   ←   |   ↓   |   ↑   |   →   |
     98   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
     99   // |       |       |       |       |       |                    | insrt | home  | pageu | paged |  end  |
    100   // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    101   //                 |       |  ___  |       |                    |  ent  |  bsp  |  del  |
    102   //                 --------+-------+--------                    --------+-------+--------
    103     XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
    104     KC_LGUI,            KC_LALT,            KC_LCTL,            KC_LSFT,            XXXXXXX,            KC_CAPS,            KC_LEFT,            KC_DOWN,            KC_UP,              KC_RGHT,
    105     XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            KC_INS,             KC_HOME,            KC_PGDN,            KC_PGUP,            KC_END,
    106                                             XXXXXXX,            _______,            XXXXXXX,            KC_ENT,             KC_BSPC,            KC_DEL
    107   ),
    108   [MOS] = LAYOUT_split_3x5_3(
    109   // -----------------------------------------                    -----------------------------------------
    110   // |       |       |       |       |       |                    |       | acc0  | acc1  |  acc2 |       |
    111   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    112   // |  gui  |  alt  |  ctl  |  sht  |       |                    |       |   ←   |   ↓   |   ↑   |   →   |
    113   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    114   // |       |       |       |       |       |                    |       |  w←   |  w↓   |  w↑   |  w→   |
    115   // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    116   //                 |       |       |  ___  |                    | left  | right |  mid  |
    117   //                 --------+-------+--------                    --------+-------+--------
    118     XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            MS_ACL0,            MS_ACL1,            MS_ACL2,            XXXXXXX,
    119     KC_LGUI,            KC_LALT,            KC_LCTL,            KC_LSFT,            XXXXXXX,            XXXXXXX,            MS_LEFT,            MS_DOWN,            MS_UP,              MS_RGHT,
    120     XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            MS_WHLL,            MS_WHLD,            MS_WHLU,            MS_WHLR,
    121                                             XXXXXXX,            XXXXXXX,            _______,            MS_BTN1,            MS_BTN2,            MS_BTN3
    122   ),
    123   [SYM] = LAYOUT_split_3x5_3(
    124   // -----------------------------------------                    -----------------------------------------
    125   // |   {   |   &   |   *   |   (   |   }   |                    |       |       |       |       |       |
    126   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    127   // |   :   |   $   |   %   |   ^   |   +   |                    |       |  sht  |  ctl  |  alt  |  gui  |
    128   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    129   // |   ~   |   !   |   @   |   #   |   |   |                    |       |       |       |       |       |
    130   // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    131   //                 |   (   |   )   |   _   |                    |  ___  |       |       |
    132   //                 --------+-------+--------                    --------+-------+--------
    133     KC_LCBR,            KC_AMPR,            KC_ASTR,            KC_LPRN,            KC_RCBR,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
    134     KC_COLN,            KC_DLR,             KC_PERC,            KC_CIRC,            KC_PLUS,            XXXXXXX,            KC_LSFT,            KC_LCTL,            KC_LALT,            KC_LGUI,
    135     KC_TILD,            KC_EXLM,            KC_AT,              KC_HASH,            KC_PIPE,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
    136                                             KC_LPRN,            KC_RPRN,            KC_UNDS,            _______,            XXXXXXX,            XXXXXXX
    137   ),
    138   [NUM] = LAYOUT_split_3x5_3(
    139   // -----------------------------------------                    -----------------------------------------
    140   // |  [ {  |  7 &  |  8 *  |  9 (  |  ] }  |                    |       |       |       |       |       |
    141   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    142   // |  ; :  |  4 $  |  5 %  |  6 ^  |  = +  |                    |       |  sht  |  ctl  |  alt  |  gui  |
    143   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    144   // |  ` ~  |  1 !  |  2 @  |  3 #  |  \ |  |                    |       |       |       |       |       |
    145   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    146   //                 |  . >  |  0 )  |  - _  |                    |       |  ___  |       |
    147   //                 --------+-------+--------                    --------+-------+--------
    148     KC_LBRC,            KC_7,               KC_8,               KC_9,               KC_RBRC,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
    149     KC_SCLN,            KC_4,               KC_5,               KC_6,               KC_EQL,             XXXXXXX,            KC_LSFT,            KC_LCTL,            KC_LALT,            KC_LGUI,
    150     KC_GRV,             KC_1,               KC_2,               KC_3,               KC_BSLS,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
    151                                             KC_DOT,             KC_0,               KC_MINS,            XXXXXXX,            _______,            XXXXXXX
    152   ),
    153   [FUN] = LAYOUT_split_3x5_3(
    154   // -----------------------------------------                    -----------------------------------------
    155   // |  F12  |  F 7  |  F 8  |  F 9  | PrScr |                    |       |       |       |       |       |
    156   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    157   // |  F11  |  F 4  |  F 5  |  F 6  | pause |                    |       |  sht  |  ctl  |  alt  |  gui  |
    158   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    159   // |  F10  |  F 1  |  F 2  |  F 3  | scrlk |                    |       |       |       |       |       |
    160   // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    161   //                 |  app  |  spc  |  tab  |                    |       |       |  ___  |
    162   //                 --------+-------+--------                    --------+-------+--------
    163     KC_F12,             KC_F7,              KC_F8,              KC_F9,              KC_PSCR,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
    164     KC_F11,             KC_F4,              KC_F5,              KC_F6,              KC_PAUS,            XXXXXXX,            KC_LSFT,            KC_LCTL,            KC_LALT,            KC_LGUI,
    165     KC_F10,             KC_F1,              KC_F2,              KC_F3,              KC_SCRL,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
    166                                             KC_APP,             KC_SPC,             KC_TAB,             XXXXXXX,            XXXXXXX,            _______
    167   ),
    168   [SYS] = LAYOUT_split_3x5_3(
    169   // -----------------------------------------                    -----------------------------------------
    170   // | BOOT  |       | GAME  | QWERT | COLMK |                    | COLMK | QWERT | GAME  |       | BOOT  |
    171   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    172   // |       |       |       |       |       |                    |       |       |       |       |       |
    173   // |-------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    174   // |       |       |       |       |       |                    |       |       |       |       |       |
    175   // --------+-------+-------+-------+-------|                    |-------+-------+-------+-------+-------|
    176   //                 |       |       |       |                    |       |       |       |
    177   //                 --------+-------+--------                    --------+-------+--------
    178     QK_BOOT,            XXXXXXX,            DF(GAM),            DF(QWE),            DF(COL),            DF(COL),            DF(QWE),            DF(GAM),            XXXXXXX,            QK_BOOT,
    179     XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
    180     XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,
    181                                             _______,            XXXXXXX,            XXXXXXX,            XXXXXXX,            XXXXXXX,            _______
    182   )
    183 };
    184 
    185 const uint16_t PROGMEM combo_sys[] = {LT(MED, KC_ESC), LT(FUN, KC_DEL), COMBO_END};
    186 const uint16_t PROGMEM combo_sys_gam[] = {KC_LALT, LT(FUN, KC_ESC), COMBO_END};
    187 
    188 combo_t key_combos[] = {
    189   COMBO(combo_sys, MO(SYS)),
    190   COMBO(combo_sys_gam, MO(SYS))
    191 };