keymap.c (4922B)
1 /* Copyright 2023 GSKY <gskyGit@gsky.com.tw> 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 17 #include QMK_KEYBOARD_H 18 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 enum my_keycodes { 22 RGB_R = QK_USER, 23 RGB_G, 24 RGB_B, 25 RGB_W, 26 SW_cy, 27 }; 28 29 bool process_record_user(uint16_t keycode, keyrecord_t *record) { 30 31 switch (keycode) { 32 33 case RGB_R: 34 if (record->event.pressed) { 35 rgb_matrix_sethsv(0, 255, 255); 36 rgb_matrix_mode(1); 37 } 38 return false; /* Skip all further processing of this key */ 39 40 case RGB_G: 41 if (record->event.pressed) { 42 rgb_matrix_sethsv(85, 255, 255); 43 rgb_matrix_mode(1); 44 } 45 return false; /* Skip all further processing of this key */ 46 47 case RGB_B: 48 if (record->event.pressed) { 49 rgb_matrix_sethsv(170, 255, 255); 50 rgb_matrix_mode(1); 51 } 52 return false; /* Skip all further processing of this key */ 53 54 case RGB_W: 55 if (record->event.pressed) { 56 rgb_matrix_sethsv(0, 0, 255); 57 rgb_matrix_mode(1); 58 } 59 return false; /* Skip all further processing of this key */ 60 61 case SW_cy: 62 rgb_matrix_sethsv(0, 255, 255); 63 rgb_matrix_mode(13); 64 return false; /* Skip all further processing of this key */ 65 66 67 default: 68 return true; /* Process all other keycodes normally */ 69 } 70 }; 71 72 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 73 /* Keymap _BL: Base Layer (Default Layer) 74 */ 75 [0] = LAYOUT( 76 QK_GESC, 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, KC_DEL, 77 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, KC_PGUP, 78 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, KC_PGDN, 79 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, 80 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), 81 [1] = LAYOUT( 82 KC_GRV, 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, KC_TRNS, 83 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RM_TOGG, RM_NEXT, RM_PREV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 84 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 85 KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSFT, RM_VALU, KC_TRNS, 86 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, RM_SPDD, RM_VALD, RM_SPDU), 87 [2] = LAYOUT( 88 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 89 QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 90 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 91 KC_TRNS, RGB_R, RGB_G, RGB_B, RGB_W, SW_cy, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 92 KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), 93 };