qmk_firmware

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

keymap.c (13687B)


      1 /* Copyright 2021 Gary Kong
      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 #include "version.h"
     19 
     20 enum layers {
     21     BASE, // default layer
     22     SYMB, // symbols
     23     MDIA,  // media keys
     24 };
     25 
     26 enum custom_keycodes {
     27   VRSN = SAFE_RANGE,
     28 };
     29 
     30 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     31 /* Keymap 0: Basic layer
     32  *
     33  * ,--------------------------------------------------.           ,--------------------------------------------------.
     34  * |  ESC   |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |  Eject |
     35  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
     36  * |   =    |   1  |   2  |   3  |   4  |   5  |      |           |      |   6  |   7  |   8  |   9  |   0  |   -    |
     37  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
     38  * | Tab    |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |   \    |
     39  * |--------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
     40  * | Caps   |   A  |   S  |   D  |   F  |   G  |  L2  |           |  L1  |   H  |   J  |   K  |   L  |   ;  |    '   |
     41  * |--------+------+------+------+------+------+------'           `------+------+------+------+------+------+--------|
     42  * | LShift |   Z  |   X  |   C  |   V  |   B  |                         |   N  |   M  |   ,  |   .  |   /  | RShift |
     43  * `--------+------+------+------+------+------'                          `-----+------+------+------+------+-------'
     44  *   | CTRL |iGUI\'"|ALT \ | Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
     45  *   `----------------------------------'                                       `----------------------------------'
     46  *                                        ,-------------.       ,-------------.
     47  *                                        |Ctrl/ESC|LALT|       | RGUI |Ctrl/Alt|
     48  *                                 ,------|------|------|       |------+--------+------.
     49  *                                 |      |      | Home |       | PgUp |        |      |
     50  *                                 |BackSp| Del  |------|       |------|  Enter |Space |
     51  *                                 |      |      | End  |       | PgDn |        |      |
     52  *                                 `--------------------'       `----------------------'
     53  *
     54  */
     55 [BASE] = LAYOUT_6x7(
     56 //  Left hand                                                                                             Right hand
     57     KC_ESC,     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_EJCT,
     58     KC_EQL,     KC_1,              KC_2,              KC_3,       KC_4,       KC_5,       _______,        _______,    KC_6,       KC_7,       KC_8,       KC_9,       KC_0,       KC_MINS,
     59     KC_TAB,     KC_Q,              KC_W,              KC_E,       KC_R,       KC_T,       _______,        _______,    KC_Y,       KC_U,       KC_I,       KC_O,       KC_P,       KC_BSLS,
     60     KC_CAPS,    KC_A,              KC_S,              KC_D,       KC_F,       KC_G,       TG(MDIA),       TG(SYMB),   KC_H,       KC_J,       KC_K,       KC_L,       KC_SCLN,    KC_QUOT,
     61     KC_LSFT,    KC_Z,              KC_X,              KC_C,       KC_V,       KC_B,                                   KC_N,       KC_M,       KC_COMM,    KC_DOT,     KC_SLSH,    KC_RSFT,
     62     KC_LCTL,    GUI_T(KC_GRV),     ALT_T(KC_BSLS),    KC_LEFT,    KC_RGHT,                                                        KC_UP,      KC_DOWN,    KC_LBRC,    KC_RBRC,    TT(SYMB),
     63                                                                              CTL_T(KC_ESC), KC_LALT,      KC_RGUI, CTL_T(KC_RALT),
     64                                                                                             KC_HOME,      KC_PGUP,
     65                                                                             KC_BSPC, KC_DEL, KC_END,      KC_PGDN, KC_ENT, KC_SPC
     66 ),
     67 /* Keymap 1: Sybol layer
     68  *
     69  * ,--------------------------------------------------.           ,--------------------------------------------------.
     70  * |  ESC   |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |  Eject |
     71  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
     72  * |        |      |      |      |      |      |      |           |      |      |NUMLCK|   =  |   \  |   *  |PSCREEN |
     73  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
     74  * | Tab    |   !  |   @  |   {  |   }  |   |  |      |           |      |      |   7  |   8  |   9  |   -  |  SLCK  |
     75  * |--------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
     76  * | Caps   |   #  |   $  |   (  |   )  |   `  |      |           |      |      |   4  |   5  |   6  |   +  | PAUSE  |
     77  * |--------+------+------+------+------+------+------'           `------+------+------+------+------+------+--------|
     78  * | LShift |   %  |   ^  |   [  |   ]  |   ~  |                         |      |   1  |   2  |   3  |Enter | RShift |
     79  * `--------+------+------+------+------+------'                          `-----+------+------+------+------+-------'
     80  *   | CTRL |GUI\'"|ALT \ | Left | Right|                                       |  Up  | Down |    . |   0  |       |
     81  *   `----------------------------------'                                       `----------------------------------'
     82  *                                        ,-------------.       ,-------------.
     83  *                                        |Ctrl/ESC|LALT|       | RGUI |Ctrl/Alt|
     84  *                                 ,------|------|------|       |------+--------+------.
     85  *                                 |      |      | Home |       | PgUp |        |      |
     86  *                                 |BackSp| Del  |------|       |------|  Enter |Space |
     87  *                                 |      |      | End  |       | PgDn |        |      |
     88  *                                 `--------------------'       `----------------------'
     89  *
     90  */
     91 [SYMB] = LAYOUT_6x7(
     92 //  Left hand                                                                                       Right hand
     93     KC_ESC,     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_EJCT,
     94     _______,    _______,    _______,            _______,    _______,    _______,    _______,        _______,    _______,    KC_NUM,     KC_PEQL,    KC_PSLS,    KC_PAST,    KC_PSCR,
     95     KC_TAB,     KC_EXLM,    KC_AT,              KC_LCBR,    KC_RCBR,    KC_PIPE,    _______,        _______,    _______,    KC_P7 ,     KC_P8 ,     KC_P9,      KC_MINS,    KC_SCRL,
     96     KC_CAPS,    KC_HASH,    KC_DLR,             KC_LPRN,    KC_RPRN,    KC_GRV,     _______,        _______,    _______,    KC_P4 ,     KC_P5 ,     KC_P6,      KC_PLUS,    KC_PAUS,
     97     KC_LSFT,    KC_PERC,    KC_CIRC,            KC_LBRC,    KC_RBRC,    KC_TILD,                                _______,    KC_P1 ,     KC_P2 ,     KC_P3,      KC_PENT,    KC_RSFT,
     98     KC_LCTL,    KC_LGUI,    ALT_T(KC_INSERT),   KC_LEFT,    KC_RGHT,                                                        KC_UP,      KC_DOWN,    KC_PDOT,    KC_P0,      _______,
     99                                                                      CTL_T(KC_ESC), KC_LALT,       KC_RGUI, CTL_T(KC_RALT),
    100                                                                                     KC_HOME,       KC_PGUP,
    101                                                                     KC_BSPC, KC_DEL, KC_END,       KC_PGDN, KC_ENT, KC_SPC
    102 ),
    103 /* Keymap 2: Media and mouse keys
    104  *
    105  * ,--------------------------------------------------.           ,--------------------------------------------------.
    106  * | SLEEP  |BR_Up |BR_Dn |      |      |      |      |           | Prev | Play | Next | Mute |Vol_Up|Vol_Dn|  Eject |
    107  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
    108  * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
    109  * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
    110  * | Tab    |      | Lclk | MsUp | Rclk |MsWhUp|      |           |      |      |      |      |      |      |        |
    111  * |--------+------+------+------+------+------+------|           |------+------+------+------+------+------+--------|
    112  * | Caps   |      |MsLeft|MsDown|MsRght|MsWhDw|     |           |      |      |      |      |      |      |        |
    113  * |--------+------+------+------+------+------+------'           `------+------+------+------+------+------+--------|
    114  * | LShift |      |MsWhL |      |MsWhR |      |                         |      |      |      |      |      |        |
    115  * `--------+------+------+------+------+------'                          `-----+------+------+------+------+-------'
    116  *   | CTRL |GUI\'"|ALT \ | Left | Right|                                       |  Up  | Down |      |      | QK_BOOT |
    117  *   `----------------------------------'                                       `----------------------------------'
    118  *                                        ,-------------.       ,-------------.
    119  *                                        |Ctrl/ESC|LALT|       | RGUI |Ctrl/Alt|
    120  *                                 ,------|------|------|       |------+--------+------.
    121  *                                 |      |      | Home |       | PgUp |        |      |
    122  *                                 |BackSp| Del  |------|       |------|  Enter |Space |
    123  *                                 |      |      | End  |       | PgDn |        |      |
    124  *                                 `--------------------'       `----------------------'
    125  *
    126  */
    127 [MDIA] = LAYOUT_6x7(
    128 //  Left hand                                                                                          Right hand
    129     KC_SLEP,    KC_BRID,    KC_BRIU,            _______,    _______,      _______,      _______,       KC_MPRV,     KC_MPLY,      KC_MNXT,      KC_MUTE,    KC_VOLD,    KC_VOLU,    KC_EJCT,
    130     _______,    _______,    _______,            _______,    _______,      _______,      _______,       _______,     _______,      _______,      _______,    _______,    _______,    _______,
    131     KC_TAB,     _______,    MS_BTN1,            MS_UP,      MS_BTN2,      MS_WHLU,      _______,       _______,     _______,      _______,      _______,    _______,    _______,    _______,
    132     KC_CAPS,    _______,    MS_LEFT,            MS_DOWN,    MS_RGHT,      MS_WHLD,      _______,       _______,     _______,      _______,      _______,    _______,    _______,    _______,
    133     KC_LSFT,    _______,    MS_WHLL,            _______,    MS_WHLR,      _______,                                  _______,      _______,      _______,    _______,    _______,    _______,
    134     KC_LCTL,    KC_LGUI,    ALT_T(KC_INSERT),   KC_LEFT,    KC_RGHT,                                                              KC_UP,        KC_DOWN,    _______,    _______,    QK_BOOT,
    135                                                                  CTL_T(KC_ESC), KC_LALT,       KC_RGUI, CTL_T(KC_RALT),
    136                                                                                 KC_HOME,       KC_PGUP,
    137                                                                 KC_BSPC, KC_DEL, KC_END,       KC_PGDN, KC_ENT, KC_SPC
    138 ),
    139 };
    140 
    141 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    142     if (record->event.pressed) {
    143         switch (keycode) {
    144             case VRSN:
    145                 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
    146                 return false;
    147         }
    148     }
    149     return true;
    150 }
    151 
    152 // Runs whenever there is a layer state change.
    153 layer_state_t layer_state_set_user(layer_state_t state) {
    154     bajjak_right_led_1_off();
    155     bajjak_right_led_2_off();
    156     bajjak_right_led_3_off();
    157 
    158     uint8_t layer = get_highest_layer(state);
    159     switch (layer) {
    160         case 0:
    161             break;
    162         case 1:
    163             bajjak_right_led_1_on();
    164             break;
    165         case 2:
    166             bajjak_right_led_2_on();
    167             break;
    168         case 3:
    169             bajjak_right_led_3_on();
    170             break;
    171         case 4:
    172             bajjak_right_led_1_on();
    173             bajjak_right_led_2_on();
    174             break;
    175         case 5:
    176             bajjak_right_led_1_on();
    177             bajjak_right_led_3_on();
    178             break;
    179         case 6:
    180             bajjak_right_led_2_on();
    181             bajjak_right_led_3_on();
    182             break;
    183         case 7:
    184             bajjak_right_led_1_on();
    185             bajjak_right_led_2_on();
    186             bajjak_right_led_3_on();
    187             break;
    188         default:
    189             break;
    190     }
    191 
    192     return state;
    193 };