diff options
Diffstat (limited to 'keyboards/jian/keymaps/advanced/keymap.c')
-rw-r--r-- | keyboards/jian/keymaps/advanced/keymap.c | 584 |
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 | |||
3 | typedef union { | ||
4 | uint32_t raw; | ||
5 | struct { | ||
6 | bool thumb_alt :1; | ||
7 | bool iso :1; | ||
8 | }; | ||
9 | } user_config_t; | ||
10 | |||
11 | user_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 | |||
63 | enum 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 | |||
97 | enum 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 | ||
127 | static uint8_t lock_timeout = 1; | ||
128 | static uint8_t lock_cooldown = 0; | ||
129 | #endif //TRAINING_HALFES_LOCK | ||
130 | #ifdef DIPS_ENABLE | ||
131 | #ifdef ALT_LAYOUTS_ENABLE | ||
132 | static 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 | |||
189 | const 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 | |||
281 | uint32_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 | ||
287 | void 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 | |||
342 | void matrix_init_user(void) { | ||
343 | #ifdef DIPS_ENABLE | ||
344 | layer_on(_DIPS); | ||
345 | #endif // DIPS_ENABLE | ||
346 | } | ||
347 | |||
348 | void 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 | ||
363 | static char change_layout_input = 0; | ||
364 | static bool change_layout_keystroke = 0; | ||
365 | void 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 | |||
437 | bool 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 | } | ||