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