aboutsummaryrefslogtreecommitdiff
path: root/keyboards/sofle/keymaps/default/keymap.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/sofle/keymaps/default/keymap.c')
-rw-r--r--keyboards/sofle/keymaps/default/keymap.c392
1 files changed, 392 insertions, 0 deletions
diff --git a/keyboards/sofle/keymaps/default/keymap.c b/keyboards/sofle/keymaps/default/keymap.c
new file mode 100644
index 000000000..38200bfb7
--- /dev/null
+++ b/keyboards/sofle/keymaps/default/keymap.c
@@ -0,0 +1,392 @@
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 OLED_DRIVER_ENABLE
139
140static void render_logo(void) {
141 static const char PROGMEM qmk_logo[] = {
142 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
143 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
144 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0
145 };
146
147 oled_write_P(qmk_logo, false);
148}
149
150static void print_status_narrow(void) {
151 // Print current mode
152 oled_write_P(PSTR("\n\n"), false);
153 oled_write_ln_P(PSTR("MODE"), false);
154 oled_write_ln_P(PSTR(""), false);
155 if (keymap_config.swap_lctl_lgui) {
156 oled_write_ln_P(PSTR("MAC"), false);
157 } else {
158 oled_write_ln_P(PSTR("WIN"), false);
159 }
160
161 switch (get_highest_layer(default_layer_state)) {
162 case _QWERTY:
163 oled_write_ln_P(PSTR("Qwrt"), false);
164 break;
165 case _COLEMAK:
166 oled_write_ln_P(PSTR("Clmk"), false);
167 break;
168 default:
169 oled_write_P(PSTR("Undef"), false);
170 }
171 oled_write_P(PSTR("\n\n"), false);
172 // Print current layer
173 oled_write_ln_P(PSTR("LAYER"), false);
174 switch (get_highest_layer(layer_state)) {
175 case _COLEMAK:
176 case _QWERTY:
177 oled_write_P(PSTR("Base\n"), false);
178 break;
179 case _RAISE:
180 oled_write_P(PSTR("Raise"), false);
181 break;
182 case _LOWER:
183 oled_write_P(PSTR("Lower"), false);
184 break;
185 case _ADJUST:
186 oled_write_P(PSTR("Adj\n"), false);
187 break;
188 default:
189 oled_write_ln_P(PSTR("Undef"), false);
190 }
191 oled_write_P(PSTR("\n\n"), false);
192 led_t led_usb_state = host_keyboard_led_state();
193 oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
194}
195
196oled_rotation_t oled_init_user(oled_rotation_t rotation) {
197 if (is_keyboard_master()) {
198 return OLED_ROTATION_270;
199 }
200 return rotation;
201}
202
203void oled_task_user(void) {
204 if (is_keyboard_master()) {
205 print_status_narrow();
206 } else {
207 render_logo();
208 }
209}
210
211#endif
212
213bool process_record_user(uint16_t keycode, keyrecord_t *record) {
214 switch (keycode) {
215 case KC_QWERTY:
216 if (record->event.pressed) {
217 set_single_persistent_default_layer(_QWERTY);
218 }
219 return false;
220 case KC_COLEMAK:
221 if (record->event.pressed) {
222 set_single_persistent_default_layer(_COLEMAK);
223 }
224 return false;
225 case KC_LOWER:
226 if (record->event.pressed) {
227 layer_on(_LOWER);
228 update_tri_layer(_LOWER, _RAISE, _ADJUST);
229 } else {
230 layer_off(_LOWER);
231 update_tri_layer(_LOWER, _RAISE, _ADJUST);
232 }
233 return false;
234 case KC_RAISE:
235 if (record->event.pressed) {
236 layer_on(_RAISE);
237 update_tri_layer(_LOWER, _RAISE, _ADJUST);
238 } else {
239 layer_off(_RAISE);
240 update_tri_layer(_LOWER, _RAISE, _ADJUST);
241 }
242 return false;
243 case KC_ADJUST:
244 if (record->event.pressed) {
245 layer_on(_ADJUST);
246 } else {
247 layer_off(_ADJUST);
248 }
249 return false;
250 case KC_PRVWD:
251 if (record->event.pressed) {
252 if (keymap_config.swap_lctl_lgui) {
253 register_mods(mod_config(MOD_LALT));
254 register_code(KC_LEFT);
255 } else {
256 register_mods(mod_config(MOD_LCTL));
257 register_code(KC_LEFT);
258 }
259 } else {
260 if (keymap_config.swap_lctl_lgui) {
261 unregister_mods(mod_config(MOD_LALT));
262 unregister_code(KC_LEFT);
263 } else {
264 unregister_mods(mod_config(MOD_LCTL));
265 unregister_code(KC_LEFT);
266 }
267 }
268 break;
269 case KC_NXTWD:
270 if (record->event.pressed) {
271 if (keymap_config.swap_lctl_lgui) {
272 register_mods(mod_config(MOD_LALT));
273 register_code(KC_RIGHT);
274 } else {
275 register_mods(mod_config(MOD_LCTL));
276 register_code(KC_RIGHT);
277 }
278 } else {
279 if (keymap_config.swap_lctl_lgui) {
280 unregister_mods(mod_config(MOD_LALT));
281 unregister_code(KC_RIGHT);
282 } else {
283 unregister_mods(mod_config(MOD_LCTL));
284 unregister_code(KC_RIGHT);
285 }
286 }
287 break;
288 case KC_LSTRT:
289 if (record->event.pressed) {
290 if (keymap_config.swap_lctl_lgui) {
291 //CMD-arrow on Mac, but we have CTL and GUI swapped
292 register_mods(mod_config(MOD_LCTL));
293 register_code(KC_LEFT);
294 } else {
295 register_code(KC_HOME);
296 }
297 } else {
298 if (keymap_config.swap_lctl_lgui) {
299 unregister_mods(mod_config(MOD_LCTL));
300 unregister_code(KC_LEFT);
301 } else {
302 unregister_code(KC_HOME);
303 }
304 }
305 break;
306 case KC_LEND:
307 if (record->event.pressed) {
308 if (keymap_config.swap_lctl_lgui) {
309 //CMD-arrow on Mac, but we have CTL and GUI swapped
310 register_mods(mod_config(MOD_LCTL));
311 register_code(KC_RIGHT);
312 } else {
313 register_code(KC_END);
314 }
315 } else {
316 if (keymap_config.swap_lctl_lgui) {
317 unregister_mods(mod_config(MOD_LCTL));
318 unregister_code(KC_RIGHT);
319 } else {
320 unregister_code(KC_END);
321 }
322 }
323 break;
324 case KC_DLINE:
325 if (record->event.pressed) {
326 register_mods(mod_config(MOD_LCTL));
327 register_code(KC_BSPC);
328 } else {
329 unregister_mods(mod_config(MOD_LCTL));
330 unregister_code(KC_BSPC);
331 }
332 break;
333 case KC_COPY:
334 if (record->event.pressed) {
335 register_mods(mod_config(MOD_LCTL));
336 register_code(KC_C);
337 } else {
338 unregister_mods(mod_config(MOD_LCTL));
339 unregister_code(KC_C);
340 }
341 return false;
342 case KC_PASTE:
343 if (record->event.pressed) {
344 register_mods(mod_config(MOD_LCTL));
345 register_code(KC_V);
346 } else {
347 unregister_mods(mod_config(MOD_LCTL));
348 unregister_code(KC_V);
349 }
350 return false;
351 case KC_CUT:
352 if (record->event.pressed) {
353 register_mods(mod_config(MOD_LCTL));
354 register_code(KC_X);
355 } else {
356 unregister_mods(mod_config(MOD_LCTL));
357 unregister_code(KC_X);
358 }
359 return false;
360 break;
361 case KC_UNDO:
362 if (record->event.pressed) {
363 register_mods(mod_config(MOD_LCTL));
364 register_code(KC_Z);
365 } else {
366 unregister_mods(mod_config(MOD_LCTL));
367 unregister_code(KC_Z);
368 }
369 return false;
370 }
371 return true;
372}
373
374#ifdef ENCODER_ENABLE
375
376void encoder_update_user(uint8_t index, bool clockwise) {
377 if (index == 0) {
378 if (clockwise) {
379 tap_code(KC_VOLU);
380 } else {
381 tap_code(KC_VOLD);
382 }
383 } else if (index == 1) {
384 if (clockwise) {
385 tap_code(KC_PGDOWN);
386 } else {
387 tap_code(KC_PGUP);
388 }
389 }
390}
391
392#endif