qmk_firmware

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

keymap.c (12801B)


      1 /* Copyright 2021 klackygears
      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 #include QMK_KEYBOARD_H
     17 
     18 enum layer_names {
     19     _QWERTY,
     20     _LOWER,
     21     _RAISE,
     22     _ADJUST,
     23     _FUNCTION,
     24 };
     25 
     26 enum custom_keycodes {
     27   RGBRST = SAFE_RANGE,
     28 };
     29 
     30 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     31 
     32     /* Qwerty
     33      * ,-----------------------------------------.  ,------.  ,----------------------------------------.
     34      * | Tab  |   Q  |   W  |   E  |   R  |   T  |  | Mute |  |   Y  |   U  |   I  |   O  |   P  | Bksp |
     35      * |------+------+------+------+------+------|  `------'  |------+------+------+------+------+------|
     36      * | Func |   A  |   S  |   D  |   F  |   G  |            |   H  |   J  |   K  |   L  |   ;  | Enter|
     37      * |------+------+------+------+------+------|            |------+------+------+------+------+------|
     38      * | Shift|   Z  |   X  |   C  |   V  |   B  |            |   N  |   M  |   ,  |   .  |   /  |  '   |
     39      * |------+------+------|--------------------+  ,------.  +--------------------|------+------+------|
     40      * | Ctrl |  `   | GUI  | Alt  |Lower |Space |  |Space |  |Space |Raise | Left | Down |  Up  |Right |
     41      * `-----------------------------------------'  `------'  `-----------------------------------------'
     42      */
     43     [_QWERTY] = LAYOUT(
     44      KC_TAB,        KC_Q,   KC_W,    KC_E,    KC_R,       KC_T,    KC_MUTE, KC_Y,   KC_U,       KC_I,    KC_O,    KC_P,    KC_BSPC,
     45      MO(_FUNCTION), KC_A,   KC_S,    KC_D,    KC_F,       KC_G,             KC_H,   KC_J,       KC_K,    KC_L,    KC_SCLN, KC_ENT,
     46      OSM(MOD_LSFT), KC_Z,   KC_X,    KC_C,    KC_V,       KC_B,             KC_N,   KC_M,       KC_COMM, KC_DOT,  KC_SLSH, KC_QUOT,
     47      KC_LCTL,       KC_GRV, KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC,  KC_SPC,  KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT
     48     ),
     49     /* Lower
     50      * ,-----------------------------------------.  ,------.  ,-----------------------------------------.
     51      * | Esc  |   !  |   @  |   #  |   $  |   %  |  |      |  |   ^  |   &  |   *  |   (  |   )  | Del  |
     52      * |------+------+------+------+------+------|  `------'  |------+------+------+------+------+------|
     53      * |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |            |      |   _  |   +  |   {  |   }  |Enter |
     54      * |------+------+------+------+------+------|            |------+------+------+------+------+------|
     55      * |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |            |      |      |      | Mute |      |  |   |
     56      * |------+------+------|--------------------+  ,------.  +--------------------|------+------+------|
     57      * |      |      |      |      |Lower | Bksp |  |      |  | Bksp |Raise | Next | Vol- | Vol+ | Play |
     58      * `-----------------------------------------'  `------'  `-----------------------------------------'
     59      */
     60     [_LOWER] = LAYOUT(
     61      KC_ESC,  KC_EXLM,  KC_AT,   KC_HASH, KC_DLR,  KC_PERC,  _______,  KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
     62      KC_F1,    KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,              _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, _______,
     63      KC_F7,    KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,             _______, _______, _______, KC_MUTE, _______, KC_PIPE,
     64      _______, _______,  _______, _______, _______, KC_BSPC,  _______,  KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
     65     ),
     66     /* Raise
     67      * ,-----------------------------------------.  ,------.  ,-----------------------------------------.
     68      * | Esc  |   1  |   2  |   3  |   4  |   5  |  |      |  |   6  |   7  |   8  |   9  |   0  | Del  |
     69      * |------+------+------+------+------+------|  `------'  |------+------+------+------+------+------|
     70      * |      |   4  |   5  |   6  |   +  |  F5  |            |  F6  |   -  |   =  |   [  |   ]  |Enter |
     71      * |------+------+------+------+------+------|            |------+------+------+------+------+------|
     72      * |Enter |   7  |   8  |   9  |   -  |  F11 |            |  F12 |ISO # |ISO / | Mute |      |   \  |
     73      * |------+------+------|--------------------+  ,------.  +--------------------|------+------+------|
     74      * |      |   ,  |   0  |  .   |Lower | Bksp |  |      |  | Bksp |Raise | Next | Vol- | Vol+ | Play |
     75      * `-----------------------------------------'  `------'  `-----------------------------------------'
     76      */
     77     [_RAISE] = LAYOUT(
     78      KC_ESC,  KC_1,    KC_2,  KC_3,   KC_4,    KC_5,     _______,  KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_DEL,
     79      _______, KC_4,    KC_5,  KC_6,   KC_PLUS, KC_F5,              KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, _______,
     80      KC_ENT,  KC_7,    KC_8,  KC_9,   KC_MINS, KC_F11,             KC_F12,  KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS,
     81      _______, KC_COMM, KC_0,  KC_DOT, _______, KC_BSPC,  _______,  KC_BSPC, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
     82     ),
     83     /* Adjust (Lower + Raise)
     84      * ,-----------------------------------------.  ,------.  ,-----------------------------------------.
     85      * |      |      |      |      |      |      |  |      |  |RGBRST|RGBMOD|RGBVAI|RGBSAI|RGBHUI|      |
     86      * |------+------+------+------+------+------|  `------'  |------+------+------+------+------+------|
     87      * |      |      |      |      |      |      |            |      |RGBRMO|RGBVAD|RGBSAD|RGBHUD|RGBTOG|
     88      * |------+------+------+------+------+------|            |------+------+------+------+------+------|
     89      * |      |      |      |      |      |      |            |      |      |      |      |      |BLSTEP|
     90      * |------+------+------|--------------------+  ,------.  +--------------------|------+------+------|
     91      * |      |      |      |      |      |      |  |      |  |      |      |      |      |      | QK_BOOT|
     92      * `-----------------------------------------'  `------'  `-----------------------------------------'
     93      */
     94     [_ADJUST] = LAYOUT(
     95      _______, _______, _______, _______, _______, _______, _______, RGBRST,  RM_NEXT, RM_VALU, RM_SATU, RM_HUEU, _______,
     96      _______, _______, _______, _______, _______, _______,          _______, RM_PREV, RM_VALD, RM_SATD, RM_HUED, RM_TOGG,
     97      _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______, BL_STEP,
     98      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT
     99     ),
    100     /* Function
    101      * ,-----------------------------------------.  ,------.  ,-----------------------------------------.
    102      * |      |      |      |      |      |      |  |      |  |      |      |  Up  |      |      |      |
    103      * |------+------+------+------+------+------|  `------'  |------+------+------+------+------+------|
    104      * |      |      |      |      |      |      |            |      | Left | Down |Right |      |      |
    105      * |------+------+------+------+------+------|            |------+------+------+------+------+------|
    106      * | Caps |      |      |      |      |      |            |      |      |      |      |      |      |
    107      * |------+------+------|--------------------+  ,------.  +--------------------|------+------+------|
    108      * |      |      |      |      |      |      |  |      |  |      |      |      |      |      |      |
    109      * `-----------------------------------------'  `------'  `-----------------------------------------'
    110      */
    111     [_FUNCTION] = LAYOUT(
    112      _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP,   _______, _______, _______,
    113      _______, _______, _______, _______, _______, _______,          _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
    114      KC_CAPS, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______, _______,
    115      _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
    116     )
    117 };
    118 
    119 layer_state_t layer_state_set_user(layer_state_t state) {
    120   return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
    121 }
    122 
    123 #ifdef OLED_ENABLE
    124 
    125 
    126 static void render_ein60_logo(void) {
    127         static const char PROGMEM ein60_logo[] = {
    128             0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    129         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,255, 11,251,139,139,139,139,139,139,139,139,139,139,139, 11, 15,  0,240,240, 16,240,  0,240,240, 16,240,224,192,128,  0,  0,  0,  0,240, 16,240,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,254,255, 11,251,139,139,139,139,139,139,139,139,139,139,139,143,128,  0,  0,  0,  0,254,255, 11,251, 11, 11, 11, 11,139,203,235,123,187,219,235,251,255,  7,252,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    130         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,255,  4,253,197,197,197,197,197,197,197,197,197,197,199,192,192,  0,255,255,  0,255,  0,255,255,  0,254, 13, 27, 55,111,222,188,120,255,  0,255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,255,  0,255,197,197,197,197,197,197,197,197,197,197,253,253,255,131,254,  0,  0,255,255,  0,255,184,220,238,247,219,205,198,195,193,192,255,255,255,128,255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    131         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  3,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  3,  0,  3,  3,  2,  3,  0,  3,  3,  2,  3,  0,  0,  0,  0,  0,  1,  3,  2,  2,  3,  0,  8, 28, 20, 20, 20, 20, 20, 28,  8,  0,  1,  3,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  3,  0,  0,  0,  1,  3,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    132         };
    133         oled_write_raw_P(ein60_logo, sizeof(ein60_logo));
    134     }
    135 
    136 static void render_status(void) {
    137     // Host Keyboard Layer Status
    138     oled_write_P(PSTR("Layer: "), false);
    139     switch (get_highest_layer(layer_state)) {
    140         case _QWERTY:
    141             oled_write_P(PSTR("Default\n"), false);
    142             break;
    143         case _LOWER:
    144             oled_write_P(PSTR("Lower\n"), false);
    145             break;
    146         case _RAISE:
    147             oled_write_P(PSTR("Raise\n"), false);
    148             break;
    149         case _ADJUST:
    150             oled_write_P(PSTR("Adjust\n"), false);
    151             break;
    152         case _FUNCTION:
    153             oled_write_P(PSTR("FN\n"), false);
    154             break;
    155         default:
    156             // Or use the write_ln shortcut over adding '\n' to the end of your string
    157             oled_write_ln_P(PSTR("Undefined"), false);
    158     }
    159 
    160 
    161     // Host Keyboard LED Status
    162     led_t led_state = host_keyboard_led_state();
    163     oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR("    "), false);
    164     oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR("    "), false);
    165     oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);
    166 
    167     oled_set_cursor(1,2);
    168 }
    169 
    170 bool oled_task_user(void) {
    171 
    172     render_status();
    173     oled_write_ln_P(PSTR(""), false);
    174     render_ein60_logo();
    175     return false;
    176 }
    177 #endif
    178 
    179 
    180 bool encoder_update_user(uint8_t index, bool clockwise) {
    181     if (index == 0) { /* First encoder */
    182         if (clockwise) {
    183             tap_code(KC_VOLU);
    184         } else {
    185             tap_code(KC_VOLD);
    186         }
    187     } else if (index == 1) { /* Second encoder */
    188         if (clockwise) {
    189             tap_code(KC_DOWN);
    190         } else {
    191             tap_code(KC_UP);
    192         }
    193     }
    194     return true;
    195 }
    196 
    197 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    198   switch (keycode) {
    199     case RGBRST:
    200       #ifdef RGBLIGHT_ENABLE
    201         if (record->event.pressed) {
    202           eeconfig_update_rgblight_default();
    203           rgblight_enable();
    204         }
    205       #endif
    206       break;
    207   }
    208   return true;
    209 }