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