qmk_firmware

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

keymap.c (8763B)


      1 /* Copyright 2020 2Moons
      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 #include "split_util.h"
     18 // Each layer gets a name for readability, which is then used in the keymap matrix below.
     19 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
     20 // Layer names don't all need to be of the same length, obviously, and you can also skip them
     21 // entirely and just use numbers.
     22 enum layer_number {
     23   _QWERTY = 0,
     24   _FN,
     25   _ADJUST,
     26 };
     27 
     28 enum custom_keycodes {
     29   RGB_RST = SAFE_RANGE
     30 };
     31 
     32 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     33   [_QWERTY] = LAYOUT_split_left_space(
     34   //,------------------------------------------------------------------------|   |---------------------------------------------------------------------------.
     35        KC_ESC, KC_GRAVE,    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,
     36   //|------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     37       UG_NEXT,   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,
     38   //|------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     39       RGB_M_G,  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,
     40   //|------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     41       RGB_M_X,      KC_LSFT,   KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,        KC_B,    KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH,   KC_RSFT,   KC_RSFT,
     42   //|------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     43       UG_TOGG,            KC_LCTL,KC_LALT, KC_LALT,  KC_SPC,           KC_SPC,      KC_SPC,  KC_SPC,                            KC_RALT,   KC_RCTL,   MO(_FN)
     44   //`------------------------------------------------------------------------|   |---------------------------------------------------------------------------'
     45   ),
     46 
     47   [_FN] = LAYOUT_split_left_space(
     48   //,-------------------------------------------------------------------------|   |---------------------------------------------------------------------------.
     49       KC_ESC, TG(_ADJUST),  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_DEL,
     50   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     51       _______,            _______, _______, _______, _______, _______, _______,     _______, KC_PSCR, KC_SCRL, KC_PAUSE,  KC_UP, _______,   _______,   _______,
     52   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     53       _______,            _______, _______, _______, _______, _______, _______,     _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______,      _______,
     54   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     55       _______,            _______, _______, _______, _______, _______, _______,     _______,  KC_END, KC_PGDN, KC_DOWN, _______, _______,   _______,   _______,
     56   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     57       _______,            _______, _______, _______, _______,          _______,     _______, _______,                            _______,   _______,   _______
     58   //`-------------------------------------------------------------------------|   |---------------------------------------------------------------------------'
     59   ),
     60 
     61   [_ADJUST] = LAYOUT_split_left_space( /* Base */
     62   //,-------------------------------------------------------------------------|   |---------------------------------------------------------------------------.
     63    XXXXXXX, TG(_ADJUST),  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,        QK_BOOT,
     64   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     65      XXXXXXX,             XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,     RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX,   XXXXXXX,
     66   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     67       XXXXXXX,            XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,     UG_TOGG, UG_NEXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,       XXXXXXX,
     68   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     69       XXXXXXX,            XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,     UG_VALD, UG_VALU, UG_HUED, UG_HUEU, UG_SATD, UG_SATU,   XXXXXXX,   XXXXXXX,
     70   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     71       XXXXXXX,            XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,          XXXXXXX,     XXXXXXX, XXXXXXX,                            XXXXXXX,   XXXXXXX,   XXXXXXX
     72   //`-------------------------------------------------------------------------|   |---------------------------------------------------------------------------'
     73   )
     74 
     75 };
     76 
     77 
     78 int RGB_current_mode;
     79 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
     80   bool result = false;
     81   switch (keycode) {
     82     #ifdef RGBLIGHT_ENABLE
     83       case QK_UNDERGLOW_MODE_NEXT:
     84           if (record->event.pressed) {
     85             rgblight_mode(RGB_current_mode);
     86             rgblight_step();
     87             RGB_current_mode = rgblight_get_mode();
     88           }
     89         break;
     90       case RGB_RST:
     91           if (record->event.pressed) {
     92             eeconfig_update_rgblight_default();
     93             rgblight_enable();
     94             RGB_current_mode = rgblight_get_mode();
     95           }
     96         break;
     97     #endif
     98     default:
     99       result = true;
    100       break;
    101   }
    102 
    103   return result;
    104 }
    105 
    106 #ifdef OLED_ENABLE
    107 
    108 const char *read_logo(void) {
    109   static char logo[] = {
    110       0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
    111       0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
    112       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
    113       0};
    114   return logo;
    115 }
    116 
    117 oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    118     return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0;
    119 }
    120 
    121 bool oled_task_user(void) {
    122   if (is_keyboard_master()) {
    123     // Host Keyboard Layer Status
    124     oled_write_P(PSTR("Layer: "), false);
    125     switch (get_highest_layer(layer_state)) {
    126     case _QWERTY:
    127       oled_write_P(PSTR("Default\n"), false);
    128       break;
    129     case _FN:
    130       oled_write_P(PSTR("Function\n"), false);
    131       break;
    132     default:
    133       // Or use the write_ln shortcut over adding '\n' to the end of your string
    134       oled_write_ln_P(PSTR("Undefined"), false);
    135     }
    136 
    137     // Host Keyboard LED Status
    138     led_t led_usb_state = host_keyboard_led_state();
    139     oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR("       "), false);
    140     oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR("       "), false);
    141     oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR("       "), false);
    142   } else {
    143     oled_write(read_logo(), false);
    144   }
    145     return false;
    146 }
    147 #endif