qmk_firmware

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

keymap.c (4538B)


      1 /* Copyright 2022 Jesus Climent  (@climent)
      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 
     20 enum custom_layers {
     21     _QWERTY,
     22     _LOWER,
     23     _RAISE,
     24     _ADJUST
     25 };
     26 
     27 enum custom_keycodes {
     28   QWERTY = SAFE_RANGE,
     29   LWR,
     30   RSE,
     31   ADJ
     32 };
     33 
     34 
     35 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     36 
     37 [_QWERTY] = LAYOUT(
     38      KC_ESC  , KC_1   , KC_2   , KC_3   , KC_4   , KC_5   ,                   KC_6   , KC_7   , KC_8   , KC_9   , KC_0    ,KC_GRV  ,
     39      KC_TAB  , KC_Q   , KC_W   , KC_E   , KC_R   , KC_T   ,                   KC_Y   , KC_U   , KC_I   , KC_O   , KC_P    ,KC_BSPC ,
     40      KC_LCTL , KC_A   , KC_S   , KC_D   , KC_F   , KC_G   ,                   KC_H   , KC_J   , KC_K   , KC_L   , KC_SCLN ,KC_QUOT ,
     41      KC_LSFT , KC_Z   , KC_X   , KC_C   , KC_V   , KC_B   ,                   KC_N   , KC_M   , KC_COMM, KC_DOT , KC_SLSH ,KC_RSFT ,
     42      KC_LCTL,           LWR    , KC_LALT, KC_LGUI, KC_ENT , KC_LBRC, KC_RBRC, KC_SPC , RSE    , KC_NO  ,  KC_NO ,          KC_RCTL 
     43                 
     44   ),
     45 
     46 [_RAISE] = LAYOUT(
     47   _______, _______, _______, _______, _______, _______,                    KC_HOME, KC_END , _______, KC_LCBR, KC_RCBR, KC_TILD,
     48   _______, _______, _______, _______, KC_HOME, KC_END ,                    KC_PGUP, XXXXXXX, KC_UP  , KC_LBRC, KC_RBRC, KC_DEL ,
     49   _______, _______, _______, _______, _______, _______,                    KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_PIPE, KC_ENT ,
     50   _______, _______, _______, _______, _______, _______,                    KC_UNDS, KC_MINS, KC_EQL , KC_PLUS, KC_BSLS, _______,
     51   _______,          _______, _______, _______, KC_SPC , KC_HOME, KC_END  , _______, _______, KC_RGUI, KC_RALT,          _______
     52 ),
     53 
     54 [_LOWER] = LAYOUT(
     55   KC_GRV , KC_F1  , KC_F2  , KC_F3  , KC_F4  , KC_F5  ,                   KC_F6  , KC_F7  , KC_F8  , KC_F9  , KC_F10 , _______,
     56   _______, KC_VOLU, _______, _______, TG(_RAISE), AG_TOGG,                _______, _______, _______, _______, _______, KC_DEL ,
     57   _______, KC_VOLD, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______, 
     58   _______, KC_CAPS, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,
     59   _______,          _______, _______, _______, KC_SPC , KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______
     60 ),
     61 
     62 [_ADJUST] = LAYOUT(
     63   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
     64   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
     65   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
     66   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
     67   _______,          _______, _______, _______, _______ , _______, _______ , _______, _______, _______, _______,         _______
     68 )
     69 
     70 };
     71 
     72 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     73   switch (keycode) {
     74     case LWR:
     75       if (record->event.pressed) {
     76         layer_on(_LOWER);
     77         update_tri_layer(_LOWER, _RAISE, _ADJUST);
     78       } else {
     79         layer_off(_LOWER);
     80         update_tri_layer(_LOWER, _RAISE, _ADJUST);
     81       }
     82       return false;
     83       break;
     84 
     85     case RSE:
     86       if (record->event.pressed) {
     87         layer_on(_RAISE);
     88         update_tri_layer(_LOWER, _RAISE, _ADJUST);
     89       } else {
     90         layer_off(_RAISE);
     91         update_tri_layer(_LOWER, _RAISE, _ADJUST);
     92       }
     93       return false;
     94       break;
     95 
     96     case KC_ESC:
     97      if ((get_mods() & MOD_BIT(KC_LGUI)) == MOD_BIT(KC_LGUI)) {
     98         if (record->event.pressed) {
     99           register_code(KC_GRV);
    100         } else {
    101           unregister_code(KC_GRV);
    102         }
    103         return false;
    104       }
    105       return true;
    106       break;
    107   }
    108   return true;
    109 }
    110