qmk_firmware

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

keymap.c (7827B)


      1 /* Copyright 2020 noclew
      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 #include QMK_KEYBOARD_H
     17 
     18 // Defines names for use in layer keycodes and the keymap
     19 enum layer_names {
     20     _BASE,
     21     _LOWER,
     22     _RAISE,
     23     _ADJUST
     24 };
     25 
     26 // Defines the keycodes used by our macros in process_record_user
     27 enum custom_keycodes {
     28     BASE = SAFE_RANGE,
     29     LOWER,
     30     RAISE,
     31 };
     32 
     33 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     34 
     35     /* BASE
     36      * ---------------------------------------------------------------------------------------------------------
     37      * |  `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  |  -   |  =   | Bspc | Mute |
     38      * ---------------------------------------------------------------------------------------------------------
     39      * | Tab     |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  |    \    |   [  |  ]   |
     40      *----------------------------------------------------------------------------------------------------------
     41      * |   Esc      |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  | Enter |  N/A |  '  |
     42      *----------------------------------------------------------------------------------------------------------
     43      * |  N/A  |  Shift |   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |  Shift   | Del |
     44      *----------------------------------------------------------------------------------------------------------
     45      * | Ctrl |  GUI |  Alt  | Lower |  Space  |  Space  |  Space  | Raise |  Alt | Left | Down |  Up  | Right |
     46      *----------------------------------------------------------------------------------------------------------
     47      */
     48 
     49     [_BASE] = LAYOUT_all(
     50     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,    KC_AUDIO_MUTE,
     51     KC_TAB ,                KC_Q   ,    KC_W   ,    KC_E   ,    KC_R   ,    KC_T   ,    KC_Y   ,    KC_U   ,    KC_I   ,    KC_O   ,    KC_P   ,        KC_BSLS,            KC_LBRC,    KC_RBRC,
     52     KC_ESC ,                KC_A   ,    KC_S   ,    KC_D   ,    KC_F   ,    KC_G   ,    KC_H   ,    KC_J   ,    KC_K   ,    KC_L   ,    KC_SCLN,        KC_ENT ,            KC_NO,      KC_QUOT,
     53     KC_NO  ,    KC_LSFT,    KC_Z   ,    KC_X   ,    KC_C   ,    KC_V   ,    KC_B   ,    KC_N   ,    KC_M   ,    KC_COMM,    KC_DOT ,    KC_SLSH,            RSFT_T(KC_QUOT),            KC_DEL,
     54     KC_LCTL,    KC_LGUI,    KC_LALT,    LOWER  ,    KC_SPC ,            KC_SPC ,        KC_SPC ,                RAISE,      KC_RALT,                KC_LEFT,    KC_DOWN,    KC_UP,      KC_RGHT
     55     ),
     56 
     57     [_LOWER] = LAYOUT_all(
     58     _______,                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_F12 ,    _______,
     59     KC_BSPC,                KC_SLSH,    KC_7   ,    KC_8   ,    KC_9   ,    KC_PPLS,    KC_CIRC,    KC_LBRC,    KC_RBRC,    KC_AT  ,    KC_EXLM,        KC_BSLS,            _______,    _______,
     60     KC_EQL ,                KC_0   ,    KC_4   ,    KC_5   ,    KC_6   ,    KC_MINS,    KC_PIPE,    KC_LPRN,    KC_RPRN,    KC_HASH,    KC_DQUO,        _______,            _______,    _______,
     61     KC_ENT ,    _______,    KC_PAST,    KC_1   ,    KC_2   ,    KC_3   ,    KC_UNDS,    KC_DLR ,    KC_LCBR,    KC_RCBR,    KC_AMPR,    KC_PERC,                _______,                _______,
     62     _______,    _______,    _______,    _______,    _______,            _______,        _______,                _______,    _______,                _______,    _______,    _______,    _______
     63     ),
     64 
     65     [_RAISE] = LAYOUT_all(
     66     _______,                _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,
     67     _______,                _______,    _______,    _______,    _______,    _______,    _______,    KC_HOME,    KC_BSPC,    KC_DEL,     KC_END ,        _______,            _______,    _______,
     68     _______,                _______,    _______,    _______,    _______,    _______,    KC_LEFT,    KC_DOWN,    KC_UP,      KC_RGHT,    KC_QUOT,        _______,            _______,    _______,
     69     _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    KC_PGUP,    _______,    _______,    KC_PGDN,                _______,                _______,
     70     _______,    _______,    _______,    _______,    _______,            _______,        _______,                _______,    _______,                _______,    _______,    _______,    _______
     71     ),
     72 
     73     [_ADJUST] = LAYOUT_all(
     74     QK_BOOT  ,                _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,  DB_TOGG,
     75     _______,                UG_TOGG,    UG_PREV,    UG_NEXT,    UG_VALD,    UG_VALU,    _______,    _______,    _______,    _______,    _______,        _______,            _______,    _______,
     76     KC_CAPS,                _______,    UG_HUED,    UG_HUEU,    UG_SATD,    UG_SATU,    _______,    _______,    _______,    _______,    _______,        _______,            _______,    _______,
     77     _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,    _______,                _______,                _______,
     78     _______,    _______,    _______,    _______,    _______,            _______,        _______,                _______,    _______,                _______,    _______,    _______,    _______
     79     )
     80 };
     81 
     82 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     83     switch (keycode) {
     84 
     85         case LOWER:
     86             if (record->event.pressed) {
     87                 layer_on(_LOWER);
     88                 update_tri_layer(_LOWER, _RAISE, _ADJUST);
     89             } else {
     90                 layer_off(_LOWER);
     91                 update_tri_layer(_LOWER, _RAISE, _ADJUST);
     92             }
     93         return false;
     94 
     95         case RAISE:
     96             if (record->event.pressed) {
     97                 layer_on(_RAISE);
     98                 update_tri_layer(_LOWER, _RAISE, _ADJUST);
     99             } else {
    100                 layer_off(_RAISE);
    101                 update_tri_layer(_LOWER, _RAISE, _ADJUST);
    102             }
    103         return false;
    104 
    105     }
    106     return true;
    107 }
    108 
    109 bool encoder_update_user(uint8_t index, bool clockwise) {
    110     /* With an if statement we can check which encoder was turned. */
    111     if (index == 0) { /* First encoder */
    112         /* And with another if statement we can check the direction. */
    113         if (clockwise) {
    114             if (IS_LAYER_ON(_LOWER)){
    115                 tap_code(KC_RIGHT);
    116             } else {
    117                 tap_code(KC_VOLU);
    118             }
    119         } else {
    120             if (IS_LAYER_ON(_LOWER)){
    121                 tap_code(KC_LEFT);
    122             } else {
    123                 tap_code(KC_VOLD);
    124             }
    125         }
    126 
    127     } else if (index == 1) { /* Second encoder. Only supported by Elite-C */
    128         if (clockwise) {
    129             tap_code(KC_RIGHT);
    130         } else {
    131             tap_code(KC_LEFT);
    132         }
    133     }
    134     return true;
    135 }