aboutsummaryrefslogtreecommitdiff
path: root/keyboards/jian/keymaps/advanced/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/jian/keymaps/advanced/keymap.c')
-rw-r--r--keyboards/jian/keymaps/advanced/keymap.c584
1 files changed, 584 insertions, 0 deletions
diff --git a/keyboards/jian/keymaps/advanced/keymap.c b/keyboards/jian/keymaps/advanced/keymap.c
new file mode 100644
index 000000000..417678f7e
--- /dev/null
+++ b/keyboards/jian/keymaps/advanced/keymap.c
@@ -0,0 +1,584 @@
1#include QMK_KEYBOARD_H
2
3typedef union {
4 uint32_t raw;
5 struct {
6 bool thumb_alt :1;
7 bool iso :1;
8 };
9} user_config_t;
10
11user_config_t user_config;
12
13#ifdef STENO_ENABLE
14#include "keymap_steno.h"
15#endif // STENO_ENABLE
16
17
18#define QWERTY_base KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, \
19 KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
20 KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
21#define DVORAK_base KC_GRV, KC_QUOT, KC_COMM, KC_DOT,KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_LBRC, KC_RBRC, \
22 KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
23 KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z
24#define COLEMAK_base KC_GRV, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, \
25 KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
26 KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
27#define WORKMAN_base KC_GRV, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_LBRC, KC_RBRC, \
28 KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, \
29 KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH
30#ifdef ALT_LAYOUTS_ENABLE
31#include "keymap_dvorak.h"
32#include "keymap_colemak.h"
33#include "keymap_workman.h"
34#define DVK2QWE_base DV_GRV, DV_Q, DV_W, DV_E, DV_R, DV_T, DV_Y, DV_U, DV_I, DV_O, DV_P, DV_LBRC, DV_RBRC, \
35 DV_A, DV_S, DV_D, DV_F, DV_G, DV_H, DV_J, DV_K, DV_L, DV_SCLN, DV_QUOT, \
36 DV_Z, DV_X, DV_C, DV_V, DV_B, DV_N, DV_M, DV_COMM, DV_DOT, DV_SLSH
37#define CMK2QWE_base KC_GRV, CM_Q, CM_W, CM_E, CM_R, CM_T, CM_Y, CM_U, CM_I, CM_O, CM_P, KC_LBRC, KC_RBRC, \
38 CM_A, CM_S, CM_D, CM_F, CM_G, CM_H, CM_J, CM_K, CM_L, CM_SCLN, KC_QUOT, \
39 CM_Z, CM_X, CM_C, CM_V, CM_B, CM_N, CM_M, CM_COMM, CM_DOT, CM_SLSH
40#define WMN2QWE_base KC_GRV, WK_Q, WK_W, WK_E, WK_R, WK_T, WK_Y, WK_U, WK_I, WK_O, WK_P, KC_LBRC, KC_RBRC, \
41 WK_A, WK_S, WK_D, WK_F, WK_G, WK_H, WK_J, WK_K, WK_L, WK_SCLN, KC_QUOT, \
42 WK_Z, WK_X, WK_C, WK_V, WK_B, WK_N, WK_M, KC_COMM, KC_DOT, KC_SLSH
43#define CMK2DVK_base KC_GRV, KC_QUOT, KC_COMM, KC_DOT,CM_P, CM_Y, CM_F, CM_G, CM_C, CM_R, CM_L, KC_LBRC, KC_RBRC, \
44 CM_A, CM_O, CM_E, CM_U, CM_I, CM_D, CM_H, CM_T, CM_N, CM_S, CM_SLSH, \
45 CM_SCLN, CM_Q, CM_J, CM_K, CM_X, CM_B, CM_M, CM_W, CM_V, CM_Z
46#define WMN2DVK_base KC_GRV, KC_QUOT, KC_COMM, KC_DOT,WK_P, WK_Y, WK_F, WK_G, WK_C, WK_R, WK_L, KC_LBRC, KC_RBRC, \
47 WK_A, WK_O, WK_E, WK_U, WK_I, WK_D, WK_H, WK_T, WK_N, WK_S, KC_SLSH, \
48 WK_SCLN, WK_Q, WK_J, WK_K, WK_X, WK_B, WK_M, WK_W, WK_V, WK_Z
49#define DVK2CMK_base DV_GRV, DV_Q, DV_W, DV_F, DV_P, DV_G, DV_J, DV_L, DV_U, DV_Y, DV_SCLN, DV_LBRC, DV_RBRC, \
50 DV_A, DV_R, DV_S, DV_T, DV_D, DV_H, DV_N, DV_E, DV_I, DV_O, DV_QUOT, \
51 DV_Z, DV_X, DV_C, DV_V, DV_B, DV_K, DV_M, DV_COMM, DV_DOT, DV_SLSH
52#define WMN2CMK_base KC_GRV, WK_Q, WK_W, WK_F, WK_P, WK_G, WK_J, WK_L, WK_U, WK_Y, WK_SCLN, KC_LBRC, KC_RBRC, \
53 WK_A, WK_R, WK_S, WK_T, WK_D, WK_H, WK_N, WK_E, WK_I, WK_O, KC_QUOT, \
54 WK_Z, WK_X, WK_C, WK_V, WK_B, WK_K, WK_M, KC_COMM, KC_DOT, KC_SLSH
55#define DVK2WMN_base DV_GRV, DV_Q, DV_D, DV_R, DV_W, DV_B, DV_J, DV_F, DV_U, DV_P, DV_SCLN, DV_LBRC, DV_RBRC, \
56 DV_A, DV_S, DV_H, DV_T, DV_G, DV_Y, DV_N, DV_E, DV_O, DV_I, DV_QUOT, \
57 DV_Z, DV_X, DV_M, DV_C, DV_V, DV_K, DV_L, DV_COMM, DV_DOT, DV_SLSH
58#define CMK2WMN_base KC_GRV, CM_Q, CM_D, CM_R, CM_W, CM_B, CM_J, CM_F, CM_U, CM_P, CM_SCLN, KC_LBRC, KC_RBRC, \
59 CM_A, CM_S, CM_H, CM_T, CM_G, CM_Y, CM_N, CM_E, CM_O, CM_I, KC_QUOT, \
60 CM_Z, CM_X, CM_M, CM_C, CM_V, CM_K, CM_L, CM_COMM, CM_DOT, CM_SLSH
61#endif // ALT_LAYOUTS_ENABLE
62
63enum jian_layers {
64 _QWERTY,
65#ifdef ALT_LAYOUTS_ENABLE
66 _DVORAK,
67 _COLEMAK,
68 _WORKMAN,
69 _DVK2QWE,
70 _DVK2CMK,
71 _DVK2WMN,
72 _CMK2QWE,
73 _CMK2DVK,
74 _CMK2WMN,
75 _WMN2QWE,
76 _WMN2DVK,
77 _WMN2CMK,
78#endif // ALT_LAYOUTS_ENABLE
79 _ISO,
80 _LOWER,
81 _RAISE,
82 _ADJUST,
83 _BCKLT_ADJ,
84 _THUMB_ALT,
85#ifdef TRAINING_HALFES_LOCK
86 _LEFT,
87 _RIGHT,
88#endif //TRAINING_HALFES_LOCK
89#ifdef DIPS_ENABLE
90 _DIPS,
91#endif // DIPS_ENABLE
92#ifdef STENO_ENABLE
93 _PLOVER
94#endif // STENO_ENABLE
95};
96
97enum jian_keycodes {
98 QWERTY = SAFE_RANGE,
99 PLOVER,
100 EXT_PLV,
101 EXT_RGB,
102 ISO,
103 THUMB_ALT,
104//ifdef ALT_LAYOUTS_ENABLE
105 CH_WMN,
106 CH_CMK,
107 CH_QWE,
108 CH_DVK,
109//endif // ALT_LAYOUTS_ENABLE
110#ifdef DIPS_ENABLE
111 LAYOUT0,
112 LAYOUT1,
113 LAYOUT2,
114 LAYOUT3,
115 DIP_ISO,
116 FLIP_TH,
117 DIP6,
118 DIP7,
119 DIP8,
120 DIP9,
121 DIP10,
122 DIP11,
123#endif // DIPS_ENABLE
124};
125
126#ifdef TRAINING_HALFES_LOCK
127static uint8_t lock_timeout = 1;
128static uint8_t lock_cooldown = 0;
129#endif //TRAINING_HALFES_LOCK
130#ifdef DIPS_ENABLE
131#ifdef ALT_LAYOUTS_ENABLE
132static uint8_t layout_conversion_dip_state = 0;
133#endif // ALT_LAYOUTS_ENABLE
134#endif // DIPS_ENABLE
135
136#define LOWER MO(_LOWER)
137#define RAISE MO(_RAISE)
138
139#define BL_ADJ TG(_BCKLT_ADJ)
140#define TG_LWR TG(_LOWER)
141#define TG_RSE TG(_RAISE)
142
143#define RBR_RGU MT(MOD_RGUI, KC_RBRC)
144#define F12_RGU MT(MOD_RGUI, KC_F12)
145#define EQL_LCT MT(MOD_LCTL, KC_EQL)
146#define APP_LCT MT(MOD_LCTL, KC_APP)
147#define EQL_RCT MT(MOD_RCTL, KC_EQL)
148#define QUO_RCT MT(MOD_RCTL, KC_QUOT)
149#define APP_RCT MT(MOD_RCTL, KC_APP)
150#define MIN_RCT MT(MOD_RCTL, KC_MINS)
151#define PLS_LAL MT(MOD_LALT, KC_PPLS)
152#define BSL_RAL MT(MOD_RALT, KC_BSLS)
153
154#define NBS_LCT MT(MOD_LCTL, KC_NUBS)
155#define BSH_LAL MT(MOD_LALT, KC_BSLS)
156#define APP_RAL MT(MOD_RALT, KC_APP)
157
158#define BSP_LSH MT(MOD_LSFT, KC_BSPC)
159#define BSP_RSH MT(MOD_RSFT, KC_BSPC)
160#define SPC_LSH MT(MOD_LSFT, KC_SPC)
161#define SPC_RSH MT(MOD_RSFT, KC_SPC)
162#define DEL_RSE LT(_RAISE, KC_DEL)
163#define TAB_RSE LT(_RAISE, KC_TAB)
164#define ENT_LWR LT(_LOWER, KC_ENT)
165#define ESC_LWR LT(_LOWER, KC_ESC)
166
167#define RGU_RBR RGUI_T(KC_RBRC)
168#define RCT_QUO RCTL_T(KC_QUOT)
169
170#define LAYOUT_base( \
171 GRV, Q, W, E, R, T, Y, U, I, O, P, LBRC, RBRC, \
172 A, S, D, F, G, H, J, K, L, SCLN, QUOT, \
173 Z, X, C, V, B, N, M, COMM, DOT, SLSH \
174 ) \
175 LAYOUT( \
176 KC_LGUI, GRV, Q, W, E, R, T, Y, U, I, O, P, LBRC, RGU_RBR, \
177 KC_LCTL, A, S, D, F, G, H, J, K, L, SCLN, RCT_QUO, \
178 KC_LALT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, BSL_RAL, \
179 TAB_RSE, SPC_LSH, ENT_LWR, ESC_LWR, BSP_RSH, DEL_RSE \
180 )
181#define LAYOUT_base_wrapper(...) LAYOUT_base(__VA_ARGS__)
182
183#ifdef SWAP_HANDS_ENABLE
184#define SW_TG SH_TG
185#else
186#define SW_TG _______
187#endif
188
189const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
190
191[_QWERTY] = LAYOUT_base_wrapper(QWERTY_base),
192
193#ifdef DIPS_ENABLE
194[_DIPS] = LAYOUT_DIPS(\
195 LAYOUT0, LAYOUT1, LAYOUT2, LAYOUT3, DIP_ISO, FLIP_TH, \
196 LAYOUT0, LAYOUT1, LAYOUT2, LAYOUT3, DIP_ISO, FLIP_TH \
197),
198#endif // DIPS_ENABLE
199
200[_LOWER] = LAYOUT(
201 _______, KC_UNDS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, F12_RGU,
202 EQL_LCT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, MIN_RCT,
203 PLS_LAL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
204 _______, _______, _______, _______, _______, _______
205),
206
207[_RAISE] = LAYOUT(
208 _______, KC_NLCK, KC_PSLS, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_VOLU, KC_HOME, KC_PSCR, KC_PGUP, KC_SLCK, KC_CAPS, _______,
209 EQL_LCT, KC_PAST, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_MUTE, KC_LEFT, KC_UP, KC_RGHT, KC_INS, APP_RCT,
210 _______, KC_P0, KC_P1, KC_P2, KC_P3, KC_PCMM, KC_VOLD, KC_END, KC_DOWN, KC_PGDN, KC_PAUS, _______,
211 _______, _______, _______, _______, _______, _______
212),
213
214[_ADJUST] = LAYOUT_symmetric(
215 RESET, DEBUG, KC_ASUP, CH_WMN, CH_CMK, CH_QWE, CH_DVK,
216 KC_ASRP, KC_ASTG, XXXXXXX, XXXXXXX, QWERTY, PLOVER,
217 BL_ADJ, KC_ASDN, XXXXXXX, XXXXXXX, ISO, THUMB_ALT,
218 _______, SW_TG, _______
219),
220#if defined(RGBLIGHT) | defined(BACKLIGHT_ENABLE)
221[_BCKLT_ADJ] = LAYOUT_symmetric(
222 XXXXXXX, XXXXXXX, XXXXXXX, BL_INC, RGB_VAI, RGB_HUD, RGB_HUI,
223 XXXXXXX, XXXXXXX, BL_DEC, RGB_VAD, RGB_SAD, RGB_SAI,
224 BL_ADJ, BL_BRTG, BL_TOGG, RGB_TOG, RGB_RMOD,RGB_MOD,
225 _______, _______, _______
226),
227#endif // defined(RGBLIGHT) | defined(BACKLIGHT_ENABLE)
228#ifdef TRAINING_HALFES_LOCK
229[_LEFT] = LAYOUT_base(
230 _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
231 _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
232 _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
233),
234
235[_RIGHT] = LAYOUT_base(
236 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, _______,
237 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______,
238 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______
239),
240#endif // TRAINING_HALFES_LOCK
241
242#ifdef STENO_ENABLE
243[_PLOVER] = LAYOUT(
244 EXT_PLV, STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC, EXT_PLV,
245 STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR,
246 XXXXXXX, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR,
247 XXXXXXX, STN_A, STN_O, STN_E, STN_U, XXXXXXX
248),
249#endif // STENO_ENABLE
250
251[_THUMB_ALT] = LAYOUT(
252 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
253 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
254 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
255 DEL_RSE, BSP_LSH, ESC_LWR, ENT_LWR, SPC_RSH, TAB_RSE
256),
257
258[_ISO] = LAYOUT(
259 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
260 LCTL_T(KC_NUBS), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
261 LALT_T(KC_NUHS), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RALT,
262 _______, _______, _______, _______, _______, _______
263),
264
265#ifdef ALT_LAYOUTS_ENABLE
266[_DVORAK] = LAYOUT_base_wrapper(DVORAK_base),
267[_COLEMAK] = LAYOUT_base_wrapper(COLEMAK_base),
268[_WORKMAN] = LAYOUT_base_wrapper(WORKMAN_base),
269[_DVK2QWE] = LAYOUT_base_wrapper(DVK2QWE_base),
270[_CMK2QWE] = LAYOUT_base_wrapper(CMK2QWE_base),
271[_WMN2QWE] = LAYOUT_base_wrapper(WMN2QWE_base),
272[_CMK2DVK] = LAYOUT_base_wrapper(CMK2DVK_base),
273[_WMN2DVK] = LAYOUT_base_wrapper(WMN2DVK_base),
274[_DVK2CMK] = LAYOUT_base_wrapper(DVK2CMK_base),
275[_WMN2CMK] = LAYOUT_base_wrapper(WMN2CMK_base),
276[_DVK2WMN] = LAYOUT_base_wrapper(DVK2WMN_base),
277[_CMK2WMN] = LAYOUT_base_wrapper(CMK2WMN_base)
278#endif // ALT_LAYOUTS_ENABLE
279};
280
281uint32_t layer_state_set_user(uint32_t state) {
282 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
283}
284
285#ifdef DIPS_ENABLE
286#ifdef ALT_LAYOUTS_ENABLE
287void layout_convert(uint8_t statuses) {
288 switch (0b1111 & statuses) {
289 case 0b0000:
290 set_single_persistent_default_layer(_QWERTY);
291 break;
292 case 0b0001:
293 set_single_persistent_default_layer(_DVORAK);
294 break;
295 case 0b0010:
296 set_single_persistent_default_layer(_COLEMAK);
297 break;
298 case 0b0011:
299 set_single_persistent_default_layer(_WORKMAN);
300 break;
301 case 0b0100:
302 set_single_persistent_default_layer(_DVK2QWE);
303 break;
304 case 0b0101:
305 set_single_persistent_default_layer(_QWERTY);
306 break;
307 case 0b0110:
308 set_single_persistent_default_layer(_DVK2CMK);
309 break;
310 case 0b0111:
311 set_single_persistent_default_layer(_DVK2WMN);
312 break;
313 case 0b1000:
314 set_single_persistent_default_layer(_CMK2QWE);
315 break;
316 case 0b1001:
317 set_single_persistent_default_layer(_CMK2DVK);
318 break;
319 case 0b1010:
320 set_single_persistent_default_layer(_QWERTY);
321 break;
322 case 0b1011:
323 set_single_persistent_default_layer(_CMK2WMN);
324 break;
325 case 0b1100:
326 set_single_persistent_default_layer(_WMN2QWE);
327 break;
328 case 0b1101:
329 set_single_persistent_default_layer(_WMN2DVK);
330 break;
331 case 0b1110:
332 set_single_persistent_default_layer(_WMN2CMK);
333 break;
334 case 0b1111:
335 set_single_persistent_default_layer(_QWERTY);
336 break;
337 }
338}
339#endif // ALT_LAYOUTS_ENABLE
340#endif // DIPS_ENABLE
341
342void matrix_init_user(void) {
343#ifdef DIPS_ENABLE
344 layer_on(_DIPS);
345#endif // DIPS_ENABLE
346}
347
348void keyboard_post_init_user(void) {
349 user_config.raw = eeconfig_read_user();
350 if (user_config.thumb_alt) {
351 layer_on(_THUMB_ALT);
352 } else {
353 layer_off(_THUMB_ALT);
354 }
355 if (user_config.iso) {
356 layer_on(_ISO);
357 } else {
358 layer_off(_ISO);
359 }
360}
361
362#ifdef ALT_LAYOUTS_ENABLE
363static char change_layout_input = 0;
364static bool change_layout_keystroke = 0;
365void change_layout_conversion(uint16_t keycode) {
366 switch (keycode) {
367 case CH_WMN:
368 change_layout_input |= 0b1000 << (change_layout_keystroke << 2);
369 break;
370 case CH_CMK:
371 change_layout_input |= 0b0100 << (change_layout_keystroke << 2);
372 break;
373 case CH_DVK:
374 change_layout_input |= 0b0010 << (change_layout_keystroke << 2);
375 break;
376 case CH_QWE:
377 change_layout_input |= 0b0001 << (change_layout_keystroke << 2);
378 break;
379 }
380 if (change_layout_keystroke == 1) {
381 switch (change_layout_input) {
382 case 0b00010001:
383 set_single_persistent_default_layer(_QWERTY);
384 break;
385 case 0b00100001:
386 set_single_persistent_default_layer(_DVORAK);
387 break;
388 case 0b01000001:
389 set_single_persistent_default_layer(_COLEMAK);
390 break;
391 case 0b10000001:
392 set_single_persistent_default_layer(_WORKMAN);
393 break;
394 case 0b00010010:
395 set_single_persistent_default_layer(_DVK2QWE);
396 break;
397 case 0b00100010:
398 set_single_persistent_default_layer(_QWERTY);
399 break;
400 case 0b01000010:
401 set_single_persistent_default_layer(_DVK2CMK);
402 break;
403 case 0b10000010:
404 set_single_persistent_default_layer(_DVK2WMN);
405 break;
406 case 0b00010100:
407 set_single_persistent_default_layer(_CMK2QWE);
408 break;
409 case 0b00100100:
410 set_single_persistent_default_layer(_CMK2DVK);
411 break;
412 case 0b01000100:
413 set_single_persistent_default_layer(_QWERTY);
414 break;
415 case 0b10000100:
416 set_single_persistent_default_layer(_CMK2WMN);
417 break;
418 case 0b00011000:
419 set_single_persistent_default_layer(_WMN2QWE);
420 break;
421 case 0b00101000:
422 set_single_persistent_default_layer(_WMN2DVK);
423 break;
424 case 0b01001000:
425 set_single_persistent_default_layer(_WMN2CMK);
426 break;
427 case 0b10001000:
428 set_single_persistent_default_layer(_QWERTY);
429 break;
430 }
431 change_layout_input = 0;
432 }
433 change_layout_keystroke ^= 1;
434}
435#endif // ALT_LAYOUTS_ENABLE
436
437bool process_record_user(uint16_t keycode, keyrecord_t *record) {
438#ifdef TRAINING_HALFES_LOCK
439 if (!record->event.pressed) {
440 lock_cooldown = --lock_cooldown < 0 ? 0 : lock_cooldown;
441 }
442 if (lock_cooldown == 0) {
443 layer_off(_LEFT);
444 layer_off(_RIGHT);
445 }
446#endif // TRAINING_HALFES_LOCK
447 switch (keycode) {
448#ifdef TRAINING_HALFES_LOCK
449 case SPC_RSH:
450 case BSP_RSH:
451 case DEL_RSE:
452 case ESC_LWR:
453 case BSL_RAL:
454 case RGU_RBR:
455 case RCT_QUO:
456 if (record->event.pressed) {
457 layer_on(_LEFT);
458 lock_cooldown = lock_timeout;
459 }
460 else {
461 lock_cooldown = 0;
462 layer_off(_LEFT);
463 }
464 break;
465 case BSP_LSH:
466 case SPC_LSH:
467 case TAB_RSE:
468 case ENT_LWR:
469 case KC_LCTL:
470 case KC_LGUI:
471 case KC_LALT:
472 if (record->event.pressed) {
473 layer_on(_RIGHT);
474 lock_cooldown = lock_timeout;
475 }
476 else {
477 lock_cooldown = 0;
478 layer_off(_RIGHT);
479 }
480 break;
481#endif // TRAINING_HALFES_LOCK
482#ifdef STENO_ENABLE
483 case PLOVER:
484 if (!record->event.pressed) {
485 layer_off(_RAISE);
486 layer_off(_LOWER);
487 layer_off(_ADJUST);
488 layer_on(_PLOVER);
489 if (!eeconfig_is_enabled()) {
490 eeconfig_init();
491 }
492 keymap_config.raw = eeconfig_read_keymap();
493 keymap_config.nkro = 1;
494 eeconfig_update_keymap(keymap_config.raw);
495 }
496 return false;
497 case EXT_PLV:
498 if (record->event.pressed) {
499 layer_off(_PLOVER);
500 }
501 return false;
502#endif // STENO_ENABLE
503 case QWERTY:
504 if (record->event.pressed) {
505 set_single_persistent_default_layer(_QWERTY);
506 }
507 return false;
508#ifdef ALT_LAYOUTS_ENABLE
509 case CH_WMN:
510 case CH_CMK:
511 case CH_QWE:
512 case CH_DVK:
513 if (record->event.pressed) {
514 change_layout_conversion(keycode);
515 }
516 return false;
517#endif // ALT_LAYOUTS_ENABLE
518#ifdef DIPS_ENABLE
519#ifdef ALT_LAYOUTS_ENABLE
520 case LAYOUT0:
521 if (record->event.pressed) {
522 layout_conversion_dip_state |= 1 << 0;
523 } else {
524 layout_conversion_dip_state &= ~(1 << 0);
525 }
526 layout_convert(layout_conversion_dip_state);
527 return false;
528 case LAYOUT1:
529 if (record->event.pressed) {
530 layout_conversion_dip_state |= 1 << 1;
531 } else {
532 layout_conversion_dip_state &= ~(1 << 1);
533 }
534 layout_convert(layout_conversion_dip_state);
535 return false;
536 case LAYOUT2:
537 if (record->event.pressed) {
538 layout_conversion_dip_state |= 1 << 2;
539 } else {
540 layout_conversion_dip_state &= ~(1 << 2);
541 }
542 layout_convert(layout_conversion_dip_state);
543 return false;
544 case LAYOUT3:
545 if (record->event.pressed) {
546 layout_conversion_dip_state |= 1 << 3;
547 } else {
548 layout_conversion_dip_state &= ~(1 << 3);
549 }
550 layout_convert(layout_conversion_dip_state);
551 return false;
552#endif // ALT_LAYOUTS_ENABLE
553 case DIP_ISO:
554 if (record->event.pressed) {
555 layer_on(_ISO);
556 } else {
557 layer_off(_ISO);
558 }
559 return false;
560 case FLIP_TH:
561 if (record->event.pressed) {
562 layer_on(_THUMB_ALT);
563 } else {
564 layer_off(_THUMB_ALT);
565 }
566 return false;
567#endif // DIPS_ENABLE
568 case THUMB_ALT:
569 if (record->event.pressed) {
570 layer_invert(_THUMB_ALT);
571 user_config.thumb_alt ^= 1;
572 eeconfig_update_user(user_config.raw);
573 }
574 return false;
575 case ISO:
576 if (record->event.pressed) {
577 layer_invert(_ISO);
578 user_config.iso ^= 1;
579 eeconfig_update_user(user_config.raw);
580 }
581 return false;
582 }
583 return true;
584}