1 #include QMK_KEYBOARD_H
9 #define _______ KC_TRNS
11 // Each layer gets a name for readability, which is then used in the keymap matrix below.
25 // To switch the default layer used for the layout, there are special keycodes.
26 // Which onces detected below serve to switch it.
27 enum cospad_keycodes {
34 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
36 /* Keymap _QWERTY_LAYER: Default layer
37 * ,-----------------------.
39 * |-----|-----|-----|-----|
41 * |-----|-----|-----|-----|
43 * |-----|-----|-----| Spc |
45 * |-----|-----|-----|-----|
47 * |-----|-----|-----|-----|
48 * | Esc | Tab | Sft | Ctl |
49 * `-----------------------'
51 * And it's LOWER layer
52 * ,-----------------------.
54 * |-----|-----|-----|-----|
56 * |-----|-----|-----|-----|
58 * |-----|-----|-----| Ent |
60 * |-----|-----|-----|-----|
62 * |-----|-----|-----|-----|
63 * | Esc | Tab | Sft | Ctl |
64 * `-----------------------'
66 [_QWERTY_LAYER] = LAYOUT_gamepad_6x4(
67 KC_T, KC_G, KC_B, KC_LALT, \
68 KC_R, KC_F, KC_V, MO(_QWERTY_LOWER_LAYER),\
70 KC_W, KC_S, KC_X, KC_SPACE, \
71 KC_Q, KC_A, KC_Z, MO(_RAISE_LAYER),\
72 KC_GESC, KC_TAB, KC_LSFT, KC_LCTRL),
73 [_QWERTY_LOWER_LAYER] = LAYOUT_gamepad_6x4(
74 KC_P, KC_SCLN, KC_SLSH, KC_LALT, \
75 KC_O, KC_L, KC_DOT, _______, \
76 KC_I, KC_K, KC_COMM, \
77 KC_U, KC_J, KC_M, KC_ENTER, \
78 KC_Y, KC_H, KC_N, _______, \
79 _______, _______, _______, _______),
83 /* Keymap _QWERTZ_LAYER: Alternate default layer
84 * ,-----------------------.
86 * |-----|-----|-----|-----|
88 * |-----|-----|-----|-----|
90 * |-----|-----|-----| Spc |
92 * |-----|-----|-----|-----|
94 * |-----|-----|-----|-----|
95 * | Esc | Tab | Sft | Ctl |
96 * `-----------------------'
98 * And it's LOWER layer
99 * ,-----------------------.
100 * | P | ; | / | Alt |
101 * |-----|-----|-----|-----|
102 * | O | L | > | LOW |
103 * |-----|-----|-----|-----|
105 * |-----|-----|-----| Ent |
107 * |-----|-----|-----|-----|
108 * | Z | H | N | RAI |
109 * |-----|-----|-----|-----|
110 * | Esc | Tab | Sft | Ctl |
111 * `-----------------------'
113 [_QWERTZ_LAYER] = LAYOUT_gamepad_6x4(
114 KC_T, KC_G, KC_B, KC_LALT, \
115 KC_R, KC_F, KC_V, MO(_QWERTZ_LOWER_LAYER),\
117 KC_W, KC_S, KC_X, KC_SPACE, \
118 KC_Q, KC_A, KC_Y, MO(_RAISE_LAYER),\
119 KC_GESC, KC_TAB, KC_LSFT, KC_LCTRL),
120 [_QWERTZ_LOWER_LAYER] = LAYOUT_gamepad_6x4(
121 KC_P, KC_SCLN, KC_SLSH, KC_LALT, \
122 KC_O, KC_L, KC_DOT, _______, \
123 KC_I, KC_K, KC_COMM, \
124 KC_U, KC_J, KC_M, KC_ENTER, \
125 KC_Z, KC_H, KC_N, _______, \
126 _______, _______, _______, _______),
130 /* Keymap _COLEMA_LAYER: Alternate default layer
131 * ,-----------------------.
132 * | G | D | B | Alt |
133 * |-----|-----|-----|-----|
134 * | P | T | V | LOW |
135 * |-----|-----|-----|-----|
137 * |-----|-----|-----| Spc |
139 * |-----|-----|-----|-----|
140 * | Q | A | Z | RAI |
141 * |-----|-----|-----|-----|
142 * | Esc | Tab | Sft | Ctl |
143 * `-----------------------'
145 * And it's LOWER layer
146 * ,-----------------------.
147 * | ; | O | / | Alt |
148 * |-----|-----|-----|-----|
149 * | Y | I | . | LOW |
150 * |-----|-----|-----|-----|
152 * |-----|-----|-----| Ent |
154 * |-----|-----|-----|-----|
155 * | J | H | K | RAI |
156 * |-----|-----|-----|-----|
157 * | Esc | Tab | Sft | Ctl |
158 * `-----------------------'
160 [_COLEMA_LAYER] = LAYOUT_gamepad_6x4(
161 KC_T, KC_D, KC_B, KC_LALT, \
162 KC_R, KC_T, KC_V, MO(_COLEMA_LOWER_LAYER),\
164 KC_W, KC_R, KC_X, KC_SPACE, \
165 KC_Q, KC_A, KC_Z, MO(_RAISE_LAYER),\
166 KC_GESC, KC_TAB, KC_LSFT, KC_LCTRL),
167 [_COLEMA_LOWER_LAYER] = LAYOUT_gamepad_6x4(
168 KC_SCLN, KC_O, KC_SLSH, _______, \
169 KC_Y, KC_I, KC_DOT, _______, \
170 KC_U, KC_E, KC_COMM, \
171 KC_L, KC_N, KC_M, KC_ENTER, \
172 KC_J, KC_H, KC_K, _______, \
173 KC_F, KC_G, _______, _______),
177 /* Keymap _DVORAK_LAYER: Alternate default layer
178 * ,-----------------------.
179 * | Y | I | X | Alt |
180 * |-----|-----|-----|-----|
181 * | P | U | K | LOW |
182 * |-----|-----|-----|-----|
184 * |-----|-----|-----| Spc |
186 * |-----|-----|-----|-----|
187 * | ' | A | ; | RAI |
188 * |-----|-----|-----|-----|
189 * | Esc | Tab | Sft | Ctl |
190 * `-----------------------'
192 * And it's LOWER layer
193 * ,-----------------------.
194 * | L | S | Z | Alt |
195 * |-----|-----|-----|-----|
196 * | R | N | V | LOW |
197 * |-----|-----|-----|-----|
199 * |-----|-----|-----| Ent |
201 * |-----|-----|-----|-----|
202 * | F | D | B | RAI |
203 * |-----|-----|-----|-----|
204 * | Esc | Tab | Sft | Ctl |
205 * `-----------------------'
207 [_DVORAK_LAYER] = LAYOUT_gamepad_6x4(
208 KC_Y, KC_I, KC_X, KC_LALT, \
209 KC_P, KC_U, KC_K, MO(_DVORAK_LOWER_LAYER),\
210 KC_DOT, KC_E, KC_J, \
211 KC_COMM, KC_O, KC_A, KC_SPACE, \
212 KC_QUOT, KC_A, KC_SCLN, MO(_RAISE_LAYER),\
213 KC_GESC, KC_TAB, KC_LSFT, KC_LCTRL),
214 [_DVORAK_LOWER_LAYER] = LAYOUT_gamepad_6x4(
215 KC_L, KC_S, KC_Z, KC_LALT, \
216 KC_R, KC_N, KC_V, _______, \
218 KC_G, KC_H, KC_M, KC_ENTER,\
219 KC_F, KC_D, KC_B, _______, \
220 _______, _______, _______, _______),
224 /* Keymap _RAISE_LAYER: Additional layer to access more
225 * ,-----------------------.
226 * | 5 | 0 | del | Alt |
227 * |-----|-----|-----|-----|
228 * | 4 | 9 | -> | LOW |
229 * |-----|-----|-----|-----|
231 * |-----|-----|-----| Spc |
233 * |-----|-----|-----|-----|
234 * | 1 | 6 | <- | RAI |
235 * |-----|-----|-----|-----|
236 * | Esc | Tab | Sft | Ctl |
237 * `-----------------------'
239 [_RAISE_LAYER] = LAYOUT_gamepad_6x4(
240 KC_5, KC_0, KC_BSPC, _______, \
241 KC_4, KC_9, KC_RIGHT, _______, \
243 KC_2, KC_7, KC_DOWN, _______, \
244 KC_1, KC_6, KC_LEFT, _______, \
245 _______, _______, _______, _______),
249 /* Keymap _ALTER_LAYER: Function layer used to control the Leds
250 * and use media buttons
251 * ,----------------------------------------.
252 * | Val Dec | Bl Toggle | Qwertz | Super |
253 * |---------|------------|---------|-------|
254 * | Val Inc | Bl Off | Qwerty | |
255 * |---------|------------|---------|-------|
256 * | Sat Dec | Bl On | Colemak | |
257 * |---------|------------|---------| |
258 * | Sat Inc | RGB Toggle | Dvorak | |
259 * |---------|------------|---------|-------|
260 * | Hue Dec | RGB Next | Vol Dwn | |
261 * |---------|------------|---------|-------|
262 * | Hue Inc | RGB Prev | Vol Up | Reset |
263 * `----------------------------------------'
265 [_ALTER_LAYER] = LAYOUT_gamepad_6x4(
266 RGB_VAD, BL_TOGG, QWERTZ, KC_LGUI, \
267 RGB_VAI, BL_OFF, QWERTY, _______, \
268 RGB_SAD, BL_ON, COLEMAK, \
269 RGB_SAI, RGB_TOG, DVORAK, _______, \
270 RGB_HUD, RGB_MOD, KC_VOLD, _______, \
271 RGB_HUI, RGB_RMOD, KC_VOLU, RESET),
274 // Makes sure to update the good tri-layer if a layer changes
275 uint32_t layer_state_set_user(uint32_t state) {
276 switch (biton32(default_layer_state)) {
278 state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER);
281 state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER);
284 state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER);
287 state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER);
293 // Makes the tri-layer
294 uint32_t default_layer_state_set_kb(uint32_t state) {
295 switch (biton32(state)) {
297 state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER);
298 state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER);
299 state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER);
300 layer_move(_QWERTY_LAYER);
303 state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER);
304 state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER);
305 state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER);
306 layer_move(_QWERTZ_LAYER);
309 state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER);
310 state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER);
311 state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER);
312 layer_move(_COLEMA_LAYER);
315 state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER);
316 state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER);
317 state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER);
318 layer_move(_DVORAK_LAYER);
324 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
327 if (record->event.pressed) {
328 cospad_bl_led_togg();
332 if (record->event.pressed) {
337 if (record->event.pressed) {
342 if (record->event.pressed) {
343 set_single_persistent_default_layer(_QWERTY_LAYER);
344 print("switched to QWERTY layout\n");
349 if (record->event.pressed) {
350 set_single_persistent_default_layer(_QWERTZ_LAYER);
355 if (record->event.pressed) {
356 set_single_persistent_default_layer(_COLEMA_LAYER);
361 if (record->event.pressed) {
362 set_single_persistent_default_layer(_DVORAK_LAYER);