qmk_firmware

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

keymap.c (15169B)


      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 "keymap_japanese.h"
     18 #include "split_util.h"
     19 // Each layer gets a name for readability, which is then used in the keymap matrix below.
     20 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
     21 // Layer names don't all need to be of the same length, obviously, and you can also skip them
     22 // entirely and just use numbers.
     23 enum layer_number {
     24   _QWERTY = 0,
     25   _FLOCK,
     26   _FN,
     27   _LOWER,
     28   _RAISE,
     29   _ADJUST,
     30 };
     31 
     32 enum custom_keycodes {
     33   RGB_RST = SAFE_RANGE
     34 };
     35 
     36 enum tapdances{
     37   TD_ESFL = 0,
     38   TD_ESQW,
     39 };
     40 
     41 tap_dance_action_t tap_dance_actions[] = {
     42   [TD_ESFL] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _FLOCK),
     43   [TD_ESQW] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _QWERTY),
     44 };
     45 
     46 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     47   [_QWERTY] = LAYOUT(
     48   //,------------------------------------------------------------------------|   |---------------------------------------------------------------------------.
     49        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,
     50   //|------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     51        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,
     52   //|------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     53       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,
     54   //|------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     55           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,
     56   //|------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     57                 UG_TOGG, KC_LCTL, KC_LALT, KC_LALT,           KC_SPC,               KC_SPC,  KC_SPC,                            KC_RALT,   KC_RCTL,   MO(_FN)
     58   //`------------------------------------------------------------------------|   |---------------------------------------------------------------------------'
     59   ),
     60 
     61   [_FLOCK] = LAYOUT(
     62   //,-------------------------------------------------------------------------|   |---------------------------------------------------------------------------.
     63        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,      _______,
     64   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     65       _______,            _______, _______, _______, _______, _______, _______,     _______, KC_PSCR, KC_SCRL, KC_PAUSE,  KC_UP, _______,   _______,   _______,
     66   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     67       _______,            _______, _______, _______, _______, _______, _______,     _______, KC_HOME, KC_PGUP, KC_LEFT,KC_RIGHT, _______,       _______,
     68   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     69       _______,            _______, _______, _______, _______, _______, _______,     _______,  KC_END, KC_PGDN, KC_DOWN, _______, _______,   _______,   _______,
     70   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     71       _______,            _______, _______, _______,          _______,              _______, _______,                            _______,   _______,   _______
     72   //`-------------------------------------------------------------------------|   |---------------------------------------------------------------------------'
     73   ),
     74 
     75   [_FN] = LAYOUT(
     76   //,-------------------------------------------------------------------------|   |---------------------------------------------------------------------------.
     77        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_BSPC,
     78   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     79       _______,            _______, _______, _______, _______, _______, _______,     _______, KC_PSCR, KC_SCRL, KC_PAUSE,  KC_UP, _______,   _______,   _______,
     80   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     81       _______,            _______, _______, _______, _______, _______, _______,     _______, KC_HOME, KC_PGUP, KC_LEFT,KC_RIGHT, _______,       _______,
     82   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     83       _______,            _______, _______, _______, _______, _______, _______,     _______,  KC_END, KC_PGDN, KC_DOWN, _______, _______,   _______,   _______,
     84   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     85       _______,            _______, _______, _______,          _______,              _______, _______,                            _______,   _______,   _______
     86   //`-------------------------------------------------------------------------|   |---------------------------------------------------------------------------'
     87   ),
     88 
     89   [_LOWER] = LAYOUT(
     90   //,-------------------------------------------------------------------------|   |---------------------------------------------------------------------------.
     91        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,
     92   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     93       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,
     94   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     95       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,
     96   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     97       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,
     98   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
     99       UG_TOGG,            KC_LCTL, KC_LALT, KC_LALT,           KC_SPC,               KC_SPC,  KC_SPC,                            KC_RALT,   KC_RCTL,   MO(_FN)
    100   //`-------------------------------------------------------------------------|   |---------------------------------------------------------------------------'
    101   ),
    102 
    103   [_RAISE] = LAYOUT(
    104   //,-------------------------------------------------------------------------|   |---------------------------------------------------------------------------.
    105        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,
    106   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
    107       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,
    108   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
    109       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,
    110   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
    111       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,
    112   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
    113       UG_TOGG,            KC_LCTL, KC_LALT, KC_LALT,           KC_SPC,               KC_SPC,  KC_SPC,                            KC_RALT,   KC_RCTL,   MO(_FN)
    114           //`-----------------------------------------------------------------|   |---------------------------------------------------------------------------'
    115   ),
    116 
    117   [_ADJUST] = LAYOUT( /* Base */
    118   //,-------------------------------------------------------------------------|   |---------------------------------------------------------------------------.
    119       XXXXXXX,TG(_ADJUST),XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,     XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,        QK_BOOT,
    120   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
    121       XXXXXXX,            XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,     RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,   XXXXXXX,  XXXXXXX,
    122   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
    123       XXXXXXX,            XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,     UG_TOGG, UG_NEXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,       XXXXXXX,
    124   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
    125       XXXXXXX,            XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,     UG_VALD, UG_VALU, UG_HUED, UG_HUEU, UG_SATD, UG_SATU,   XXXXXXX,   XXXXXXX,
    126   //|-------------------+--------+--------+--------+--------+--------+--------|   |--------+--------+--------+--------+--------+--------+----------+----------|
    127       XXXXXXX,            XXXXXXX, XXXXXXX, XXXXXXX,          XXXXXXX,              XXXXXXX, XXXXXXX,                            XXXXXXX,   XXXXXXX,   XXXXXXX
    128           //`-----------------------------------------------------------------|   |---------------------------------------------------------------------------'
    129   )
    130 };
    131 
    132 
    133 //A description for expressing the layer position in LED mode.
    134 layer_state_t layer_state_set_user(layer_state_t state) {
    135   state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
    136 #ifdef RGBLIGHT_ENABLE
    137     switch (get_highest_layer(state)) {
    138     case _FLOCK:
    139       rgblight_sethsv_at(HSV_YELLOW, 0);
    140       break;
    141     case _FN:
    142       rgblight_sethsv_at(HSV_GREEN, 0);
    143       break;
    144     case _LOWER:
    145       rgblight_sethsv_at(HSV_BLUE, 0);
    146       break;
    147     case _RAISE:
    148       rgblight_sethsv_at(HSV_RED, 0);
    149       break;
    150     case _ADJUST:
    151       rgblight_sethsv_at(HSV_PURPLE, 0);
    152       break;
    153     default: //  for any other layers, or the default layer
    154       rgblight_sethsv_at( 0, 0, 0, 0);
    155       break;
    156     }
    157     rgblight_set_effect_range( 1, 4);
    158 #endif
    159 return state;
    160 }
    161 
    162 int RGB_current_mode;
    163 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    164   bool result = false;
    165   switch (keycode) {
    166     #ifdef RGBLIGHT_ENABLE
    167       case QK_UNDERGLOW_MODE_NEXT:
    168           if (record->event.pressed) {
    169             rgblight_mode(RGB_current_mode);
    170             rgblight_step();
    171             RGB_current_mode = rgblight_get_mode();
    172           }
    173         break;
    174       case RGB_RST:
    175           if (record->event.pressed) {
    176             eeconfig_update_rgblight_default();
    177             rgblight_enable();
    178             RGB_current_mode = rgblight_get_mode();
    179           }
    180         break;
    181     #endif
    182     default:
    183       result = true;
    184       break;
    185   }
    186 
    187   return result;
    188 }
    189 
    190 #ifdef OLED_ENABLE
    191 
    192 const char *read_logo(void) {
    193   static char logo[] = {
    194       0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
    195       0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4,
    196       0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4,
    197       0};
    198   return logo;
    199 }
    200 
    201 oled_rotation_t oled_init_user(oled_rotation_t rotation) {
    202     return isLeftHand ? OLED_ROTATION_180 : OLED_ROTATION_0;
    203 }
    204 
    205 bool oled_task_user(void) {
    206   if (is_keyboard_master()) {
    207     // Host Keyboard Layer Status
    208     oled_write_P(PSTR("Layer: "), false);
    209     switch (get_highest_layer(layer_state)) {
    210     case _QWERTY:
    211       oled_write_P(PSTR("Default\n"), false);
    212       break;
    213     case _FN:
    214       oled_write_P(PSTR("Function\n"), false);
    215       break;
    216     case _LOWER:
    217       oled_write_P(PSTR("Lower\n"), false);
    218       break;
    219     case _RAISE:
    220       oled_write_P(PSTR("Raise\n"), false);
    221       break;
    222     default:
    223       // Or use the write_ln shortcut over adding '\n' to the end of your string
    224       oled_write_ln_P(PSTR("Undefined"), false);
    225     }
    226 
    227     // Host Keyboard LED Status
    228     led_t led_usb_state = host_keyboard_led_state();
    229     oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR("       "), false);
    230     oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR("       "), false);
    231     oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR("       "), false);
    232   } else {
    233     oled_write(read_logo(), false);
    234   }
    235     return false;
    236 }
    237 #endif