qmk_firmware

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

keymap.c (13143B)


      1 /* Copyright 2021 Richard Nunez <antebios1@gmail.com>
      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 // Each layer gets a name for readability, which is then used in the keymap matrix below.
     20 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
     21 // Layer names don't all need to be of the same length, obviously, and you can also skip them
     22 // entirely and just use numbers.
     23 enum custom_layer {
     24   _QWERTY,
     25   _COLEMAK,
     26   _DVORAK,
     27   _LOWER,
     28   _RAISE,
     29   _ADJUST,
     30 };
     31 
     32 enum custom_keycodes {
     33   LOWER = SAFE_RANGE,
     34   RAISE,
     35   BACKLIT
     36 };
     37 
     38 // TAP DANCE ***********************************************************
     39 //Tap Dance Declarations
     40 enum {
     41   TD_DEL_BSPC = 0,
     42   TD_ESC_GRAVE,
     43   TD_TAB_TILDE,
     44   TD_MINS_UNDS,
     45   TD_EQL_PLUS,
     46   TD_LBRC_LCBR,
     47   TD_RBRC_RCBR,
     48   TD_SCLN_COLN,
     49   TD_QUOT_DQT,
     50   TD_COMM_LABK,
     51   TD_DOT_RABK,
     52   TD_SLSH_QUES,
     53   TD_BSLS_PIPE,
     54   TD_3_F3,
     55   TD_SHIFT_CAPS
     56 };
     57 
     58 // Shift key action:
     59 // Shift held down, then use as normal and use Shift Mode of key.
     60 // Shift tapped, then Capitlize next keystroke only.
     61 // Shift double-tapped, then CAPSLOCK
     62 // Shift double-tapped again, CAPS UNLOCKED
     63 void dance_onshot_lsft(tap_dance_state_t *state, void *user_data) {
     64   switch (state->count) {
     65     case 1: // =>
     66       set_oneshot_mods (MOD_LSFT);
     67       break;
     68     case 2:
     69       register_code (KC_CAPS);
     70       //layer_on (LAYER_NAME);
     71       break;
     72   }
     73 }
     74 
     75 //Tap Dance Definitions
     76 tap_dance_action_t tap_dance_actions[] = {
     77    [TD_DEL_BSPC]  = ACTION_TAP_DANCE_DOUBLE(KC_DEL, KC_BSPC),
     78    [TD_ESC_GRAVE]  = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_GRAVE),
     79    [TD_TAB_TILDE]  = ACTION_TAP_DANCE_DOUBLE(KC_TAB, KC_TILDE),
     80 
     81    [TD_MINS_UNDS]  = ACTION_TAP_DANCE_DOUBLE(KC_MINS, KC_UNDS),
     82    [TD_EQL_PLUS]  = ACTION_TAP_DANCE_DOUBLE(KC_EQL, KC_PLUS),
     83 
     84    [TD_LBRC_LCBR]  = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_LCBR),
     85    [TD_RBRC_RCBR]  = ACTION_TAP_DANCE_DOUBLE(KC_RBRC, KC_RCBR),
     86 
     87    [TD_SCLN_COLN]  = ACTION_TAP_DANCE_DOUBLE(KC_SCLN, KC_COLN),
     88    [TD_QUOT_DQT]  = ACTION_TAP_DANCE_DOUBLE(KC_QUOT, KC_DQT),
     89 
     90    [TD_COMM_LABK]  = ACTION_TAP_DANCE_DOUBLE(KC_COMM, KC_LABK),
     91    [TD_DOT_RABK]  = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_RABK),
     92    [TD_SLSH_QUES]  = ACTION_TAP_DANCE_DOUBLE(KC_SLSH, KC_QUES),
     93    [TD_BSLS_PIPE]  = ACTION_TAP_DANCE_DOUBLE(KC_BSLS, KC_PIPE),
     94 
     95    [TD_3_F3]  = ACTION_TAP_DANCE_DOUBLE(KC_3, KC_F3),
     96 
     97    [TD_SHIFT_CAPS] = ACTION_TAP_DANCE_FN(dance_onshot_lsft)
     98 };
     99 
    100 // Fillers to make layering more clear
    101 // #define _______ KC_TRNS
    102 // #define XXXXXXX KC_NO
    103 
    104 #define KC_L1 LOWER
    105 #define KC_L2 RAISE
    106 // MO(_LOWER)
    107 // MO(_RAISE)
    108 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    109 
    110 /* Qwerty
    111  * ,-------------------------------------------------------------------------------------------------.
    112  * | DEL  | Bksp |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |   -  |   =  |
    113  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
    114  * | HOME | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |   [  |   ]  |
    115  * |------+------+------+------+------+------+-------------+------+------+------+------+------+------|
    116  * | PGUP | CAPS |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |   '  | Enter|
    117  * |------+------+------+------+------+------+------|------+------+------+------+------+------+------|
    118  * | PGDN | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |   \  | Shift|
    119  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
    120  * | END  | Ctrl | Win  | Alt  | Lower|    Space    |    Space    |Raise | Alt  | Prop | Ctrl | Esc  |
    121  * `-------------------------------------------------------------------------------------------------'
    122  */
    123   [_QWERTY] = LAYOUT(
    124   //,---------------+-----------------+-------+-------+----------+------+----+----+------+----------------+---------------+----------------+----------------+----------------.
    125      TD(TD_DEL_BSPC), KC_BSPC         , KC_1  , KC_2  , KC_3     , KC_4 ,KC_5,KC_6,KC_7  , KC_8           , KC_9          , KC_0           ,TD(TD_MINS_UNDS),TD(TD_EQL_PLUS) ,
    126   //|---------------+-----------------+-------+-------+----------+------+----+----+------+----------------+---------------+----------------+----------------+----------------|
    127      KC_HOME        , TD(TD_TAB_TILDE),KC_Q   ,KC_W   ,KC_E      ,KC_R  ,KC_T,KC_Y,KC_U  , KC_I           , KC_O          , KC_P           ,TD(TD_LBRC_LCBR),TD(TD_RBRC_RCBR),
    128   //|---------------+-----------------+-------+-------+----------+------+----+----+------+----------------+---------------+----------------+----------------+----------------|
    129      KC_PGUP        , KC_CAPS         ,KC_A   ,KC_S   ,KC_D      ,KC_F  ,KC_G,KC_H,KC_J  ,KC_K            , KC_L          ,TD(TD_SCLN_COLN),TD(TD_QUOT_DQT) ,KC_ENT          ,
    130   //|---------------+-----------------+-------+-------+----------+------+----+----+------+----------------+---------------+----------------+----------------+----------------|
    131      KC_PGDN        ,TD(TD_SHIFT_CAPS),KC_Z   ,KC_X   ,KC_C      ,KC_V  ,KC_B,KC_N,KC_M  ,TD(TD_COMM_LABK),TD(TD_DOT_RABK),TD(TD_SLSH_QUES),TD(TD_BSLS_PIPE),KC_RSFT         ,
    132   //|---------------+-----------------+-------+-------+----------+------+----+----+------+----------------+---------------+----------------+----------------+----------------|
    133      KC_END         , KC_LCTL         ,KC_LGUI,KC_LALT, KC_L1    ,  KC_SPACE ,  KC_SPACE , KC_L2          ,KC_RALT        ,MS_BTN2         ,KC_RCTL         ,TD(TD_ESC_GRAVE)
    134   //`---------------+-----------------+-------+-------+----------+------+----+-----------+----------------+---------------+----------------+----------------+----------------'
    135   ),
    136 
    137 /* Lower
    138  * ,-------------------------------------------------------------------------------------------------.
    139  * | INS  |  ~`  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |
    140  * |------+------+------+------+------+------+------+-------------+------+------+------+------+------|
    141  * |      |  ~   |      |  UP  |      |      |      |      |      | Next | Vol- | Vol+ | Play |      |
    142  * |------+------+------+------+------+------+------+-------------+------+------+------+------+------|
    143  * |      |      | LEFT | DOWN |RIGHT |      |      |      |      |      |      |      |      |Enter |
    144  * |------+------+------+------+------+------+------|------+------+------+------+------+------+------|
    145  * |      |      |      |      |      |ISO ~ |ISO | |      |      |      |      |      |  UP  |      |
    146  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
    147  * |      |      |      |      |      |             |             |      |      | Left | Down |Right |
    148  * `------------------------------------------------------------------------------------------+------'
    149  */
    150 [_LOWER] = LAYOUT(
    151   KC_INS,  KC_GRV,  KC_F1,   KC_F2,   KC_F3   ,   KC_F4  ,   KC_F5  ,   KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,
    152   _______, KC_TILD, _______, KC_UP,   _______ , _______  , _______  , _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______,
    153   _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______  , _______  , _______, _______, _______, _______, _______, _______, KC_ENT,
    154   _______, _______, _______, _______, _______ ,S(KC_NUHS),S(KC_NUBS), _______, _______, _______, _______, _______, KC_UP  , _______,
    155   _______, _______, _______, _______, _______ ,      _______        ,      _______    , _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT
    156 ),
    157 
    158 /* Raise
    159  * ,-------------------------------------------------------------------------------------------------.
    160  * |      |      |      |      |      |      |      |      |      |      |      |      |      |      |
    161  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
    162 
    163  * ,-------------------------------------------------------------------------------------------------.
    164  * | INS  | Bksp |      |      |      |      |      |      |  7   |  8   |  9   |      |      |      |
    165  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
    166  * |PrtScr|      |      |      |      |      |      |      |  4   |  5   |  6   |  -   |  /   |      |
    167  * |------+------+------+------+------+-------------+------+------+------+------+------+------+------|
    168  * |ScrLck|      |      |      |      |      |      |      |  1   |  2   |  3   |  +   |  *   |Enter |
    169  * |------+------+------+------+------+------|------+------+------+------+------+------+------+------|
    170  * |Pause |      |      |      |      |ISO # |ISO / |      |  0   |  ,   |  .   |  =   |      |      |
    171  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
    172  * |CtAlDl|      |      |      |      |             |             |      |      |      |      |      |
    173  * `-------------------------------------------------------------------------------------------------'
    174  */
    175 [_RAISE] = LAYOUT(
    176   KC_INS,  KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  KC_7,  KC_8,   KC_9,  _______, _______, _______,
    177   KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  KC_4,  KC_5,   KC_6,  KC_MINS, KC_SLSH, XXXXXXX,
    178   KC_SCRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  KC_1,  KC_2,   KC_3,  KC_PLUS, KC_ASTR, KC_ENT,
    179   KC_PAUS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  KC_NUHS, KC_NUBS,XXXXXXX,  KC_0,  KC_COMM, KC_DOT,KC_EQL, XXXXXXX, _______,
    180   LALT(LCTL(KC_DEL)), _______, _______, _______, _______,     _______,           _______,     _______,_______,XXXXXXX, XXXXXXX, XXXXXXX
    181 ),
    182 
    183 /* Adjust (Lower + Raise)
    184  * ,-------------------------------------------------------------------------------------------------.
    185  * |      |      |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |
    186  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
    187  * |      |      |      | Reset|      |      |      |      |      |      |      |      |      |  Del |
    188  * |------+------+------+------+------+------+------+-------------+------+------+------+------+------|
    189  * |      |      |      |      |      |Audoff|Aud on|AGnorm|AGswap|      |      |      |      |      |
    190  * |------+------+------+------+------+------+------+------|------+------+------+------+------+------|
    191  * |      |      |      |Voice-|Voice+|Musoff|Mus on|      |      |      |      |      |      |      |
    192  * |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
    193  * |      |      |      |      |      |      |      |             |      |      |      |      |      |
    194  * `-------------------------------------------------------------------------------------------------'
    195  */
    196 [_ADJUST] = LAYOUT(
    197   _______, _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,
    198   XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL,
    199   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
    200   XXXXXXX, XXXXXXX, XXXXXXX, AU_PREV, AU_NEXT, MU_ON,   MU_OFF,  MI_ON,   MI_OFF,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
    201   XXXXXXX, _______, _______, _______, _______,     _______,            _______,    _______,_______,_______, _______, _______
    202 )
    203 
    204 };
    205 
    206 
    207 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    208   switch (keycode) {
    209         case LOWER:
    210           if (record->event.pressed) {
    211             layer_on(_LOWER);
    212             update_tri_layer(_LOWER, _RAISE, _ADJUST);
    213           } else {
    214             layer_off(_LOWER);
    215             update_tri_layer(_LOWER, _RAISE, _ADJUST);
    216           }
    217           return false;
    218           break;
    219         case RAISE:
    220           if (record->event.pressed) {
    221             layer_on(_RAISE);
    222             update_tri_layer(_LOWER, _RAISE, _ADJUST);
    223           } else {
    224             layer_off(_RAISE);
    225             update_tri_layer(_LOWER, _RAISE, _ADJUST);
    226           }
    227           return false;
    228           break;
    229         case BACKLIT:
    230           if (record->event.pressed) {
    231             register_code(KC_RSFT);
    232             #ifdef BACKLIGHT_ENABLE
    233               backlight_step();
    234             #endif
    235           } else {
    236             unregister_code(KC_RSFT);
    237           }
    238           return false;
    239           break;
    240       }
    241     return true;
    242 };
    243