system-manager-wakasu
1/* Copyright 2020 ZSA Technology Labs, Inc <@zsa>
2 * Copyright 2020 Jack Humbert <jack.humb@gmail.com>
3 * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19
20
21#include QMK_KEYBOARD_H
22#include "version.h"
23#include "keymap_us.h"
24#include "keymap_us_international_linux.h"
25#include "layermodes.h"
26
27enum layers {
28 BEPO,
29 ERGL,
30 QWER,
31 SYMB,
32 NUMB,
33 NAVI,
34 MOUS,
35 MODS,
36};
37
38enum custom_keycodes {
39 VRSN = SAFE_RANGE,
40 FR_DQUO,
41 FR_QUOT,
42 FR_GRAVE,
43 FR_CIRC,
44 FR_E_AIGU,
45 FR_E_AIGU_CAPS,
46 FR_E_GRAVE,
47 FR_E_GRAVE_CAPS,
48 FR_A_GRAVE,
49 FR_A_GRAVE_CAPS,
50 NUMWORD, // Numword layer activation
51};
52
53const key_override_t circ_exclamation_override = ko_make_with_layers(MOD_MASK_SHIFT, KC_CIRC, KC_EXLM, 1 << BEPO);
54const key_override_t dot_colon_override = ko_make_with_layers(MOD_MASK_SHIFT, KC_DOT, KC_COLN, 1 << BEPO);
55const key_override_t comma_semicolon_override = ko_make_with_layers(MOD_MASK_SHIFT, HM_HYP_COMM, KC_SCLN, 1 << BEPO);
56
57// Right Alt (AltGr) behaviors for bépo layer
58const key_override_t b_pipe_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, KC_B, KC_PIPE, 1 << BEPO, MOD_MASK_SHIFT);
59const key_override_t b_brkp_override = ko_make_with_layers(MOD_BIT_LSHIFT | MOD_BIT_RALT, KC_B, US_BRKP, 1 << BEPO);
60
61const key_override_t p_amp_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, KC_P, KC_AMPR, 1 << BEPO, MOD_MASK_SHIFT);
62const key_override_t p_sect_override = ko_make_with_layers(MOD_BIT_LSHIFT | MOD_BIT_RALT, KC_P, US_SECT, 1 << BEPO);
63
64const key_override_t o_oe_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, KC_O, US_OE, 1 << BEPO, MOD_MASK_SHIFT);
65const key_override_t o_oe_cap_override = ko_make_with_layers(MOD_BIT_LSHIFT | MOD_BIT_RALT, KC_O, US_OE_CAP, 1 << BEPO);
66
67const key_override_t v_qmark_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, KC_V, KC_QUES, 1 << BEPO, MOD_MASK_SHIFT);
68
69const key_override_t l_fslh_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, KC_L, KC_SLSH, 1 << BEPO, MOD_MASK_SHIFT);
70const key_override_t l_pound_override = ko_make_with_layers(MOD_BIT_LSHIFT | MOD_BIT_RALT, KC_L, US_PND, 1 << BEPO);
71
72const key_override_t y_lbrc_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, KC_Y, KC_LCBR, 1 << BEPO, MOD_MASK_SHIFT);
73const key_override_t y_rsqt_override = ko_make_with_layers(MOD_BIT_LSHIFT | MOD_BIT_RALT, KC_Y, US_RSQT, 1 << BEPO);
74
75const key_override_t x_rbrc_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, KC_X, KC_RCBR, 1 << BEPO, MOD_MASK_SHIFT);
76const key_override_t x_lsqt_override = ko_make_with_layers(MOD_BIT_LSHIFT | MOD_BIT_RALT, KC_X, US_LSQT, 1 << BEPO);
77
78const key_override_t k_tilde_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, KC_K, KC_TILD, 1 << BEPO, MOD_MASK_SHIFT);
79
80const key_override_t q_deg_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, KC_Q, US_DEG, 1 << BEPO, MOD_MASK_SHIFT);
81
82const key_override_t g_mu_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, KC_G, US_MICR, 1 << BEPO, MOD_MASK_SHIFT);
83const key_override_t g_dag_override = ko_make_with_layers(MOD_BIT_LSHIFT | MOD_BIT_RALT, KC_G, US_DAGG, 1 << BEPO);
84
85const key_override_t h_ddag_override = ko_make_with_layers(MOD_BIT_LSHIFT | MOD_BIT_RALT, KC_H, US_DDAG, 1 << BEPO);
86
87const key_override_t agra_bslh_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, FR_A_GRAVE, KC_BSLS, 1 << BEPO, MOD_MASK_SHIFT);
88const key_override_t agra_ae_override = ko_make_with_layers(MOD_BIT_LSHIFT | MOD_BIT_RALT, FR_A_GRAVE, US_AE_CAP, 1 << BEPO);
89
90const key_override_t c_copy_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, HM_HYP_C, US_COPY, 1 << BEPO, MOD_MASK_SHIFT);
91
92const key_override_t t_tm_override = ko_make_with_layers(MOD_BIT_LSHIFT | MOD_BIT_RALT, HM_CTL_T, US_TM, 1 << BEPO);
93
94const key_override_t s_ss_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, HM_SFT_S, US_SS, 1 << BEPO, MOD_MASK_SHIFT);
95
96const key_override_t r_reg_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, HM_ALT_R, US_REGD, 1 << BEPO, MOD_MASK_SHIFT);
97
98const key_override_t n_tilde_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, HM_GUI_N, KC_TILD, 1 << BEPO, MOD_MASK_SHIFT);
99
100const key_override_t space_underscore_override = ko_make_with_layers_and_negmods(MOD_BIT_RALT, LT(NUMB, KC_SPC), KC_UNDS, 1 << BEPO, MOD_MASK_SHIFT);
101
102const key_override_t *key_overrides[] = {
103 &circ_exclamation_override,
104 &dot_colon_override,
105 &comma_semicolon_override,
106
107 // RAlt behaviors
108 &b_pipe_override,
109 &b_brkp_override,
110 &p_amp_override,
111 &p_sect_override,
112 &o_oe_override,
113 &o_oe_cap_override,
114 &v_qmark_override,
115 &l_fslh_override,
116 &l_pound_override,
117 &y_lbrc_override,
118 &y_rsqt_override,
119 &x_rbrc_override,
120 &x_lsqt_override,
121 &k_tilde_override,
122 &q_deg_override,
123 &g_mu_override,
124 &g_dag_override,
125 &h_ddag_override,
126 &agra_bslh_override,
127 &agra_ae_override,
128 &c_copy_override,
129 &t_tm_override,
130 &s_ss_override,
131 &r_reg_override,
132 &n_tilde_override,
133 &space_underscore_override,
134};
135
136void leader_start_user(void) {
137}
138
139void leader_end_user(void) {
140 if (leader_sequence_one_key(KC_F)) {
141 // Leader, f => Types the below string
142 SEND_STRING("QMK is awesome.");
143 }
144}
145
146#define COMBO_REF_DEFAULT QWER
147
148uint8_t combo_ref_from_layer(uint8_t layer){
149 switch (get_highest_layer(layer_state)){
150 case BEPO: return QWER;
151 default: return QWER;
152 }
153 return layer; // important if default is not in case.
154}
155
156enum combos {
157 TO_BEPO, TO_ERGOL, TO_QWERTY,
158 TOGGLE_MOUSE,
159 BEPO_ESC, QWERTY_ESC,
160 // Experiments
161 PIPE, AROBASE, HASH, DOLLAR, SLASH, BSLASH, AMPR, MINUS, UNDERSCORE, EQUAL,
162 LEADER,
163 LPRN, RPRN, LCBR, RCBR, LBRC, RBRC, LABK, RABK,
164};
165
166const uint16_t PROGMEM combo_to_bepo[] = {LT(NAVI,KC_BSPC), OS_LSFT, COMBO_END};
167const uint16_t PROGMEM combo_to_ergol[] = {LT(NUMB,KC_SPC), LT(SYMB, KC_ENT), COMBO_END};
168const uint16_t PROGMEM combo_to_qwerty[] = {KC_DEL, KC_RALT, COMBO_END};
169const uint16_t PROGMEM combo_toggle_mouse[] = {KC_Q, KC_R, COMBO_END};
170
171const uint16_t PROGMEM combo_bepo_escape[] = {HM_ALT_R, HM_GUI_N, COMBO_END};
172const uint16_t PROGMEM combo_qwe_escape[] = {HM_ALT_L, HM_GUI_SCLN, COMBO_END};
173
174const uint16_t PROGMEM combo_qwe_pipe[] = {KC_Q, KC_W, COMBO_END}; // |
175const uint16_t PROGMEM combo_qwe_arobase[] = {KC_W, KC_E, COMBO_END}; // @
176const uint16_t PROGMEM combo_qwe_hash[] = {KC_E, KC_R, COMBO_END}; // #
177const uint16_t PROGMEM combo_qwe_ampr[] = {KC_R, KC_T, COMBO_END}; // &
178const uint16_t PROGMEM combo_qwe_dollar[] = {KC_R, HM_CTL_F, COMBO_END}; // $
179const uint16_t PROGMEM combo_qwe_slash[] = {KC_E, HM_SFT_D, COMBO_END}; // /
180const uint16_t PROGMEM combo_qwe_bslash[] = {HM_SFT_D, KC_C, COMBO_END}; // antislash
181const uint16_t PROGMEM combo_qwe_minus[] = {KC_W, HM_ALT_S, COMBO_END}; // -
182const uint16_t PROGMEM combo_qwe_unds[] = {HM_CTL_F, KC_V, COMBO_END}; // _
183const uint16_t PROGMEM combo_qwe_equal[] = {HM_ALT_S, KC_X, COMBO_END}; // =
184
185const uint16_t PROGMEM combo_qwe_leader[] = {HM_SFT_D, HM_CTL_F, COMBO_END}; // FIXME: change this most likely.
186
187const uint16_t PROGMEM combo_qwe_lprn[] = {KC_I, HM_SFT_K, COMBO_END}; // (
188const uint16_t PROGMEM combo_qwe_rprn[] = {HM_SFT_K, KC_COMM, COMBO_END}; // )
189const uint16_t PROGMEM combo_qwe_lcbr[] = {KC_U, HM_CTL_J, COMBO_END}; // {
190const uint16_t PROGMEM combo_qwe_rcbr[] = {HM_CTL_J, KC_M, COMBO_END}; // }
191const uint16_t PROGMEM combo_qwe_lbrc[] = {KC_O, HM_ALT_L, COMBO_END}; // [
192const uint16_t PROGMEM combo_qwe_rbrc[] = {HM_ALT_L, KC_DOT, COMBO_END}; // ]
193const uint16_t PROGMEM combo_qwe_labk[] = {KC_U, KC_I, COMBO_END}; // <
194const uint16_t PROGMEM combo_qwe_rabk[] = {KC_I, KC_O, COMBO_END}; // >
195
196combo_t key_combos[] = {
197 // Layers
198 [TO_BEPO] = COMBO(combo_to_bepo, TO(BEPO)),
199 [TO_ERGOL] = COMBO(combo_to_ergol, TO(ERGL)),
200 [TO_QWERTY] = COMBO(combo_to_qwerty, TO(QWER)),
201 [TOGGLE_MOUSE] = COMBO(combo_toggle_mouse, TG(MOUS)),
202 // Others
203 [QWERTY_ESC] = COMBO(combo_qwe_escape, KC_ESC),
204 [BEPO_ESC] = COMBO(combo_bepo_escape, KC_ESC),
205 // Experiments
206 [PIPE] = COMBO(combo_qwe_pipe, KC_PIPE),
207 [AROBASE] = COMBO(combo_qwe_arobase, KC_AT),
208 [HASH] = COMBO(combo_qwe_hash, KC_HASH),
209 [DOLLAR] = COMBO(combo_qwe_dollar, KC_DLR),
210 [SLASH] = COMBO(combo_qwe_slash, KC_SLSH),
211 [BSLASH] = COMBO(combo_qwe_bslash, KC_BSLS),
212 [AMPR] = COMBO(combo_qwe_ampr, KC_AMPR),
213 [MINUS] = COMBO(combo_qwe_minus, KC_PMNS),
214 [UNDERSCORE] = COMBO(combo_qwe_unds, KC_UNDS),
215 [EQUAL] = COMBO(combo_qwe_equal, KC_EQL),
216
217 [LEADER] = COMBO(combo_qwe_leader, QK_LEAD),
218
219 [LPRN] = COMBO(combo_qwe_lprn, KC_LPRN),
220 [RPRN] = COMBO(combo_qwe_rprn, KC_RPRN),
221 [LCBR] = COMBO(combo_qwe_lcbr, KC_LCBR),
222 [RCBR] = COMBO(combo_qwe_rcbr, KC_RCBR),
223 [LBRC] = COMBO(combo_qwe_lbrc, KC_LBRC),
224 [RBRC] = COMBO(combo_qwe_rbrc, KC_RBRC),
225 [LABK] = COMBO(combo_qwe_labk, KC_LABK),
226 [RABK] = COMBO(combo_qwe_rabk, KC_RABK),
227};
228
229bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record) {
230 switch (combo_index) {
231 case BEPO_ESC:
232 if (layer_state_is(BEPO)) {
233 return true;
234 }
235 return false;
236 case QWERTY_ESC:
237 if (layer_state_is(QWER)) {
238 return true;
239 }
240 return false;
241 }
242 return true;
243}
244
245tap_dance_action_t tap_dance_actions[] = {
246};
247
248const char chordal_hold_layout[MATRIX_ROWS][MATRIX_COLS] PROGMEM = LAYOUT(
249 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
250 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
251 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
252 'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R',
253 'L', 'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R', 'R',
254 'L', 'L', 'L', 'R', 'R', 'R'
255);
256
257// clang-format off
258const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
259 // ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
260 // │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │
261 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
262 // │ TAB │ B │ É │ P │ O │ È │ XXXXXXX │ │ XXXXXXX │ ^ │ V │ D │ L │ J │ Z │
263 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
264 // │ NUMWORD │ GUI/A │ ALT/U │ SFT/I │ CTL/E │ HYP/, │ XXXXXXX │ │ XXXXXXX │ HYP/C │ CTL/T │ SFT/S │ ALT/R │ GUI/N │ SYMB/M │
265 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┘ └─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
266 // │ GRV │ À │ Y │ X │ . │ K │ │ ' │ Q │ G │ H │ F │ W │
267 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼───────────────┐ ┌───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
268 // │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ MODS/DEL│ │ REPEAT │ │ ALT-REP │ │ RALT │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │
269 // └─────────┴─────────┴─────────┴─────────┴─────────┼─────────┼─────────┬─────┤ ├─────┬─────┼─────────┼─────────┴─────────┴─────────┴─────────┴─────────┘
270 // │ NUMB/SPC│ NAVI/BSP│ XXX │ │ XXX │SHIFT│ SYMB/ENT│
271 // └─────────┴─────────┴─────┘ └─────┴─────┴─────────┘
272 [BEPO] = LAYOUT(
273 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
274 KC_TAB, KC_B, FR_E_AIGU, KC_P, KC_O, FR_E_GRAVE, XXXXXXX, XXXXXXX, KC_CIRC, KC_V, KC_D, KC_L, KC_J, KC_Z,
275 NUMWORD, HM_GUI_A, HM_ALT_U, HM_SFT_I, HM_CTL_E, HM_HYP_COMM, XXXXXXX, XXXXXXX, HM_HYP_C, HM_CTL_T, HM_SFT_S, HM_ALT_R, HM_GUI_N, LT(SYMB,KC_M),
276 KC_GRV, FR_A_GRAVE, KC_Y, KC_X, KC_DOT, KC_K, FR_QUOT, KC_Q, KC_G, KC_H, KC_F, KC_W,
277 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LT(MODS,KC_DEL), QK_REP, QK_AREP, KC_RALT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
278 LT(NUMB,KC_SPC), LT(NAVI,KC_BSPC), XXXXXXX, XXXXXXX, OS_LSFT, LT(SYMB,KC_ENT)
279 ),
280
281 // ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
282 // │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │
283 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
284 // │ TAB │ Q │ W │ E │ R │ T │ XXXXXXX │ │ XXXXXXX │ Y │ U │ I │ O │ P │ [ │
285 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
286 // │ NUMWORD │ GUI/A │ ALT/S │ SFT/D │ CTL/F │ HYP/G │ XXXXXXX │ │ XXXXXXX │ HYP/H │ CTL/J │ SFT/K │ ALT/L │ GUI/; │ " │
287 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┘ └─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
288 // │ GRV │ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │ ] │
289 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼───────────────┐ ┌───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
290 // │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ DEL │ │ REPEAT │ │ ALT-REP │ │ RALT │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │
291 // └─────────┴─────────┴─────────┴─────────┴─────────┼─────────┼─────────┬─────┤ ├─────┬─────┼─────────┼─────────┴─────────┴─────────┴─────────┴─────────┘
292 // │ NUMB/SPC│ NAVI/BSP│ XXX │ │ XXX │SHIFT│ SYMB/ENT│
293 // └─────────┴─────────┴─────┘ └─────┴─────┴─────────┘
294 [ERGL] = LAYOUT(
295 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
296 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
297 NUMWORD, HM_GUI_A, HM_ALT_S, HM_SFT_D, HM_CTL_F, HM_HYP_G, XXXXXXX, XXXXXXX, HM_HYP_H, HM_CTL_J, HM_SFT_K, HM_ALT_L, HM_GUI_SCLN, KC_QUOT,
298 KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RBRC,
299 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, QK_REP, QK_AREP, KC_RALT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
300 LT(NUMB,KC_SPC), LT(NAVI,KC_BSPC), XXXXXXX, XXXXXXX, OS_LSFT, LT(SYMB,KC_ENT)
301 ),
302
303 // ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
304 // │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │
305 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
306 // │ TAB │ Q │ W │ E │ R │ T │ XXXXXXX │ │ XXXXXXX │ Y │ U │ I │ O │ P │ [ │
307 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
308 // │ NUMWORD │ GUI/A │ ALT/S │ SFT/D │ CTL/F │ HYP/G │ XXXXXXX │ │ XXXXXXX │ HYP/H │ CTL/J │ SFT/K │ ALT/L │ GUI/; │ " │
309 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┘ └─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
310 // │ GRV │ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │ ] │
311 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼───────────────┐ ┌───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
312 // │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ DEL │ │ REPEAT │ │ ALT-REP │ │ RALT │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │
313 // └─────────┴─────────┴─────────┴─────────┴─────────┼─────────┼─────────┬─────┤ ├─────┬─────┼─────────┼─────────┴─────────┴─────────┴─────────┴─────────┘
314 // │ NUMB/SPC│ NAVI/BSP│ XXX │ │ XXX │SHIFT│ SYMB/ENT│
315 // └─────────┴─────────┴─────┘ └─────┴─────┴─────────┘
316 [QWER] = LAYOUT(
317 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
318 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
319 NUMWORD, HM_GUI_A, HM_ALT_S, HM_SFT_D, HM_CTL_F, HM_HYP_G, XXXXXXX, XXXXXXX, HM_HYP_H, HM_CTL_J, HM_SFT_K, HM_ALT_L, HM_GUI_SCLN, KC_QUOT,
320 KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RBRC,
321 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, QK_REP, QK_AREP, KC_RALT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
322 LT(NUMB,KC_SPC), LT(NAVI,KC_BSPC), XXXXXXX, XXXXXXX, OS_LSFT, LT(SYMB,KC_ENT)
323 ),
324
325 // ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
326 // │ VRSN │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │
327 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
328 // │ \ │ ` │ < │ > │ - │ | │ XXXXXXX │ │ XXXXXXX │ ^ │ { │ } │ $ │ ^ │ XXXXXXX │
329 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
330 // │ XXXXXXX │ ! │ * │ / │ = │ & │ XXXXXXX │ │ XXXXXXX │ # │ ( │ ) │ ; │ " │ XXXXXXX │
331 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┘ └─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
332 // │ XXXXXXX │ ~ │ [ │ ] │ + │ % │ │ @ │ : │ , │ . │ ' │ XXXXXXX │
333 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼───────────────┐ ┌───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
334 // │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ _____ │ │ RGB VAL+ │ │ RGB TOG │ │ _____ │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │
335 // └─────────┴─────────┴─────────┴─────────┴─────────┼─────────┼─────────┬─────┤ ├─────┬─────┼─────────┼─────────┴─────────┴─────────┴─────────┴─────────┘
336 // │ XXXXXXX │ XXXXXXX │ XXX │ │ XXX │_____│ _____ │
337 // └─────────┴─────────┴─────┘ └─────┴─────┴─────────┘
338 [SYMB] = LAYOUT(
339 VRSN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
340 KC_BSLS, FR_GRAVE, KC_LABK, KC_RABK, KC_PMNS, KC_PIPE, XXXXXXX, XXXXXXX, KC_CIRC, KC_LCBR, KC_RCBR, KC_DLR, FR_CIRC, XXXXXXX,
341 XXXXXXX, KC_EXLM, KC_PAST, KC_PSLS, KC_EQL, KC_AMPR, XXXXXXX, XXXXXXX, KC_HASH, KC_LPRN, KC_RPRN, KC_SCLN, FR_DQUO, XXXXXXX,
342 XXXXXXX, KC_TILD, KC_LBRC, KC_RBRC, KC_PLUS, KC_PERC, KC_AT, KC_COLN, KC_COMM, KC_DOT, FR_QUOT, XXXXXXX,
343 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, RM_VALU, RM_TOGG, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
344 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______
345 ),
346
347 // ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
348 // │ VRSN │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │
349 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
350 // │ _____ │ F1 │ F2 │ F3 │ F4 │ F5 │ _____ │ │ _____ │ _____ │ 7 │ 8 │ 9 │ * │ / │
351 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
352 // │ _____ │ F6 │ F7 │ F8 │ F9 │ F10 │ _____ │ │ _____ │ _____ │ 4 │ 5 │ 6 │ - │ + │
353 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┘ └─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
354 // │ _____ │ F11 │ F12 │ F13 │ F14 │ F15 │ │ _____ │ 1 │ 2 │ 3 │ . │ , │
355 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼───────────────┐ ┌───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
356 // │ EE CLR │ _____ │ _____ │ _____ │ _____ │ │ _____ │ │ _____ │ │ 0 │ _____ │ _____ │ _____ │ _____ │
357 // └─────────┴─────────┴─────────┴─────────┴─────────┼─────────┼─────────┬─────┤ ├─────┬─────┼─────────┼─────────┴─────────┴─────────┴─────────┴─────────┘
358 // │ _____ │ _____ │ ___ │ │ ___ │_____│ _____ │
359 // └─────────┴─────────┴─────┘ └─────┴─────┴─────────┘
360 [NUMB] = LAYOUT(
361 VRSN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
362 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_7, KC_8, KC_9, KC_PAST, KC_PSLS,
363 _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, KC_4, KC_5, KC_6, KC_PMNS, KC_PPLS,
364 _______, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, KC_1, KC_2, KC_3, KC_PDOT, KC_PCMM,
365 EE_CLR, _______, _______, _______, _______, _______, _______, KC_0, _______, _______, _______, _______,
366 _______, _______, _______, _______, _______, _______
367 ),
368
369 // ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
370 // │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │
371 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
372 // │ VRSN │ _____ │ @ │ { │ } │ | │ _____ │ │ _____ │ PRTSCR │ HOME │ UP │ END │ PG UP │ BOOT │
373 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
374 // │ _____ │ _____ │ MED PRV │ MED PLY │ MED NXT │ _____ │ _____ │ │ _____ │ _____ │ LEFT │ DOWN │ RIGHT │ PG DN │ _____ │
375 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┘ └─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
376 // │ _____ │ _____ │ _____ │ _____ │ _____ │ _____ │ │ MUTE │ _____ │ _____ │ _____ │ _____ │ _____ │
377 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼───────────────┐ ┌───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
378 // │ EE CLR │ _____ │ _____ │ _____ │ _____ │ │ VOL DN │ │ VOL UP │ │ _____ │ _____ │ _____ │ _____ │ _____ │
379 // └─────────┴─────────┴─────────┴─────────┴─────────┼─────────┼─────────┬─────┤ ├─────┬─────┼─────────┼─────────┴─────────┴─────────┴─────────┴─────────┘
380 // │ _____ │ _____ │ ___ │ │ ___ │_____│ _____ │
381 // └─────────┴─────────┴─────┘ └─────┴─────┴─────────┘
382 [NAVI] = LAYOUT(
383 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
384 VRSN, _______, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, KC_PSCR, KC_HOME, KC_UP, KC_END, KC_PGUP, QK_BOOT,
385 _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
386 _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______,
387 EE_CLR, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______,
388 _______, _______, _______, _______, _______, _______
389 ),
390
391
392 // ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
393 // │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ BOOT │
394 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
395 // │ _____ │ _____ │ _____ │ _____ │ _____ │ _____ │ _____ │ │ _____ │ _____ │ _____ │ MS UP │ _____ │ _____ │ _____ │
396 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
397 // │ _____ │ WHL L │ WHL U │ WHL D │ WHL R │ _____ │ _____ │ │ _____ │ _____ │ MS LFT │ MS DN │ MS RGT │ _____ │ _____ │
398 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┘ └─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
399 // │ _____ │ _____ │ _____ │ _____ │ _____ │ _____ │ │ _____ │ _____ │ _____ │ _____ │ _____ │ _____ │
400 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼───────────────┐ ┌───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
401 // │ EE CLR │ _____ │ _____ │ _____ │ _____ │ │ VOL DN │ │ VOL UP │ │ _____ │ _____ │ _____ │ _____ │ _____ │
402 // └─────────┴─────────┴─────────┴─────────┴─────────┼─────────┼─────────┬─────┤ ├─────┬─────┼─────────┼─────────┴─────────┴─────────┴─────────┴─────────┘
403 // │ BTN 1 │ BTN 3 │ ___ │ │ ___ │BTN 3│ BTN 2 │
404 // └─────────┴─────────┴─────┘ └─────┴─────┴─────────┘
405 [MOUS] = LAYOUT(
406 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
407 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_UP, _______, _______, _______,
408 _______, MS_WHLL, MS_WHLU, MS_WHLD, MS_WHLR, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_RGHT, _______, _______,
409 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
410 EE_CLR, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______,
411 MS_BTN1, MS_BTN3, _______, _______, MS_BTN3, MS_BTN2
412 ),
413
414 // ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
415 // │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ XXXXXXX │ BOOT │
416 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
417 // │ _____ │ _____ │ _____ │ _____ │ _____ │ _____ │ _____ │ │ _____ │ _____ │ _____ │ MS UP │ _____ │ _____ │ _____ │
418 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
419 // │ _____ │ GUI │ ALT │ SHIFT │ CTL │ HYPER │ _____ │ │ _____ │ _____ │ CTL │ SHIFT │ ALT │ GUI │ _____ │
420 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┘ └─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
421 // │ _____ │ _____ │ _____ │ _____ │ _____ │ _____ │ │ _____ │ _____ │ _____ │ _____ │ _____ │ _____ │
422 // ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼───────────────┐ ┌───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
423 // │ EE CLR │ _____ │ _____ │ _____ │ _____ │ │ VOL DN │ │ VOL UP │ │ _____ │ _____ │ _____ │ _____ │ _____ │
424 // └─────────┴─────────┴─────────┴─────────┴─────────┼─────────┼─────────┬─────┤ ├─────┬─────┼─────────┼─────────┴─────────┴─────────┴─────────┴─────────┘
425 // │ BTN 1 │ BTN 3 │ ___ │ │ ___ │BTN 3│ BTN 2 │
426 // └─────────┴─────────┴─────┘ └─────┴─────┴─────────┘
427 [MODS] = LAYOUT(
428 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
429 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MS_UP, _______, _______, _______,
430 _______, OS_LGUI, OS_LALT, OS_LSFT, OS_LCTL, OS_HYPR, _______, _______, _______, OS_LCTL, OS_LSFT, OS_LALT, OS_LGUI, _______,
431 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
432 EE_CLR, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______,
433 MS_BTN1, MS_BTN3, _______, _______, MS_BTN3, MS_BTN2
434 ),
435};
436
437bool process_record_user(uint16_t keycode, keyrecord_t *record) {
438 uint8_t current_layer = get_highest_layer(layer_state);
439 uint8_t mod_state = get_mods();
440
441 // Process numword before other logic
442 if (!process_num_word(keycode, record)) {
443 return false;
444 }
445
446 // Handle NUMWORD separately since it needs both press and release
447 if (keycode == NUMWORD) {
448 process_num_word_activation(NUMB, record);
449 return false;
450 }
451
452 if (record->event.pressed) {
453 switch (keycode) {
454 case VRSN:
455 SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
456 return false;
457 case SFTLLCK:
458 if (record->tap.count) {
459 if (record->event.pressed) {
460 // Toggle the lock on the highest layer.
461 layer_lock_invert(get_highest_layer(layer_state));
462 }
463 return false;
464 }
465 break;
466 case FR_DQUO:
467 if (record->event.pressed) {
468 // if layer is bepo, and shift is on, send ?
469 if (IS_LAYER_ON_STATE(current_layer, BEPO) && (get_mods() & MOD_MASK_SHIFT)) {
470 del_mods(MOD_MASK_SHIFT);
471 SEND_STRING(SS_TAP(X_1));
472 set_mods(mod_state);
473 } else {
474 SEND_STRING(FR_DQUO_M);
475 }
476 }
477 break;
478 case FR_QUOT:
479 // if layer is bepo, and shift is on, send ?
480 if (IS_LAYER_ON_STATE(current_layer, BEPO) && (get_mods() & MOD_MASK_SHIFT)) {
481 del_mods(MOD_MASK_SHIFT);
482 SEND_STRING(SS_LSFT(SS_TAP(X_SLASH)));
483 set_mods(mod_state);
484 } else {
485 SEND_STRING(FR_QUOT_M);
486 }
487 break;
488 case FR_GRAVE:
489 if (record->event.pressed) {
490 SEND_STRING(FR_GRAVE_M);
491 }
492 break;
493 case FR_CIRC:
494 if (record->event.pressed) {
495 SEND_STRING(FR_CIRC_M);
496 }
497 break;
498 case FR_E_AIGU:
499 if (record->event.pressed) {
500 if (get_mods() & MOD_MASK_SHIFT) {
501 // É
502 del_mods(MOD_MASK_SHIFT);
503 SEND_STRING(FR_E_AIGU_CAPS_M);
504 set_mods(mod_state);
505 } else {
506 // é
507 SEND_STRING(FR_E_AIGU_M);
508 }
509 }
510 break;
511 case FR_E_AIGU_CAPS:
512 if (record->event.pressed) {
513 SEND_STRING(FR_E_AIGU_CAPS_M);
514 }
515 break;
516 case FR_E_GRAVE:
517 if (record->event.pressed) {
518 if (get_mods() & MOD_MASK_SHIFT) {
519 //
520 del_mods(MOD_MASK_SHIFT);
521 SEND_STRING(FR_E_GRAVE_CAPS_M);
522 set_mods(mod_state);
523 } else {
524 // è
525 SEND_STRING(FR_E_GRAVE_M);
526 }
527 }
528 break;
529 case FR_E_GRAVE_CAPS:
530 if (record->event.pressed) {
531 SEND_STRING(FR_E_GRAVE_CAPS_M);
532 }
533 break;
534 case FR_A_GRAVE:
535 if (record->event.pressed) {
536 if (get_mods() & MOD_MASK_SHIFT) {
537 del_mods(MOD_MASK_SHIFT);
538 SEND_STRING(FR_A_GRAVE_CAPS_M);
539 set_mods(mod_state);
540 } else {
541 // à
542 SEND_STRING(FR_A_GRAVE_M);
543 }
544 }
545 break;
546 case FR_A_GRAVE_CAPS:
547 if (record->event.pressed) {
548 SEND_STRING(FR_A_GRAVE_CAPS_M);
549 }
550 break;
551 }
552 }
553 return true;
554}
555
556extern rgb_config_t rgb_matrix_config;
557
558// Line 2 home-row (7 12 17 22 [27] and [63] 58 53 48 43)
559void my_set_rgb_matrix_color_homerow(uint8_t red, uint8_t green, uint8_t blue) {
560 rgb_matrix_set_color(7, red, green, blue);
561 rgb_matrix_set_color(12, red, green, blue);
562 rgb_matrix_set_color(17, red, green, blue);
563 rgb_matrix_set_color(22, red, green, blue);
564
565 rgb_matrix_set_color(58, red, green, blue);
566 rgb_matrix_set_color(53, red, green, blue);
567 rgb_matrix_set_color(48, red, green, blue);
568 rgb_matrix_set_color(43, red, green, blue);
569}
570
571void my_set_rgb_matrix_color_line(int line, uint8_t red, uint8_t green, uint8_t blue) {
572 if (line == 0 || line == 1 || line == 2) {
573 // Left
574 rgb_matrix_set_color(line, red, green, blue);
575 rgb_matrix_set_color(line+5, red, green, blue);
576 rgb_matrix_set_color(line+10, red, green, blue);
577 rgb_matrix_set_color(line+15, red, green, blue);
578 rgb_matrix_set_color(line+20, red, green, blue);
579 rgb_matrix_set_color(line+25, red, green, blue);
580 /* rgb_matrix_set_color(line+29, red, green, blue); */
581 // Right
582 /* rgb_matrix_set_color(line+65, red, green, blue); */
583 rgb_matrix_set_color(line+61, red, green, blue);
584 rgb_matrix_set_color(line+56, red, green, blue);
585 rgb_matrix_set_color(line+51, red, green, blue);
586 rgb_matrix_set_color(line+46, red, green, blue);
587 rgb_matrix_set_color(line+41, red, green, blue);
588 rgb_matrix_set_color(line+36, red, green, blue);
589 } else if (line == 3) {
590 // Left
591 rgb_matrix_set_color(3, red, green, blue);
592 rgb_matrix_set_color(8, red, green, blue);
593 rgb_matrix_set_color(13, red, green, blue);
594 rgb_matrix_set_color(18, red, green, blue);
595 rgb_matrix_set_color(23, red, green, blue);
596 rgb_matrix_set_color(28, red, green, blue);
597 // Right
598 rgb_matrix_set_color(64, red, green, blue);
599 rgb_matrix_set_color(59, red, green, blue);
600 rgb_matrix_set_color(54, red, green, blue);
601 rgb_matrix_set_color(49, red, green, blue);
602 rgb_matrix_set_color(44, red, green, blue);
603 rgb_matrix_set_color(39, red, green, blue);
604 } else if (line == 4) {
605 // Left
606 /* rgb_matrix_set_color(4, red, green, blue); */
607 /* rgb_matrix_set_color(9, red, green, blue); */
608 /* rgb_matrix_set_color(14, red, green, blue); */
609 /* rgb_matrix_set_color(19, red, green, blue); */
610 rgb_matrix_set_color(24, red, green, blue);
611 rgb_matrix_set_color(32, red, green, blue);
612 rgb_matrix_set_color(33, red, green, blue);
613 /* rgb_matrix_set_color(34, red, green, blue); */
614 rgb_matrix_set_color(35, red, green, blue);
615 // Right
616 rgb_matrix_set_color(60, red, green, blue);
617 /* rgb_matrix_set_color(55, red, green, blue); */
618 /* rgb_matrix_set_color(50, red, green, blue); */
619 /* rgb_matrix_set_color(45, red, green, blue); */
620 /* rgb_matrix_set_color(40, red, green, blue); */
621 rgb_matrix_set_color(68, red, green, blue);
622 rgb_matrix_set_color(69, red, green, blue);
623 /* rgb_matrix_set_color(70, red, green, blue); */
624 rgb_matrix_set_color(71, red, green, blue);
625 }
626}
627
628// matrix, to set key with. maybe there is a better way but used ascii generator so i can easily set those visually
629// ┌────┬────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────┬────┐
630// │ 0 │ 5 │ 10 │ 15 │ 20 │ 25 │ 29 │ │ 65 │ 61 │ 56 │ 51 │ 46 │ 41 │ 36 │
631// ├────┼────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┼────┤
632// │ 1 │ 6 │ 11 │ 16 │ 21 │ 26 │ 30 │ │ 66 │ 62 │ 57 │ 52 │ 47 │ 42 │ 37 │
633// ├────┼────┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼────┼────┼────┤
634// │ 2 │ 7 │ 12 │ 17 │[22]│ 27 │ 31 │ │ 67 │ 63 │[58]│ 53 │ 48 │ 43 │ 38 │
635// ├────┼────┼────┼────┼────┼────┼────┘ └────┼────┼────┼────┼────┼────┼────┤
636// │ 3 │ 8 │ 13 │ 18 │ 23 │ 28 │ │ 64 │ 59 │ 54 │ 49 │ 44 │ 39 │
637// ├────┼────┼────┼────┼────┼────┼─────────┐ ┌─────────┼────┼────┼────┼────┼────┼────┤
638// │ 4 │ 9 │ 14 │ 19 │ 24 │ │ 35 │ │ 71 │ │ 60 │ 55 │ 50 │ 45 │ 40 │
639// └────┴────┴────┴────┴────┼────┼────┬────┤ ├────┬────┼────┼────┴────┴────┴────┴────┘
640// │ 32 │ 33 │ 34 │ │ 70 │ 69 │ 68 │
641// └────┴────┴────┘ └────┴────┴────┘
642// Runs constantly in the background, in a loop.
643bool rgb_matrix_indicators_user(void) {
644 if (rgb_matrix_get_flags() & (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER)) {
645 switch (get_highest_layer(layer_state)) {
646 case BEPO:
647 rgb_matrix_set_color_all(RGB_OFF);
648 // Line 1
649 my_set_rgb_matrix_color_line(1,213,144,0);
650 // Line 2
651 my_set_rgb_matrix_color_line(2,27,213,0);
652 my_set_rgb_matrix_color_homerow(206,255,206);
653 // Line 3
654 my_set_rgb_matrix_color_line(3,0,255,167);
655 // Line 4
656 my_set_rgb_matrix_color_line(4,0,113,255);
657 break;
658 case ERGL:
659 rgb_matrix_set_color_all(RGB_OFF);
660 // ERGOL layer
661 rgb_matrix_set_color(34, 0, 113, 255);
662 rgb_matrix_set_color(70, 0, 113, 255);
663 // Line 1
664 my_set_rgb_matrix_color_line(1,213,144,0);
665 // Line 2
666 my_set_rgb_matrix_color_line(2,27,213,0);
667 my_set_rgb_matrix_color_homerow(206,255,206);
668 // Line 3
669 my_set_rgb_matrix_color_line(3,0,255,167);
670 // Line 4
671 my_set_rgb_matrix_color_line(4,0,113,255);
672 break;
673 case QWER:
674 rgb_matrix_set_color_all(RGB_OFF);
675 // QWERTY layer
676 rgb_matrix_set_color(34, 27,213,0);
677 rgb_matrix_set_color(70, 27,213,0);
678 // Line 1
679 my_set_rgb_matrix_color_line(1,213,144,0);
680 // Line 2
681 my_set_rgb_matrix_color_line(2,27,213,0);
682 my_set_rgb_matrix_color_homerow(206,255,206);
683 // Line 3
684 my_set_rgb_matrix_color_line(3,0,255,167);
685 // Line 4
686 my_set_rgb_matrix_color_line(4,0,113,255);
687 break;
688 case NUMB:
689 rgb_matrix_set_color_all(RGB_OFF);
690
691 rgb_matrix_set_color(0, RGB_RED);
692
693 rgb_matrix_set_color(6, 0, 55, 255); // FX
694 rgb_matrix_set_color(11, 0, 55, 255); // FX
695 rgb_matrix_set_color(16, 0, 55, 255); // FX
696 rgb_matrix_set_color(21, 0, 55, 255); // FX
697 rgb_matrix_set_color(26, 0, 55, 255); // FX
698 rgb_matrix_set_color(7, 0, 55, 255); // FX
699 rgb_matrix_set_color(12, 0, 55, 255); // FX
700 rgb_matrix_set_color(17, 0, 55, 255); // FX
701 rgb_matrix_set_color(22, 0, 55, 255); // FX
702 rgb_matrix_set_color(27, 0, 55, 255); // FX
703 rgb_matrix_set_color(8, 0, 55, 255); // FX
704 rgb_matrix_set_color(13, 0, 55, 255); // FX
705
706
707 rgb_matrix_set_color(18, 0, 183, 255); // FX
708 rgb_matrix_set_color(23, 0, 183, 255); // FX
709 rgb_matrix_set_color(28, 0, 183, 255); // FX
710
711 rgb_matrix_set_color(60, 255, 255, 255); // 0
712 rgb_matrix_set_color(47, 255, 199, 0); // number
713 rgb_matrix_set_color(48, 255, 199, 0); // number
714 rgb_matrix_set_color(49, 255, 199, 0); // number
715 rgb_matrix_set_color(52, 255, 199, 0); // number
716 rgb_matrix_set_color(53, 255, 199, 0); // number
717 rgb_matrix_set_color(54, 255, 199, 0); // number
718 rgb_matrix_set_color(57, 255, 199, 0); // number
719 rgb_matrix_set_color(58, 255, 199, 0); // number
720 rgb_matrix_set_color(59, 255, 199, 0); // number
721
722 rgb_matrix_set_color(42, 183, 255, 0); // calc
723 rgb_matrix_set_color(43, 183, 255, 0); // calc
724 rgb_matrix_set_color(44, 183, 255, 0); // calc
725 rgb_matrix_set_color(37, 183, 255, 0); // calc
726 rgb_matrix_set_color(38, 183, 255, 0); // calc
727 rgb_matrix_set_color(39, 183, 255, 0); // calc
728 break;
729 case SYMB:
730 rgb_matrix_set_color_all(RGB_OFF);
731 // () {} [] <>
732 rgb_matrix_set_color(11, 27, 213, 0);
733 rgb_matrix_set_color(16, 27, 213, 0);
734 rgb_matrix_set_color(13, 27, 213, 0);
735 rgb_matrix_set_color(18, 27, 213, 0);
736 rgb_matrix_set_color(57, 27, 213, 0);
737 rgb_matrix_set_color(58, 27, 213, 0);
738 rgb_matrix_set_color(52, 27, 213, 0);
739 rgb_matrix_set_color(53, 27, 213, 0);
740
741 // +-=/*
742 rgb_matrix_set_color(23, 29, 204, 67);
743 rgb_matrix_set_color(12, 29, 204, 67);
744 rgb_matrix_set_color(17, 29, 204, 67);
745 rgb_matrix_set_color(22, 29, 204, 67);
746 rgb_matrix_set_color(21, 29, 204, 67);
747 rgb_matrix_set_color(1, 29, 204, 67); // anti-slash
748
749 // `!~|&%^#
750 rgb_matrix_set_color(6, 255, 199, 0);
751 rgb_matrix_set_color(7, 255, 199, 0);
752 rgb_matrix_set_color(8, 255, 199, 0);
753 rgb_matrix_set_color(26, 255, 199, 0);
754 rgb_matrix_set_color(27, 255, 199, 0);
755 rgb_matrix_set_color(28, 255, 199, 0);
756 rgb_matrix_set_color(62, 255, 199, 0);
757 rgb_matrix_set_color(42, 255, 199, 0);
758 rgb_matrix_set_color(63, 255, 199, 0);
759
760 // "'
761 rgb_matrix_set_color(43, 204, 202, 29);
762 rgb_matrix_set_color(44, 204, 202, 29);
763
764 // :;,.
765 rgb_matrix_set_color(59, 29, 120, 204);
766 rgb_matrix_set_color(54, 29, 120, 204);
767 rgb_matrix_set_color(48, 29, 120, 204);
768 rgb_matrix_set_color(49, 29, 120, 204);
769
770 // @ $
771 rgb_matrix_set_color(47, 174, 29, 204);
772 rgb_matrix_set_color(64, 174, 29, 204);
773
774 break;
775 case NAVI:
776 rgb_matrix_set_color_all(RGB_OFF);
777
778 rgb_matrix_set_color(1, RGB_RED);
779 rgb_matrix_set_color(37, RGB_RED);
780
781 // Arrows
782 rgb_matrix_set_color(52, 0, 113, 255);
783 rgb_matrix_set_color(53, 0, 113, 255);
784 rgb_matrix_set_color(58, 0, 113, 255);
785 rgb_matrix_set_color(48, 0, 113, 255);
786 // Home, End, PgUp, PgDown
787 rgb_matrix_set_color(57, 13, 0, 255);
788 rgb_matrix_set_color(47, 13, 0, 255);
789 rgb_matrix_set_color(42, 13, 0, 255);
790 rgb_matrix_set_color(43, 13, 0, 255);
791
792 // Media
793 rgb_matrix_set_color(12, 27, 213, 0);
794 rgb_matrix_set_color(17, 27, 213, 0);
795 rgb_matrix_set_color(22, 27, 213, 0);
796
797 // Volume
798 rgb_matrix_set_color(35, 170, 0, 255);
799 rgb_matrix_set_color(71, 170, 0, 255);
800 rgb_matrix_set_color(64, 170, 0, 255);
801
802 // PrintScreen
803 rgb_matrix_set_color(62, 255, 255, 255);
804 break;
805 case MOUS:
806 rgb_matrix_set_color_all(RGB_OFF);
807 // mouse movements
808 rgb_matrix_set_color(52, 0, 113, 255);
809 rgb_matrix_set_color(53, 0, 113, 255);
810 rgb_matrix_set_color(58, 0, 113, 255);
811 rgb_matrix_set_color(48, 0, 113, 255);
812 // wheel
813
814 rgb_matrix_set_color(7, 13, 0, 255);
815 rgb_matrix_set_color(12, 13, 0, 255);
816 rgb_matrix_set_color(17, 13, 0, 255);
817 rgb_matrix_set_color(22, 13, 0, 255);
818 // clicks
819 rgb_matrix_set_color(32, 170, 0, 255);
820 rgb_matrix_set_color(33, 170, 0, 255);
821 rgb_matrix_set_color(68, 170, 0, 255);
822 rgb_matrix_set_color(69, 170, 0, 255);
823 break;
824 default:
825 rgb_matrix_set_color_all(RGB_OFF);
826 break;
827 }
828 }
829 return false;
830}
831
832void caps_word_set_user(bool active) {
833 if (active) {
834 rgb_matrix_set_color(40, 255, 255, 255);
835 } else {
836 rgb_matrix_set_color(40, RGB_OFF);
837 }
838}