keymap.c (5936B)
1 // https://docs.qmk.fm/#/feature_audio 2 // MACROS: 3 // DM_REC1 4 // DM_REC2 5 // DM_PLY1 6 // DM_PLY2 7 // DM_RSTP 8 9 #include QMK_KEYBOARD_H 10 11 #define LT_EDT LT(_EDIT, KC_Q) 12 #define LT_FUN LT(_FUNC, KC_NO) 13 #define LT_MOU LT(_MOUSE, KC_COMM) 14 #define LT_NAV LT(_NAV, KC_A) 15 #define LT_NUM LT(_NUM, KC_E) 16 #define LT_SYM LT(_SYMBOL, KC_O) 17 18 #define RED 0 19 #define YELLOW 43 20 #define PURPLE 191 21 #define GREEN 85 22 #define BLUE 170 23 #define CYAN 128 24 25 enum layers { 26 _MAIN, 27 _NAV, 28 _MOUSE, 29 _NUM, 30 _SYMBOL, 31 _EDIT, 32 _FUNC, 33 }; 34 35 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 36 [_MAIN] = LAYOUT_ortho_4x12( 37 KC_ESC, KC_QUOT, LT_MOU, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL, 38 KC_TAB, LT_NAV, LT_SYM, LT_NUM, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT, 39 KC_LSFT, KC_SCLN, LT_EDT, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_MINS, 40 KC_APP, KC_ALGR, LT_FUN, KC_LALT, KC_LGUI, KC_BSPC, KC_SPC, KC_RCTL, KC_LEFT, KC_RGHT, KC_UP, KC_DOWN 41 ), 42 [_NAV] = LAYOUT_ortho_4x12( 43 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_UP, KC_END, KC_PGUP, 44 KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, 45 KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 46 KC_NO, KC_NO, KC_NO, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_RCTL, KC_HOME, KC_END, KC_PGUP, KC_PGDN 47 ), 48 [_MOUSE] = LAYOUT_ortho_4x12( 49 KC_NO, KC_NO, KC_TRNS, KC_ACL2, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, 50 KC_NO, KC_ACL0, KC_NO, KC_ACL1, KC_LCTL, KC_NO, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, 51 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 52 KC_NO, KC_NO, KC_NO, KC_LALT, KC_LGUI, KC_NO, KC_BTN3, KC_BTN1, KC_BTN2, KC_NO, KC_NO, KC_NO 53 ), 54 [_NUM] = LAYOUT_ortho_4x12( 55 KC_NO, KC_NO, KC_COMM, KC_DOT, KC_NO, KC_NO, KC_NO, KC_CIRC, KC_7, KC_8, KC_9, KC_0, 56 KC_NO, KC_NO, KC_NO, KC_TRNS, KC_COLN, KC_NO, KC_NO, KC_PERC, KC_4, KC_5, KC_6, KC_EQL, 57 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_0, KC_1, KC_2, KC_3, KC_NO, 58 KC_NO, KC_NO, KC_NO, KC_NO, KC_LGUI, KC_BSPC, KC_SPC, KC_RCTL, KC_SLSH, KC_ASTR, KC_PLUS, KC_MINS 59 ), 60 [_SYMBOL] = LAYOUT_ortho_4x12( 61 KC_TILD, KC_GRV, KC_NO, KC_QUES, KC_NO, KC_NO, KC_LBRC, KC_RBRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, 62 KC_NO, KC_MINS, KC_TRNS, KC_PPLS, KC_COLN, KC_NO, KC_LCBR, KC_RCBR, KC_DLR, KC_PERC, KC_CIRC, KC_EQL, 63 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSLS, KC_SLSH, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, 64 KC_NO, KC_NO, KC_NO, KC_NO, KC_LGUI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO 65 ), 66 [_EDIT] = LAYOUT_ortho_4x12( 67 KC_NO, KC_NO, KC_NO, KC_NO, KC_PSTE, KC_NO, KC_NO, KC_NO, KC_COPY, QK_REP, QK_AREP, KC_INS, 68 KC_NO, KC_AGIN, KC_NO, KC_NO, KC_UNDO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLCT, KC_NO, 69 KC_NO, KC_NO, KC_TRNS, KC_NO, KC_CUT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 70 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_CLR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO 71 ), 72 [_FUNC] = LAYOUT_ortho_4x12( 73 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, 74 KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, 75 KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_NO, KC_MUTE, 76 KC_SYRQ, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_NO, KC_BRID, KC_BRIU, KC_VOLU, KC_VOLD 77 ), 78 }; 79 80 // https://docs.qmk.fm/#/feature_rgb_matrix 81 void set_led_color(uint8_t layer, 82 uint8_t row, 83 uint8_t col, 84 uint8_t led_min, 85 uint8_t led_max) { 86 uint8_t i = g_led_config.matrix_co[row][col]; 87 if (i == NO_LED || i < led_min || i >= led_max) { 88 return; 89 } 90 91 // FIX 92 bool underglow = HAS_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW); 93 if (underglow) { 94 rgb_matrix_set_color(i, RGB_RED); 95 return; 96 } 97 bool unused = keymap_key_to_keycode(layer, (keypos_t){col,row}) <= KC_TRNS; 98 if (unused && !underglow) { 99 rgb_matrix_set_color(i, RGB_OFF); 100 return; 101 } 102 103 // Determine the hue and value of the layer. 104 HSV hsv = {0, 0, 0}; 105 106 // Limit brightness to current value. 107 hsv.v = rgb_matrix_get_val(); 108 109 // Set the color (hue and saturation). 110 switch (layer) { 111 case _NAV: 112 hsv.h = RED; 113 hsv.s = 255; 114 break; 115 case _MOUSE: 116 hsv.h = YELLOW; 117 hsv.s = 255; 118 break; 119 case _NUM: 120 hsv.h = GREEN; 121 hsv.s = 255; 122 break; 123 case _SYMBOL: 124 hsv.h = PURPLE; 125 hsv.s = 255; 126 break; 127 case _EDIT: 128 hsv.h = CYAN; 129 hsv.s = 255; 130 break; 131 case _FUNC: 132 hsv.h = BLUE; 133 hsv.s = 255; 134 break; 135 default: 136 if (keymap_key_to_keycode(layer, (keypos_t){col,row}) == LT_NAV) { 137 hsv.h = RED; 138 hsv.s = 255; 139 } else if (keymap_key_to_keycode(layer, (keypos_t){col,row}) == LT_MOU) { 140 hsv.h = YELLOW; 141 hsv.s = 255; 142 } else if (keymap_key_to_keycode(layer, (keypos_t){col,row}) == LT_SYM) { 143 hsv.h = PURPLE; 144 hsv.s = 255; 145 } else if (keymap_key_to_keycode(layer, (keypos_t){col,row}) == LT_NUM) { 146 hsv.h = GREEN; 147 hsv.s = 255; 148 } else if (keymap_key_to_keycode(layer, (keypos_t){col,row}) == LT_EDT) { 149 hsv.h = CYAN; 150 hsv.s = 255; 151 } else if (keymap_key_to_keycode(layer, (keypos_t){col,row}) == LT_FUN) { 152 hsv.h = BLUE; 153 hsv.s = 255; 154 } else { 155 hsv.s = 0; 156 } 157 } 158 159 RGB rgb = hsv_to_rgb(hsv); 160 rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b); 161 } 162 163 bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { 164 uint8_t layer = get_highest_layer(layer_state); 165 for (uint8_t row = 0; row < MATRIX_ROWS; ++row) { 166 for (uint8_t col = 0; col < MATRIX_COLS; ++col) { 167 set_led_color(layer, row, col, led_min, led_max); 168 } 169 } 170 171 return false; 172 }