qmk_firmware

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

keymap.c (6714B)


      1 /* Copyright 2019 Branden Byers
      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 enum layers {
     20     _BASE,          // base layer
     21     _LAYERS,        // layer of all layers
     22     _MUSIC,         // music mode
     23     _MUSIC_4_LIFE,  // music mode until unplugged
     24     _MOUSE,         // mousekeys
     25     _TERMINAL,      // terminal
     26     _ADMIN          // admin duties
     27 };
     28 
     29 enum custom_keycodes {
     30     TERM_ABOUT = SAFE_RANGE,
     31     TERM_PRINT,
     32     TERM_FLUSH,
     33     TERM_HELP,
     34     CKEYS_ABOUT,
     35 };
     36 
     37 
     38 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     39     /* BASE (numpad)
     40      * ,-----------------------.
     41      * |  7  |  8  |  9  |  /  | <-- Hold for LAYERS
     42      * |-----+-----+-----+-----|
     43      * |  4  |  5  |  6  |  *  |
     44      * |-----+-----+-----+-----|
     45      * |  1  |  2  |  3  |  -  |
     46      * |-----+-----+-----+-----|
     47      * |  0  |  .  |  =  |  +  |
     48      * `-----------------------'
     49      */
     50     [_BASE] = LAYOUT_ortho_4x4(
     51         KC_P7,   KC_P8,   KC_P9,   LT(_LAYERS, KC_PSLS),
     52         KC_P4,   KC_P5,   KC_P6,   KC_PAST,
     53         KC_P1,   KC_P2,   KC_P3,   KC_PMNS,
     54         KC_P0,   KC_PDOT, KC_PEQL, KC_PPLS
     55     ),
     56     /* LAYERS
     57      * ,---------------------------.
     58      * |  MUSIC  |     |     |  X  |
     59      * |---------+-----+-----+-----|
     60      * |  MOUSE  |     |     |     |
     61      * |---------+-----+-----+-----|
     62      * |TERMINAL |     |     |     |
     63      * |---------+-----+-----+-----|
     64      * |  ADMIN  |     |     |     |
     65      * `---------------------------'
     66      */
     67     [_LAYERS] = LAYOUT_ortho_4x4(
     68           TG(_MUSIC),    _______, _______, _______,
     69           TG(_MOUSE),    _______, _______, _______,
     70           TG(_TERMINAL), _______, _______, _______,
     71           TG(_ADMIN),    _______, _______, _______
     72     ),
     73     /* MUSIC
     74      * ,-----------------------.
     75      * |  X  |     |     |  X  |
     76      * |-----+-----+-----+-----|
     77      * |     |     |     |4EVER|
     78      * |-----+-----+-----+-----|
     79      * | OFF |     |     |     |
     80      * |-----+-----+-----+-----|
     81      * |  ON |     |     |MODES|
     82      * `-----------------------'
     83      */
     84     // TODO: Make this music layer the one to jump to other music layers (different octaves)
     85     [_MUSIC] = LAYOUT_ortho_4x4(
     86         _______,  _______, _______, _______,
     87         _______,  _______, _______, TG(_MUSIC_4_LIFE),
     88         MU_OFF,   _______, _______, _______,
     89         MU_ON,    _______, _______, MU_NEXT
     90     ),
     91     /* MUSIC_4_LIFE
     92      * ,-----------------------.
     93      * |  ♫  |  ♫  |  ♫  |  ♫  |
     94      * |-----+-----+-----+-----|
     95      * |  ♫  |  ♫  |  ♫  |  ♫  |
     96      * |-----+-----+-----+-----|
     97      * |  ♫  |  ♫  |  ♫  |  ♫  |
     98      * |-----+-----+-----+-----|
     99      * |  ♫  |  ♫  |  ♫  |  ♫  |
    100      * `-----------------------'
    101      */
    102     [_MUSIC_4_LIFE] = LAYOUT_ortho_4x4(
    103         KC_M,    KC_M,    KC_M,    KC_M,
    104         KC_M,    KC_M,    KC_M,    KC_M,
    105         KC_M,    KC_M,    KC_M,    KC_M,
    106         KC_M,    KC_M,    KC_M,    KC_M
    107     ),
    108     /* MOUSE
    109      * ,-------------------------------------------------.
    110      * |  BUTTON 5 |           | SCROLL UP  |     X      |
    111      * |-----------+-----------+------------+------------|
    112      * |     X     |LEFT CLICK |     UP     |RIGHT CLICK |
    113      * |-----------+-----------+------------+------------|
    114      * |  BUTTON 4 |   LEFT    |    DOWN    |   RIGHT    |
    115      * |-----------+-----------+------------+------=-----|
    116      * |  BUTTON 3 |SCROLL LEFT|SCROLL DOWN |SCROLL RIGHT|
    117      * `-------------------------------------------------'
    118      */
    119     [_MOUSE] = LAYOUT_ortho_4x4(
    120         MS_BTN5, _______, MS_WHLU, _______,
    121         _______, MS_BTN1, MS_UP,   MS_BTN2,
    122         MS_BTN4, MS_LEFT, MS_DOWN, MS_RGHT,
    123         MS_BTN3, MS_WHLL, MS_WHLD, MS_WHLR
    124     ),
    125     /* TERMINAL
    126      * ,---------------------------------------.
    127      * |            |ABOUT|          |    X    |
    128      * |------------+-----+----------+---------|
    129      * |TERMINAL OFF|PRINT|          |         |
    130      * |------------+-----+----------+---------|
    131      * |     X      |FLUSH|          |         |
    132      * |------------+-----+----------+---------|
    133      * |TERMINAL ON |HELP |          |         |
    134      * `--------=======------------------------'
    135      */
    136     [_TERMINAL] = LAYOUT_ortho_4x4(
    137         _______, TERM_ABOUT, _______, _______,
    138         _______, TERM_PRINT, _______, _______,
    139         _______, TERM_FLUSH, _______, _______,
    140         _______, TERM_HELP , _______, _______
    141     ),
    142     /* ADMIN
    143      * ,-----------------------------------------.
    144      * |   QK_BOOT    |     |           |    X     |
    145      * |------------+-----+-----------+----------|
    146      * |ABOUT CKEYS |     |           |          |
    147      * |------------+-----+-----------+----------|
    148      * |            |     |CLICKY UP  |CLICKY OFF|
    149      * |------------+-----+-----------+----------|
    150      * |     X      |     |CLICKY DOWN|CLICKY ON |
    151      * `-----------------------------------------'
    152      */
    153     [_ADMIN] = LAYOUT_ortho_4x4(
    154         QK_BOOT,     _______, _______, _______,
    155         CKEYS_ABOUT, _______, _______, _______,
    156         _______,     _______, _______, CK_OFF,
    157         _______,     _______, _______, CK_ON
    158     ),
    159 };
    160 
    161 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    162     switch (keycode) {
    163         case TERM_ABOUT:
    164             if (record->event.pressed) {
    165                 // when keycode TERM_ABOUT is pressed
    166                 SEND_STRING("about\n");
    167             }
    168             break;
    169         case TERM_PRINT:
    170             if (record->event.pressed) {
    171                 SEND_STRING("print\n");
    172             }
    173             break;
    174         case TERM_FLUSH:
    175             if (record->event.pressed) {
    176                 SEND_STRING("flush\n");
    177             }
    178             break;
    179         case TERM_HELP:
    180             if (record->event.pressed) {
    181                 SEND_STRING("help\n");
    182             }
    183             break;
    184         case CKEYS_ABOUT:
    185             if (record->event.pressed) {
    186                 SEND_STRING("https://cKeys.org\nMaking people smile one keyboard at a time.\ncKeys is a volunteer-run 501(c)(3) nonprofit organization.\n");
    187             }
    188             break;
    189     }
    190     return true;
    191 };