qmk_firmware

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

keymap.c (20336B)


      1 /* Copyright 2023 Gopolar
      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 // OLED animation
     20 #include "lib/wave.h"
     21 
     22 // Each layer gets a name for readability, which is then used in the keymap matrix below.
     23 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
     24 // Layer names don't all need to be of the same length, obviously, and you can also skip them
     25 // entirely and just use numbers.
     26 
     27 // enum layer_names { };
     28 
     29 // enum layer_keycodes { };
     30 
     31 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     32 
     33 /*
     34        ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
     35        │Esc│   │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│
     36        └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
     37        ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
     38        │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bckspc│ │Hom│Scr│Pse│
     39        ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
     40        │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │  \  │ │End│Scr│Pse│
     41        ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
     42        │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │   Enter│
     43        ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤     ┌───┐
     44        │LSft│ \ │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │RSt│     │ ↑ │
     45        ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐
     46        │LCrl │GUI│ LAlt│           Space           │ RAlt│ Fn│ RCrl│ │ ← │ ↓ │ → │
     47        └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
     48        ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
     49        │   │   │   │   │   │   │ │   │   │   │   │ │   │   │   │   │ │   │   │   │
     50        └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
     51        ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
     52        │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │       │ │   │   │   │
     53        ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
     54        │     │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │  |  │ │   │   │   │
     55        ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
     56        │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │        │
     57        ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤     ┌───┐
     58        │LSft│ | │ Z │ X │ C │ V │ B │ N │ M │ < │ > │ ? │ RSft │RSt│     │   │
     59        ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐
     60        │     │   │     │                           │     │   │     │ │   │   │   │
     61        └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
     62 */
     63     /*  Row:    0        1        2        3      4      5       6      7      8      9        10       11       12       13       14       15       16      */
     64 	[0] = LAYOUT_all(
     65                 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_PSCR, KC_SCRL, KC_PAUSE,
     66                 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_INS,  KC_HOME, KC_PGUP,
     67                 KC_TAB,  KC_Q,    KC_W,    KC_E,  KC_R,  KC_T,   KC_Y,  KC_U,  KC_I,  KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,  KC_END,  KC_PGDN,
     68                 KC_CAPS, KC_A,    KC_S,    KC_D,  KC_F,  KC_G,   KC_H,  KC_J,  KC_K,  KC_L,    KC_SCLN, KC_QUOT,          KC_ENT,
     69                 KC_LSFT, KC_NUBS, KC_Z,    KC_X,  KC_C,  KC_V,   KC_B,  KC_N,  KC_M,  KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, KC_RSFT,          KC_UP,
     70                 KC_LCTL, KC_LGUI, KC_LALT,               KC_SPC,                               KC_RALT, MO(1),   KC_RCTL,          KC_LEFT, KC_DOWN, KC_RIGHT
     71     ),
     72 
     73 /*
     74        ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
     75        │Slp│   │M_T│F13│F14│F15│ │F16│Rfh│Stp│   │ │   │   │   │Est│ │   │VoD│VoU│
     76        └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
     77        ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
     78        │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │Hui│Sai│Spi│
     79        ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
     80        │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │Hud│Sad│Spd│
     81        ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
     82        │      │   │   │   │   │   │   │   │   │   │   │   │ RGB_Tog│
     83        ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤     ┌───┐
     84        │    │   │   │   │Cal│   │   │   │   │   │   │   │      │   │     │Vai│
     85        ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐
     86        │     │   │     │                           │     │   │     │ │Rod│Vad│Mod│
     87        └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
     88 */
     89     /*  Row:    0        1        2        3        4        5        6        7        8        9        10       11       12       13       14        15       16     */
     90 	[1] = LAYOUT_all(
     91                 KC_SLEP, RGB_M_T, KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_WREF, KC_WSTP, _______, _______, _______, _______, EE_CLR,           _______,  KC_VOLD, KC_VOLU,
     92                 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_HUEU,  RM_SATU, RM_SPDU,
     93                 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_HUED,  RM_SATD, RM_SPDD,
     94                 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          RM_TOGG,
     95                 _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______,           RM_VALU,
     96                 _______, _______, _______,                   _______,                                     _______, _______, _______,          RM_PREV,  RM_VALD, RM_NEXT
     97     ),
     98 
     99 /*
    100        ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
    101        │Slp│   │F13│F14│F15│F16│ │Rfh│Stp│   │   │ │   │   │   │   │ │   │VoD│VoU│
    102        └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
    103        ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
    104        │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │Hui│Sai│Spi│
    105        ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
    106        │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │Hud│Sad│Spd│
    107        ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
    108        │      │   │   │   │   │   │   │   │   │   │   │   │ RGB_Tog│
    109        ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤     ┌───┐
    110        │    │   │   │   │Cal│   │   │   │   │   │   │   │      │   │     │Vai│
    111        ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐
    112        │     │   │     │                           │     │   │     │ │Rod│Vad│Mod│
    113        └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
    114 */
    115     /*  Row:    0        1        2        3        4        5        6        7        8        9        10       11       12       13       14        15       16     */
    116 	[2] = LAYOUT_all(
    117                 KC_SLEP, KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_WREF, KC_WSTP, _______, _______, _______, _______, _______, _______,          _______,  KC_VOLD, KC_VOLU,
    118                 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_HUEU,  RM_SATU, RM_SPDU,
    119                 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_HUED,  RM_SATD, RM_SPDD,
    120                 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          RM_TOGG,
    121                 _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______,           RM_VALU,
    122                 _______, _______, _______,                   _______,                                     _______, _______, _______,          RM_PREV,  RM_VALD, RM_NEXT
    123     ),
    124 
    125 /*
    126        ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
    127        │Slp│   │F13│F14│F15│F16│ │Rfh│Stp│   │   │ │   │   │   │   │ │   │VoD│VoU│
    128        └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
    129        ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐
    130        │   │   │   │   │   │   │   │   │   │   │   │   │   │       │ │Hui│Sai│Spi│
    131        ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
    132        │     │   │   │   │   │   │   │   │   │   │   │   │   │     │ │Hud│Sad│Spd│
    133        ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
    134        │      │   │   │   │   │   │   │   │   │   │   │   │ RGB_Tog│
    135        ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤     ┌───┐
    136        │    │   │   │   │Cal│   │   │   │   │   │   │   │      │   │     │Vai│
    137        ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───┐
    138        │     │   │     │                           │     │   │     │ │Rod│Vad│Mod│
    139        └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
    140 */
    141     /*  Row:    0        1        2        3        4        5        6        7        8        9        10       11       12       13       14        15       16     */
    142 	[3] = LAYOUT_all(
    143                 KC_SLEP, KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_WREF, KC_WSTP, _______, _______, _______, _______, _______, _______,          _______,  KC_VOLD, KC_VOLU,
    144                 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_HUEU,  RM_SATU, RM_SPDU,
    145                 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_HUED,  RM_SATD, RM_SPDD,
    146                 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,          RM_TOGG,
    147                 _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______,           RM_VALU,
    148                 _______, _______, _______,                   _______,                                     _______, _______, _______,          RM_PREV,  RM_VALD, RM_NEXT
    149     ),
    150 };
    151 
    152 #ifdef OLED_ENABLE
    153     static void render_layer_info(void) {
    154         switch (get_highest_layer(layer_state)) {
    155             case 0:
    156                 oled_write_P(PSTR("QWERTY       "), false);
    157                 break;
    158             case 1:
    159                 oled_write_P(PSTR("Function     "), false);
    160                 break;
    161             case 2:
    162                 oled_write_P(PSTR("Function     "), false);
    163                 break;
    164             case 3:
    165                 oled_write_P(PSTR("Function     "), false);
    166                 break;
    167             default:
    168                 oled_write_P(PSTR("Undefined    "), false);
    169         }
    170     }
    171 
    172     static void render_layer_number(void) {
    173         switch (get_highest_layer(layer_state)) {
    174             case 0:
    175                 oled_write_P(PSTR("0"), false);
    176                 break;
    177             case 1:
    178                 oled_write_P(PSTR("1"), false);
    179                 break;
    180             case 2:
    181                 oled_write_P(PSTR("2"), false);
    182                 break;
    183             case 3:
    184                 oled_write_P(PSTR("3"), false);
    185                 break;
    186             default:
    187                 oled_write_P(PSTR("X"), false);
    188         }
    189     }
    190 
    191     bool oled_task_user(void) {
    192         led_t led_usb_state = host_keyboard_led_state();
    193 
    194         oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLK ") : PSTR("----- "), false);
    195         oled_write_P(PSTR(" GOPOLAR "), false);
    196         oled_write_P(led_usb_state.scroll_lock ? PSTR(" SCRLK") : PSTR(" -----"), false);
    197 
    198         // sleep if it has been long enough since we last got a char
    199         if (timer_elapsed32(wave_sleep) > OLED_TIMEOUT) {
    200             oled_off();
    201         } else {
    202             oled_on();
    203         }
    204         // time for the next frame?
    205         if (timer_elapsed(wave_timer) > FRAME_TIMEOUT) {
    206             wave_timer = timer_read();
    207             render_frame();
    208         }
    209 
    210         oled_set_cursor(0, 3);
    211         render_layer_info();
    212         oled_write_P(PSTR("Layer: "), false);
    213         render_layer_number();
    214 
    215         return true;
    216     }
    217 #endif