2 #include QMK_KEYBOARD_H
5 #ifdef INDICATOR_LIGHTS
6 extern userspace_config_t userspace_config
;
11 bool has_mods_changed
= false;
14 #define KC_ALAP ALT_T(KC_APP)
15 #define KC_OSLG OSM(MOD_LGUI)
16 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
18 [_QWERTY
] = LAYOUT_wrapper(
19 KC_ESC
, ________________NUMBER_LEFT________________
, ________________NUMBER_RIGHT_______________
, KC_MINS
,
20 KC_TAB
, _________________QWERTY_L1_________________
, _________________QWERTY_R1_________________
, KC_BSLS
,
21 KC_CCCV
, _________________QWERTY_L2_________________
, _________________QWERTY_R2_________________
, KC_QUOT
,
22 KC_MLSF
, _________________QWERTY_L3_________________
, KC_ALAP
, KC_OSLG
, _________________QWERTY_R3_________________
, KC_MRSF
,
23 LT(_LOWER
,KC_GRV
), KC_SPC
, KC_BSPC
, KC_DEL
, KC_ENT
, RAISE
25 [_COLEMAK
] = LAYOUT_wrapper(
26 KC_ESC
, ________________NUMBER_LEFT________________
, ________________NUMBER_RIGHT_______________
, KC_MINS
,
27 KC_TAB
, _________________COLEMAK_L1________________
, _________________COLEMAK_R1________________
, KC_BSLS
,
28 KC_CCCV
, _________________COLEMAK_L2________________
, _________________COLEMAK_R2________________
, KC_QUOT
,
29 KC_MLSF
, _________________COLEMAK_L3________________
, KC_ALAP
, KC_OSLG
, _________________COLEMAK_R3________________
, KC_MRSF
,
30 LT(_LOWER
,KC_GRV
), KC_SPC
, KC_BSPC
, KC_DEL
, KC_ENT
, RAISE
32 [_DVORAK
] = LAYOUT_wrapper(
33 KC_ESC
, ________________NUMBER_LEFT________________
, ________________NUMBER_RIGHT_______________
, KC_MINS
,
34 KC_TAB
, _________________DVORAK_L1_________________
, _________________DVORAK_R1_________________
, KC_BSLS
,
35 KC_CCCV
, _________________DVORAK_L2_________________
, _________________DVORAK_R2_________________
, KC_QUOT
,
36 KC_MLSF
, _________________DVORAK_L3_________________
, KC_ALAP
, KC_OSLG
, _________________DVORAK_R3_________________
, KC_MRSF
,
37 LT(_LOWER
,KC_GRV
), KC_SPC
, KC_BSPC
, KC_DEL
, KC_ENT
, RAISE
39 [_WORKMAN
] = LAYOUT_wrapper(
40 KC_ESC
, ________________NUMBER_LEFT________________
, ________________NUMBER_RIGHT_______________
, KC_MINS
,
41 KC_TAB
, _________________WORKMAN_L1________________
, _________________WORKMAN_R1________________
, KC_BSLS
,
42 KC_CCCV
, _________________WORKMAN_L2________________
, _________________WORKMAN_R2________________
, KC_QUOT
,
43 KC_MLSF
, _________________WORKMAN_L3________________
, KC_ALAP
, KC_OSLG
, _________________WORKMAN_R3________________
, KC_MRSF
,
44 LT(_LOWER
,KC_GRV
), KC_SPC
, KC_BSPC
, KC_DEL
, KC_ENT
, RAISE
47 [_MODS
] = LAYOUT_wrapper(
48 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
,
49 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
,
50 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
,
51 KC_LSFT
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_RSFT
,
52 _______
, _______
, _______
, _______
, _______
, _______
56 [_LOWER
] = LAYOUT_wrapper(
57 _______
, _________________FUNC_LEFT_________________
, _________________FUNC_RIGHT________________
, _______
,
58 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
,
59 _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_UNDS
, KC_PLUS
, KC_LCBR
, KC_RCBR
, KC_PIPE
,
60 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RGHT
, _______
,
61 _______
, _______
, _______
, _______
, _______
, _______
64 [_RAISE
] = LAYOUT_wrapper(
65 _______
, _________________FUNC_LEFT_________________
, _________________FUNC_RIGHT________________
, _______
,
66 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
,
67 _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_MINS
, KC_EQL
, KC_LBRC
, KC_RBRC
, KC_BSLS
,
68 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_HOME
, KC_PGDN
, KC_PGUP
, KC_END
, _______
,
69 _______
, _______
, _______
, _______
, _______
, _______
72 [_ADJUST
] = LAYOUT_wrapper(
73 KC_MAKE
, _______
, _______
, _______
, _______
, _______
, KC_SEC1
, KC_SEC2
, KC_SEC3
, KC_SEC4
, KC_SEC5
, KC_RST
,
74 VRSN
, RGB_MOD
, RGB_HUI
, RGB_SAI
, RGB_VAI
, RGB_TOG
, _______
, _______
, _______
, _______
, _______
, EPRM
,
75 _______
, _______
, CK_TOGG
, AU_ON
, AU_OFF
, AG_NORM
, AG_SWAP
, KC_QWERTY
, KC_COLEMAK
, KC_DVORAK
, KC_WORKMAN
, _______
,
76 TG(_MODS
),RGB_SMOD
,RGB_HUD
,RGB_SAD
, RGB_VAD
, KC_RGB_T
,_______
, _______
, MG_NKRO
, KC_MUTE
, KC_VOLD
, KC_VOLU
, KC_MNXT
, KC_MPLY
,
77 _______
, _______
, _______
, _______
, _______
, _______
83 void matrix_init_keymap(void) {
84 #ifdef INDICATOR_LIGHTS
85 last_mod
= get_mods();
86 last_led
= host_keyboard_leds();
87 last_osm
=get_oneshot_mods();
91 uint32_t layer_state_set_keymap (uint32_t state
) {
92 #ifdef INDICATOR_LIGHTS
93 uint8_t modifiders
= get_mods();
94 uint8_t led_usb_state
= host_keyboard_leds();
95 uint8_t one_shot
= get_oneshot_mods();
98 if (modifiders
& MODS_SHIFT_MASK
|| led_usb_state
& (1<<USB_LED_CAPS_LOCK
) || one_shot
& MODS_SHIFT_MASK
) {
99 rgblight_sethsv_at(0, 255, 255, 5);
100 rgblight_sethsv_at(0, 255, 255, 10);
102 if (modifiders
& MODS_CTRL_MASK
|| one_shot
& MODS_CTRL_MASK
) {
103 rgblight_sethsv_at(51, 255, 255, 6);
104 rgblight_sethsv_at(51, 255, 255, 9);
106 if (modifiders
& MODS_ALT_MASK
|| one_shot
& MODS_ALT_MASK
) {
107 rgblight_sethsv_at(120, 255, 255, 7);
108 rgblight_sethsv_at(120, 255, 255, 8);
116 void matrix_scan_keymap (void) {
118 #ifdef INDICATOR_LIGHTS
119 uint8_t current_mod
= get_mods();
120 uint8_t current_led
= host_keyboard_leds();
121 uint8_t current_osm
=get_oneshot_mods();
123 if (last_mod
== current_mod
) {
124 last_mod
= current_mod
;
125 has_mods_changed
= true;
127 if (last_led
== current_led
) {
128 last_led
= current_led
;
129 has_mods_changed
= true;
131 if (last_osm
== current_osm
) {
132 last_osm
= current_osm
;
133 has_mods_changed
= true;
137 if (userspace_config
.rgb_layer_change
&& has_mods_changed
&& biton32(layer_state
) == 0) {
138 if (current_mod
& MODS_SHIFT_MASK
|| current_led
& (1<<USB_LED_CAPS_LOCK
) || current_osm
& MODS_SHIFT_MASK
) {
139 rgblight_sethsv_at(0, 255, 255, 5);
140 rgblight_sethsv_at(0, 255, 255, 10);
142 rgblight_sethsv_default_helper(5);
143 rgblight_sethsv_default_helper(10);
145 if (current_mod
& MODS_CTRL_MASK
|| current_osm
& MODS_CTRL_MASK
) {
146 rgblight_sethsv_at(51, 255, 255, 6);
147 rgblight_sethsv_at(51, 255, 255, 9);
149 rgblight_sethsv_default_helper(6);
150 rgblight_sethsv_default_helper(9);
152 if (current_mod
& MODS_GUI_MASK
|| current_osm
& MODS_GUI_MASK
) {
153 rgblight_sethsv_at(120, 255, 255, 7);
154 rgblight_sethsv_at(120, 255, 255, 8);
156 rgblight_sethsv_default_helper(7);
157 rgblight_sethsv_default_helper(8);