qmk_firmware

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

keymap.c (12214B)


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