aboutsummaryrefslogtreecommitdiff
path: root/keyboards/sofle/keymaps/choc/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/sofle/keymaps/choc/keymap.c')
-rw-r--r--keyboards/sofle/keymaps/choc/keymap.c422
1 files changed, 422 insertions, 0 deletions
diff --git a/keyboards/sofle/keymaps/choc/keymap.c b/keyboards/sofle/keymaps/choc/keymap.c
new file mode 100644
index 000000000..f1e7a4d0d
--- /dev/null
+++ b/keyboards/sofle/keymaps/choc/keymap.c
@@ -0,0 +1,422 @@
1#include QMK_KEYBOARD_H
2
3enum sofle_layers {
4 /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */
5 _QWERTY,
6 _COLEMAK,
7 _LOWER,
8 _RAISE,
9 _ADJUST,
10};
11
12enum custom_keycodes {
13 KC_QWERTY = SAFE_RANGE,
14 KC_COLEMAK,
15 KC_LOWER,
16 KC_RAISE,
17 KC_ADJUST,
18 KC_PRVWD,
19 KC_NXTWD,
20 KC_LSTRT,
21 KC_LEND,
22 KC_DLINE
23};
24
25
26const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
27/*
28 * QWERTY
29 * ,-----------------------------------------. ,-----------------------------------------.
30 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
31 * |------+------+------+------+------+------| |------+------+------+------+------+------|
32 * | ESC | Q | W | E | R | T | | Y | U | I | O | P | Bspc |
33 * |------+------+------+------+------+------| |------+------+------+------+------+------|
34 * | Tab | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
35 * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
36 * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
37 * `-----------------------------------------/ / \ \-----------------------------------------'
38 * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
39 * | | | | |/ / \ \ | | | | |
40 * `----------------------------------' '------''---------------------------'
41 */
42
43[_QWERTY] = LAYOUT( \
44 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, \
45 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
46 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, \
47 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
48 KC_LGUI,KC_LALT,KC_LCTRL, KC_LOWER, KC_ENT, KC_SPC, KC_RAISE, KC_RCTRL, KC_RALT, KC_RGUI \
49),
50/*
51 * COLEMAK
52 * ,-----------------------------------------. ,-----------------------------------------.
53 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
54 * |------+------+------+------+------+------| |------+------+------+------+------+------|
55 * | ESC | Q | W | F | P | G | | J | L | U | Y | ; | Bspc |
56 * |------+------+------+------+------+------| |------+------+------+------+------+------|
57 * | TAB | A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' |
58 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
59 * |LShift| Z | X | C | V | B |-------| |-------| K | M | , | . | / |RShift|
60 * `-----------------------------------------/ / \ \-----------------------------------------'
61 * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
62 * | | | | |/ / \ \ | | | | |
63 * `----------------------------------' '------''---------------------------'
64 */
65
66[_COLEMAK] = LAYOUT( \
67 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV, \
68 KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \
69 KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \
70 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, XXXXXXX, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
71 KC_LGUI, KC_LALT, KC_LCTRL, KC_LOWER, KC_ENT, KC_SPC, KC_RAISE,KC_RCTRL, KC_RALT, KC_RGUI \
72),
73/* LOWER
74 * ,-----------------------------------------. ,-----------------------------------------.
75 * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
76 * |------+------+------+------+------+------| |------+------+------+------+------+------|
77 * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 |
78 * |------+------+------+------+------+------| |------+------+------+------+------+------|
79 * | Tab | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | |
80 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
81 * | Shift| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | Shift|
82 * `-----------------------------------------/ / \ \-----------------------------------------'
83 * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
84 * | | | | |/ / \ \ | | | | |
85 * `----------------------------------' '------''---------------------------'
86 */
87[_LOWER] = LAYOUT( \
88 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,\
89 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12, \
90 _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
91 _______, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______, \
92 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______\
93),
94/* RAISE
95 * ,----------------------------------------. ,-----------------------------------------.
96 * | | | | | | | | | | | | | |
97 * |------+------+------+------+------+------| |------+------+------+------+------+------|
98 * | Esc | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | DLine| Bspc |
99 * |------+------+------+------+------+------| |------+------+------+------+------+------|
100 * | Tab | LAt | LCtl |LShift| | Caps |-------. ,-------| | Left | Down | Rigth| Del | Bspc |
101 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
102 * |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | LStr | | LEnd | | Shift|
103 * `-----------------------------------------/ / \ \-----------------------------------------'
104 * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
105 * | | | | |/ / \ \ | | | | |
106 * `----------------------------------' '------''---------------------------'
107 */
108[_RAISE] = LAYOUT( \
109 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , _______, \
110 _______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_PGUP, KC_PRVWD, KC_UP, KC_NXTWD, KC_DLINE, KC_BSPC, \
111 _______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC, \
112 _______, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX, _______, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______, \
113 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
114),
115/* ADJUST
116 * ,-----------------------------------------. ,-----------------------------------------.
117 * | | | | | | | | | | | | | |
118 * |------+------+------+------+------+------| |------+------+------+------+------+------|
119 * | RESET| |QWERTY|COLEMAK| | | | | | | | | |
120 * |------+------+------+------+------+------| |------+------+------+------+------+------|
121 * | | |MACWIN| | | |-------. ,-------| | VOLDO| MUTE | VOLUP| | |
122 * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
123 * | | | | | | |-------| |-------| | PREV | PLAY | NEXT | | |
124 * `-----------------------------------------/ / \ \-----------------------------------------'
125 * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
126 * | | | | |/ / \ \ | | | | |
127 * `----------------------------------' '------''---------------------------'
128 */
129 [_ADJUST] = LAYOUT( \
130 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
131 RESET, XXXXXXX, KC_QWERTY, KC_COLEMAK, CG_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
132 XXXXXXX, XXXXXXX, CG_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, \
133 XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, \
134 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
135 )
136};
137
138#ifdef RGB_MATRIX_ENABLE
139
140led_config_t g_led_config = { {
141 // Key Matrix to LED Index
142 { 28, 21, 20, 11, 10, 0 },
143 { 27, 22, 19, 12, 9, 1 },
144 { 26, 23, 18, 13, 8, 2 },
145 { 25, 24, 17, 14, 7, 3 },
146 { 16, 15, 6, 5, 4, NO_LED }
147}, {
148 // LED Index to Physical Position
149 { 195, 7 },{ 195, 21 },{ 195, 36 },{ 195, 50 },{ 224, 64 },
150 { 185, 62 },{ 146, 60 },{ 156, 48 },{ 156, 33 },{ 156, 19 },
151 { 156, 5 },{ 117, 3 },{ 117, 17 },{ 117, 31 },{ 117, 46 },
152 { 107, 62 },{ 68, 64 },{ 78, 48 },{ 78, 33 },{ 78, 19 },
153 { 78, 5 },{ 39, 7 },{ 39, 21 },{ 39, 36 },{ 39, 50 },
154 { 0, 50 },{ 0, 36 },{ 0, 21 },{ 0, 7 }
155}, {
156 // LED Index to Flag
157 1, 1, 1, 1, 1,
158 1, 1, 1, 1, 1,
159 1, 1, 1, 1, 1,
160 1, 1, 1, 1, 1,
161 1, 1, 1, 1, 1,
162 1, 1, 1, 1
163} };
164
165#endif
166
167#ifdef OLED_DRIVER_ENABLE
168
169static void render_logo(void) {
170 static const char PROGMEM qmk_logo[] = {
171 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
172 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
173 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0
174 };
175
176 oled_write_P(qmk_logo, false);
177}
178
179static void print_status_narrow(void) {
180 // Print current mode
181 oled_write_P(PSTR("\n\n"), false);
182 oled_write_ln_P(PSTR("MODE"), false);
183 oled_write_ln_P(PSTR(""), false);
184 if (keymap_config.swap_lctl_lgui) {
185 oled_write_ln_P(PSTR("MAC"), false);
186 } else {
187 oled_write_ln_P(PSTR("WIN"), false);
188 }
189
190 switch (get_highest_layer(default_layer_state)) {
191 case _QWERTY:
192 oled_write_ln_P(PSTR("Qwrt"), false);
193 break;
194 case _COLEMAK:
195 oled_write_ln_P(PSTR("Clmk"), false);
196 break;
197 default:
198 oled_write_P(PSTR("Undef"), false);
199 }
200 oled_write_P(PSTR("\n\n"), false);
201 // Print current layer
202 oled_write_ln_P(PSTR("LAYER"), false);
203 switch (get_highest_layer(layer_state)) {
204 case _COLEMAK:
205 case _QWERTY:
206 oled_write_P(PSTR("Base\n"), false);
207 break;
208 case _RAISE:
209 oled_write_P(PSTR("Raise"), false);
210 break;
211 case _LOWER:
212 oled_write_P(PSTR("Lower"), false);
213 break;
214 case _ADJUST:
215 oled_write_P(PSTR("Adj\n"), false);
216 break;
217 default:
218 oled_write_ln_P(PSTR("Undef"), false);
219 }
220 oled_write_P(PSTR("\n\n"), false);
221 led_t led_usb_state = host_keyboard_led_state();
222 oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
223}
224
225oled_rotation_t oled_init_user(oled_rotation_t rotation) {
226 if (is_keyboard_master()) {
227 return OLED_ROTATION_270;
228 }
229 return rotation;
230}
231
232void oled_task_user(void) {
233 if (is_keyboard_master()) {
234 print_status_narrow();
235 } else {
236 render_logo();
237 }
238}
239
240#endif
241
242bool process_record_user(uint16_t keycode, keyrecord_t *record) {
243 switch (keycode) {
244 case KC_QWERTY:
245 if (record->event.pressed) {
246 set_single_persistent_default_layer(_QWERTY);
247 }
248 return false;
249 case KC_COLEMAK:
250 if (record->event.pressed) {
251 set_single_persistent_default_layer(_COLEMAK);
252 }
253 return false;
254 case KC_LOWER:
255 if (record->event.pressed) {
256 layer_on(_LOWER);
257 update_tri_layer(_LOWER, _RAISE, _ADJUST);
258 } else {
259 layer_off(_LOWER);
260 update_tri_layer(_LOWER, _RAISE, _ADJUST);
261 }
262 return false;
263 case KC_RAISE:
264 if (record->event.pressed) {
265 layer_on(_RAISE);
266 update_tri_layer(_LOWER, _RAISE, _ADJUST);
267 } else {
268 layer_off(_RAISE);
269 update_tri_layer(_LOWER, _RAISE, _ADJUST);
270 }
271 return false;
272 case KC_ADJUST:
273 if (record->event.pressed) {
274 layer_on(_ADJUST);
275 } else {
276 layer_off(_ADJUST);
277 }
278 return false;
279 case KC_PRVWD:
280 if (record->event.pressed) {
281 if (keymap_config.swap_lctl_lgui) {
282 register_mods(mod_config(MOD_LALT));
283 register_code(KC_LEFT);
284 } else {
285 register_mods(mod_config(MOD_LCTL));
286 register_code(KC_LEFT);
287 }
288 } else {
289 if (keymap_config.swap_lctl_lgui) {
290 unregister_mods(mod_config(MOD_LALT));
291 unregister_code(KC_LEFT);
292 } else {
293 unregister_mods(mod_config(MOD_LCTL));
294 unregister_code(KC_LEFT);
295 }
296 }
297 break;
298 case KC_NXTWD:
299 if (record->event.pressed) {
300 if (keymap_config.swap_lctl_lgui) {
301 register_mods(mod_config(MOD_LALT));
302 register_code(KC_RIGHT);
303 } else {
304 register_mods(mod_config(MOD_LCTL));
305 register_code(KC_RIGHT);
306 }
307 } else {
308 if (keymap_config.swap_lctl_lgui) {
309 unregister_mods(mod_config(MOD_LALT));
310 unregister_code(KC_RIGHT);
311 } else {
312 unregister_mods(mod_config(MOD_LCTL));
313 unregister_code(KC_RIGHT);
314 }
315 }
316 break;
317 case KC_LSTRT:
318 if (record->event.pressed) {
319 if (keymap_config.swap_lctl_lgui) {
320 //CMD-arrow on Mac, but we have CTL and GUI swapped
321 register_mods(mod_config(MOD_LCTL));
322 register_code(KC_LEFT);
323 } else {
324 register_code(KC_HOME);
325 }
326 } else {
327 if (keymap_config.swap_lctl_lgui) {
328 unregister_mods(mod_config(MOD_LCTL));
329 unregister_code(KC_LEFT);
330 } else {
331 unregister_code(KC_HOME);
332 }
333 }
334 break;
335 case KC_LEND:
336 if (record->event.pressed) {
337 if (keymap_config.swap_lctl_lgui) {
338 //CMD-arrow on Mac, but we have CTL and GUI swapped
339 register_mods(mod_config(MOD_LCTL));
340 register_code(KC_RIGHT);
341 } else {
342 register_code(KC_END);
343 }
344 } else {
345 if (keymap_config.swap_lctl_lgui) {
346 unregister_mods(mod_config(MOD_LCTL));
347 unregister_code(KC_RIGHT);
348 } else {
349 unregister_code(KC_END);
350 }
351 }
352 break;
353 case KC_DLINE:
354 if (record->event.pressed) {
355 register_mods(mod_config(MOD_LCTL));
356 register_code(KC_BSPC);
357 } else {
358 unregister_mods(mod_config(MOD_LCTL));
359 unregister_code(KC_BSPC);
360 }
361 break;
362 case KC_COPY:
363 if (record->event.pressed) {
364 register_mods(mod_config(MOD_LCTL));
365 register_code(KC_C);
366 } else {
367 unregister_mods(mod_config(MOD_LCTL));
368 unregister_code(KC_C);
369 }
370 return false;
371 case KC_PASTE:
372 if (record->event.pressed) {
373 register_mods(mod_config(MOD_LCTL));
374 register_code(KC_V);
375 } else {
376 unregister_mods(mod_config(MOD_LCTL));
377 unregister_code(KC_V);
378 }
379 return false;
380 case KC_CUT:
381 if (record->event.pressed) {
382 register_mods(mod_config(MOD_LCTL));
383 register_code(KC_X);
384 } else {
385 unregister_mods(mod_config(MOD_LCTL));
386 unregister_code(KC_X);
387 }
388 return false;
389 break;
390 case KC_UNDO:
391 if (record->event.pressed) {
392 register_mods(mod_config(MOD_LCTL));
393 register_code(KC_Z);
394 } else {
395 unregister_mods(mod_config(MOD_LCTL));
396 unregister_code(KC_Z);
397 }
398 return false;
399 }
400 return true;
401}
402
403#ifdef ENCODER_ENABLE
404
405bool encoder_update_kb(uint8_t index, bool clockwise) {
406 if (index == 0) {
407 if (clockwise) {
408 tap_code(KC_VOLD);
409 } else {
410 tap_code(KC_VOLU);
411 }
412 } else if (index == 1) {
413 if (clockwise) {
414 tap_code(KC_PGDOWN);
415 } else {
416 tap_code(KC_PGUP);
417 }
418 }
419 return true;
420}
421
422#endif