qmk_firmware

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

keymap.c (5211B)


      1 // Copyright 2023 QMK
      2 // SPDX-License-Identifier: GPL-2.0-or-later
      3 
      4 #include QMK_KEYBOARD_H
      5 
      6 // Define the layers
      7 enum layer_names {
      8     _LAYER0,
      9     _LAYER0_MOD,
     10     _LAYER1,
     11     _LAYER2
     12 };
     13 
     14 #define UNDERGLOW 60
     15 
     16 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     17     /*
     18      * ┌───┬───┬───┬───┐
     19      * │ E │ n │ 6 │ 7 │
     20      * ├───┼───┼───┼───┤
     21      * │ B │ n │ 5 │ 8 │
     22      * ├───┼───┼───┼───┤
     23      * │ 2 │ 3 │ 4 │ 9 │
     24      * └───┴───┴───┴───┘
     25      */
     26     [_LAYER0] = LAYOUT( // default
     27         KC_MUTE,                 LSFT(KC_COMM),    LSFT(KC_DOT),
     28         DF(_LAYER1),             KC_J,             KC_L,
     29         KC_MPRV,       KC_MPLY,  KC_MNXT,          TG(_LAYER0_MOD) // btm-right one shot mod layer
     30     ),
     31     [_LAYER0_MOD] = LAYOUT( // default MOD
     32         _______,                      RM_VALU,    RM_NEXT, // _______ transparent, goes to above layer
     33         _______,                      RM_VALD,    RM_TOGG,
     34         LCTL(LGUI(KC_SPC)),    _______,  _______,    TG(_LAYER0_MOD)
     35     ),
     36     [_LAYER1] = LAYOUT( // FCPX
     37         LSFT(LGUI(KC_B)),            LGUI(KC_B), LGUI(KC_EQL),
     38         DF(_LAYER2),                 LALT(KC_K), LGUI(KC_MINS),
     39         KC_J,              KC_K,     KC_L,       KC_BSPC
     40     ),
     41     [_LAYER2] = LAYOUT( // KICAD
     42         KC_E,                        KC_ESC,     KC_M,
     43         DF(_LAYER0),            LGUI(KC_Z), KC_X,
     44         KC_V,              KC_D,     KC_U,       KC_BSPC    
     45     )
     46 };
     47 
     48 #ifdef ENCODER_MAP_ENABLE
     49 const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
     50     [_LAYER0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, // default
     51     [_LAYER0_MOD] = { ENCODER_CCW_CW(_______, _______) }, // default MOD
     52     [_LAYER1] = { ENCODER_CCW_CW(KC_LEFT, KC_RIGHT) }, // FCPX
     53     [_LAYER2] = { ENCODER_CCW_CW(KC_R, S(KC_R)) } // KICAD
     54 };
     55 #endif
     56 
     57 #ifdef OLED_ENABLE
     58 // Function to display the current layer and information on the OLED
     59 bool oled_task_user(void) {
     60     switch (get_highest_layer(layer_state | default_layer_state)) {
     61         case _LAYER0:
     62             oled_write_ln_P(PSTR("(VOL- VOL+)  LAYER0"), false);
     63             oled_write_ln_P(PSTR(""), false);
     64             oled_write_ln_P(PSTR("MUTE      SLOW FAST"), false);
     65             oled_write_ln_P(PSTR(""), false);
     66             oled_write_ln_P(PSTR("LAYR RSET 10BK 10FW"), false);
     67             oled_write_ln_P(PSTR(""), false);
     68             oled_write_ln_P(PSTR("MREV MPLA MFWD +OPT"), false);
     69             break;
     70         case _LAYER0_MOD:
     71             oled_write_ln_P(PSTR("____ ____      0-MOD"), false);
     72             oled_write_ln_P(PSTR(""), false);
     73             oled_write_ln_P(PSTR("____      BRI+ ANIM"), false);
     74             oled_write_ln_P(PSTR(""), false);
     75             oled_write_ln_P(PSTR("____ ____ BRI- TOGG"), false);
     76             oled_write_ln_P(PSTR(""), false);
     77             oled_write_ln_P(PSTR("EMOJ ____ ____ -OPT"), false);
     78             break;
     79         case _LAYER1:
     80             oled_write_ln_P(PSTR("(FRA- FRA+)    FCPX"), false);
     81             oled_write_ln_P(PSTR(""), false);
     82             oled_write_ln_P(PSTR("XXXX      BRAK ZOM+"), false);
     83             oled_write_ln_P(PSTR(""), false);
     84             oled_write_ln_P(PSTR("LAYR RSET KFRA ZOM-"), false);
     85             oled_write_ln_P(PSTR(""), false);
     86             oled_write_ln_P(PSTR("BACK STOP FORW DELT"), false);
     87             break;
     88         case _LAYER2:
     89             oled_write_ln_P(PSTR("(RO L RO R)   KICAD"), false);
     90             oled_write_ln_P(PSTR(""), false);
     91             oled_write_ln_P(PSTR("EDIT      ESCP MOVE"), false);
     92             oled_write_ln_P(PSTR(""), false);
     93             oled_write_ln_P(PSTR("LAYR RSET UNDO TRAK"), false);
     94             oled_write_ln_P(PSTR(""), false);
     95             oled_write_ln_P(PSTR("VIA  DRAG SALL DELT"), false);
     96             break;
     97     }
     98     return false;
     99 }
    100 #endif
    101 
    102 bool rgb_matrix_indicators_user(void) {
    103     switch(get_highest_layer(layer_state|default_layer_state)) {
    104         case _LAYER2:
    105             rgb_matrix_set_color(11, 0, 0, UNDERGLOW);
    106             rgb_matrix_set_color(10, 0, 0, UNDERGLOW);
    107             rgb_matrix_set_color(9, 0, 0, UNDERGLOW);
    108             rgb_matrix_set_color(8, 0, 0, UNDERGLOW);
    109             break;
    110         case _LAYER1:
    111             rgb_matrix_set_color(11, 0, UNDERGLOW, 0);
    112             rgb_matrix_set_color(10, 0, UNDERGLOW, 0);
    113             rgb_matrix_set_color(9, 0, UNDERGLOW, 0);
    114             rgb_matrix_set_color(8, 0, UNDERGLOW, 0);
    115             break;
    116         case _LAYER0_MOD:
    117             rgb_matrix_set_color(11, UNDERGLOW/2, 0, UNDERGLOW/2);
    118             rgb_matrix_set_color(10, UNDERGLOW/2, 0, UNDERGLOW/2);
    119             rgb_matrix_set_color(9, UNDERGLOW/2, 0, UNDERGLOW/2);
    120             rgb_matrix_set_color(8, UNDERGLOW/2, 0, UNDERGLOW/2);
    121             break;
    122         case _LAYER0:
    123             rgb_matrix_set_color(11, UNDERGLOW, 0, 0);
    124             rgb_matrix_set_color(10, UNDERGLOW, 0, 0);
    125             rgb_matrix_set_color(9, UNDERGLOW, 0, 0);
    126             rgb_matrix_set_color(8, UNDERGLOW, 0, 0);
    127             break;
    128         default:
    129             break;
    130     }
    131     return false;
    132 }