You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					368 lines
				
				11 KiB
			
		
		
			
		
	
	
					368 lines
				
				11 KiB
			| 
								 
											7 years ago
										 
									 | 
							
								#include QMK_KEYBOARD_H
							 | 
						||
| 
								 | 
							
								#include "led.h"
							 | 
						||
| 
								 | 
							
								#include <print.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef RGBLIGHT_ENABLE
							 | 
						||
| 
								 | 
							
								#include "rgblight.h"
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Each layer gets a name for readability, which is then used in the keymap matrix below.
							 | 
						||
| 
								 | 
							
								enum cospad_layers {
							 | 
						||
| 
								 | 
							
									_QWERTY_LAYER,
							 | 
						||
| 
								 | 
							
									_QWERTZ_LAYER,
							 | 
						||
| 
								 | 
							
									_COLEMA_LAYER,
							 | 
						||
| 
								 | 
							
									_DVORAK_LAYER,
							 | 
						||
| 
								 | 
							
									_QWERTY_LOWER_LAYER,
							 | 
						||
| 
								 | 
							
									_QWERTZ_LOWER_LAYER,
							 | 
						||
| 
								 | 
							
									_COLEMA_LOWER_LAYER,
							 | 
						||
| 
								 | 
							
									_DVORAK_LOWER_LAYER,
							 | 
						||
| 
								 | 
							
									_RAISE_LAYER,
							 | 
						||
| 
								 | 
							
									_ALTER_LAYER,
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// To switch the default layer used for the layout, there are special keycodes.
							 | 
						||
| 
								 | 
							
								// Which onces detected below serve to switch it.
							 | 
						||
| 
								 | 
							
								enum cospad_keycodes {
							 | 
						||
| 
								 | 
							
									QWERTY = SAFE_RANGE,
							 | 
						||
| 
								 | 
							
									QWERTZ,
							 | 
						||
| 
								 | 
							
									COLEMAK,
							 | 
						||
| 
								 | 
							
									DVORAK
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/* Keymap _QWERTY_LAYER: Default layer
							 | 
						||
| 
								 | 
							
									 * ,-----------------------.
							 | 
						||
| 
								 | 
							
									 * |  T  |  G  |  B  | Alt |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  R  |  F  |  V  | LOW |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  E  |  D  |  C  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----| Spc |
							 | 
						||
| 
								 | 
							
									 * |  W  |  S  |  X  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  Q  |  A  |  Z  | RAI |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * | Esc | Tab | Sft | Ctl |
							 | 
						||
| 
								 | 
							
									 * `-----------------------'
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 *   And it's LOWER layer
							 | 
						||
| 
								 | 
							
									 * ,-----------------------.
							 | 
						||
| 
								 | 
							
									 * |  P  |  ;  |  /  | Alt |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  O  |  L  |  .  | LOW |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  I  |  K  |  ,  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----| Ent |
							 | 
						||
| 
								 | 
							
									 * |  U  |  J  |  M  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  Y  |  H  |  N  | RAI |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * | Esc | Tab | Sft | Ctl |
							 | 
						||
| 
								 | 
							
									 * `-----------------------'
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									[_QWERTY_LAYER] = LAYOUT_gamepad_6x4(
							 | 
						||
| 
								 | 
							
											KC_T,    KC_G,    KC_B,    KC_LALT,  \
							 | 
						||
| 
								 | 
							
											KC_R,    KC_F,    KC_V,    MO(_QWERTY_LOWER_LAYER),\
							 | 
						||
| 
								 | 
							
											KC_E,    KC_D,    KC_C,              \
							 | 
						||
| 
								 | 
							
											KC_W,    KC_S,    KC_X,    KC_SPACE, \
							 | 
						||
| 
								 | 
							
											KC_Q,    KC_A,    KC_Z,    MO(_RAISE_LAYER),\
							 | 
						||
| 
								 | 
							
											KC_GESC, KC_TAB,  KC_LSFT, KC_LCTRL),
							 | 
						||
| 
								 | 
							
									[_QWERTY_LOWER_LAYER] = LAYOUT_gamepad_6x4(
							 | 
						||
| 
								 | 
							
											KC_P,    KC_SCLN, KC_SLSH, KC_LALT,  \
							 | 
						||
| 
								 | 
							
											KC_O,    KC_L,    KC_DOT,  _______,  \
							 | 
						||
| 
								 | 
							
											KC_I,    KC_K,    KC_COMM,           \
							 | 
						||
| 
								 | 
							
											KC_U,    KC_J,    KC_M,    KC_ENTER, \
							 | 
						||
| 
								 | 
							
											KC_Y,    KC_H,    KC_N,    _______,  \
							 | 
						||
| 
								 | 
							
											_______, _______,  _______, _______),
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/* Keymap _QWERTZ_LAYER: Alternate default layer
							 | 
						||
| 
								 | 
							
									 * ,-----------------------.
							 | 
						||
| 
								 | 
							
									 * |  T  |  G  |  B  | Alt |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  R  |  F  |  V  | LOW |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  E  |  D  |  C  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----| Spc |
							 | 
						||
| 
								 | 
							
									 * |  W  |  S  |  X  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  Q  |  A  |  Y  | RAI |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * | Esc | Tab | Sft | Ctl |
							 | 
						||
| 
								 | 
							
									 * `-----------------------'
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 *   And it's LOWER layer
							 | 
						||
| 
								 | 
							
									 * ,-----------------------.
							 | 
						||
| 
								 | 
							
									 * |  P  |  ;  |  /  | Alt |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  O  |  L  |  >  | LOW |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  I  |  K  |  <  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----| Ent |
							 | 
						||
| 
								 | 
							
									 * |  U  |  J  |  M  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  Z  |  H  |  N  | RAI |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * | Esc | Tab | Sft | Ctl |
							 | 
						||
| 
								 | 
							
									 * `-----------------------'
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									[_QWERTZ_LAYER] = LAYOUT_gamepad_6x4(
							 | 
						||
| 
								 | 
							
											KC_T,    KC_G,    KC_B,    KC_LALT,  \
							 | 
						||
| 
								 | 
							
											KC_R,    KC_F,    KC_V,    MO(_QWERTZ_LOWER_LAYER),\
							 | 
						||
| 
								 | 
							
											KC_E,    KC_D,    KC_C,              \
							 | 
						||
| 
								 | 
							
											KC_W,    KC_S,    KC_X,    KC_SPACE, \
							 | 
						||
| 
								 | 
							
											KC_Q,    KC_A,    KC_Y,    MO(_RAISE_LAYER),\
							 | 
						||
| 
								 | 
							
											KC_GESC, KC_TAB,  KC_LSFT, KC_LCTRL),
							 | 
						||
| 
								 | 
							
									[_QWERTZ_LOWER_LAYER] = LAYOUT_gamepad_6x4(
							 | 
						||
| 
								 | 
							
											KC_P,    KC_SCLN, KC_SLSH, KC_LALT,  \
							 | 
						||
| 
								 | 
							
											KC_O,    KC_L,    KC_DOT,  _______,  \
							 | 
						||
| 
								 | 
							
											KC_I,    KC_K,    KC_COMM,           \
							 | 
						||
| 
								 | 
							
											KC_U,    KC_J,    KC_M,    KC_ENTER, \
							 | 
						||
| 
								 | 
							
											KC_Z,    KC_H,    KC_N,    _______,  \
							 | 
						||
| 
								 | 
							
											_______, _______, _______, _______),
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/* Keymap _COLEMA_LAYER: Alternate default layer
							 | 
						||
| 
								 | 
							
									 * ,-----------------------.
							 | 
						||
| 
								 | 
							
									 * |  G  |  D  |  B  | Alt |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  P  |  T  |  V  | LOW |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  F  |  S  |  C  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----| Spc |
							 | 
						||
| 
								 | 
							
									 * |  W  |  R  |  X  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  Q  |  A  |  Z  | RAI |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * | Esc | Tab | Sft | Ctl |
							 | 
						||
| 
								 | 
							
									 * `-----------------------'
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 *   And it's LOWER layer
							 | 
						||
| 
								 | 
							
									 * ,-----------------------.
							 | 
						||
| 
								 | 
							
									 * |  ;  |  O  |  /  | Alt |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  Y  |  I  |  .  | LOW |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  U  |  E  |  ,  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----| Ent |
							 | 
						||
| 
								 | 
							
									 * |  L  |  N  |  M  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  J  |  H  |  K  | RAI |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * | Esc | Tab | Sft | Ctl |
							 | 
						||
| 
								 | 
							
									 * `-----------------------'
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									[_COLEMA_LAYER] = LAYOUT_gamepad_6x4(
							 | 
						||
| 
								 | 
							
											KC_T,    KC_D,     KC_B,    KC_LALT,  \
							 | 
						||
| 
								 | 
							
											KC_R,    KC_T,     KC_V,    MO(_COLEMA_LOWER_LAYER),\
							 | 
						||
| 
								 | 
							
											KC_E,    KC_S,     KC_C,              \
							 | 
						||
| 
								 | 
							
											KC_W,    KC_R,     KC_X,    KC_SPACE, \
							 | 
						||
| 
								 | 
							
											KC_Q,    KC_A,     KC_Z,    MO(_RAISE_LAYER),\
							 | 
						||
| 
								 | 
							
											KC_GESC, KC_TAB,   KC_LSFT, KC_LCTRL),
							 | 
						||
| 
								 | 
							
									[_COLEMA_LOWER_LAYER] = LAYOUT_gamepad_6x4(
							 | 
						||
| 
								 | 
							
											KC_SCLN, KC_O,     KC_SLSH, _______,  \
							 | 
						||
| 
								 | 
							
											KC_Y,    KC_I,     KC_DOT,  _______,  \
							 | 
						||
| 
								 | 
							
											KC_U,    KC_E,     KC_COMM,           \
							 | 
						||
| 
								 | 
							
											KC_L,    KC_N,     KC_M,    KC_ENTER, \
							 | 
						||
| 
								 | 
							
											KC_J,    KC_H,     KC_K,    _______,  \
							 | 
						||
| 
								 | 
							
											KC_F,    KC_G,     _______, _______),
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/* Keymap _DVORAK_LAYER: Alternate default layer
							 | 
						||
| 
								 | 
							
									 * ,-----------------------.
							 | 
						||
| 
								 | 
							
									 * |  Y  |  I  |  X  | Alt |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  P  |  U  |  K  | LOW |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  .  |  E  |  J  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----| Spc |
							 | 
						||
| 
								 | 
							
									 * |  ,  |  O  |  Q  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  '  |  A  |  ;  | RAI |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * | Esc | Tab | Sft | Ctl |
							 | 
						||
| 
								 | 
							
									 * `-----------------------'
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 *   And it's LOWER layer
							 | 
						||
| 
								 | 
							
									 * ,-----------------------.
							 | 
						||
| 
								 | 
							
									 * |  L  |  S  |  Z  | Alt |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  R  |  N  |  V  | LOW |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  C  |  T  |  W  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----| Ent |
							 | 
						||
| 
								 | 
							
									 * |  G  |  H  |  M  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  F  |  D  |  B  | RAI |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * | Esc | Tab | Sft | Ctl |
							 | 
						||
| 
								 | 
							
									 * `-----------------------'
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									[_DVORAK_LAYER] = LAYOUT_gamepad_6x4(
							 | 
						||
| 
								 | 
							
											KC_Y,    KC_I,    KC_X,    KC_LALT,   \
							 | 
						||
| 
								 | 
							
											KC_P,    KC_U,    KC_K,    MO(_DVORAK_LOWER_LAYER),\
							 | 
						||
| 
								 | 
							
											KC_DOT,  KC_E,    KC_J,               \
							 | 
						||
| 
								 | 
							
											KC_COMM, KC_O,    KC_A,    KC_SPACE,  \
							 | 
						||
| 
								 | 
							
											KC_QUOT, KC_A,    KC_SCLN, MO(_RAISE_LAYER),\
							 | 
						||
| 
								 | 
							
											KC_GESC, KC_TAB,  KC_LSFT, KC_LCTRL),
							 | 
						||
| 
								 | 
							
									[_DVORAK_LOWER_LAYER] = LAYOUT_gamepad_6x4(
							 | 
						||
| 
								 | 
							
											KC_L,    KC_S,    KC_Z,    KC_LALT, \
							 | 
						||
| 
								 | 
							
											KC_R,    KC_N,    KC_V,    _______, \
							 | 
						||
| 
								 | 
							
											KC_C,    KC_T,    KC_W,             \
							 | 
						||
| 
								 | 
							
											KC_G,    KC_H,    KC_M,    KC_ENTER,\
							 | 
						||
| 
								 | 
							
											KC_F,    KC_D,    KC_B,    _______, \
							 | 
						||
| 
								 | 
							
											_______, _______, _______, _______),
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/* Keymap _RAISE_LAYER: Additional layer to access more
							 | 
						||
| 
								 | 
							
									 * ,-----------------------.
							 | 
						||
| 
								 | 
							
									 * |  5  |  0  | del | Alt |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  4  |  9  | ->  | LOW |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  3  |  8  |  <- |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----| Spc |
							 | 
						||
| 
								 | 
							
									 * |  2  |  7  | ->  |     |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * |  1  |  6  |  <- | RAI |
							 | 
						||
| 
								 | 
							
									 * |-----|-----|-----|-----|
							 | 
						||
| 
								 | 
							
									 * | Esc | Tab | Sft | Ctl |
							 | 
						||
| 
								 | 
							
									 * `-----------------------'
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									[_RAISE_LAYER] = LAYOUT_gamepad_6x4(
							 | 
						||
| 
								 | 
							
											KC_5,    KC_0,   KC_BSPC,  _______, \
							 | 
						||
| 
								 | 
							
											KC_4,    KC_9,   KC_RIGHT, _______, \
							 | 
						||
| 
								 | 
							
											KC_3,    KC_8,   KC_UP,             \
							 | 
						||
| 
								 | 
							
											KC_2,    KC_7,   KC_DOWN,  _______, \
							 | 
						||
| 
								 | 
							
											KC_1,    KC_6,   KC_LEFT,  _______, \
							 | 
						||
| 
								 | 
							
											_______, _______, _______, _______),
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/* Keymap _ALTER_LAYER: Function layer used to control the Leds
							 | 
						||
| 
								 | 
							
									 *                     and use media buttons
							 | 
						||
| 
								 | 
							
									 * ,----------------------------------------.
							 | 
						||
| 
								 | 
							
									 * | Val Dec | Bl Toggle  | Qwertz  | Super |
							 | 
						||
| 
								 | 
							
									 * |---------|------------|---------|-------|
							 | 
						||
| 
								 | 
							
									 * | Val Inc |   Bl Off   | Qwerty  |       |
							 | 
						||
| 
								 | 
							
									 * |---------|------------|---------|-------|
							 | 
						||
| 
								 | 
							
									 * | Sat Dec |   Bl On    | Colemak |       |
							 | 
						||
| 
								 | 
							
									 * |---------|------------|---------|       |
							 | 
						||
| 
								 | 
							
									 * | Sat Inc | RGB Toggle | Dvorak  |       |
							 | 
						||
| 
								 | 
							
									 * |---------|------------|---------|-------|
							 | 
						||
| 
								 | 
							
									 * | Hue Dec |  RGB Next  | Vol Dwn |       |
							 | 
						||
| 
								 | 
							
									 * |---------|------------|---------|-------|
							 | 
						||
| 
								 | 
							
									 * | Hue Inc |  RGB Prev  | Vol Up  | Reset |
							 | 
						||
| 
								 | 
							
									 * `----------------------------------------'
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									[_ALTER_LAYER] = LAYOUT_gamepad_6x4(
							 | 
						||
| 
								 | 
							
											RGB_VAD, BL_TOGG,  QWERTZ,  KC_LGUI, \
							 | 
						||
| 
								 | 
							
											RGB_VAI, BL_OFF,   QWERTY,  _______, \
							 | 
						||
| 
								 | 
							
											RGB_SAD, BL_ON,    COLEMAK,          \
							 | 
						||
| 
								 | 
							
											RGB_SAI, RGB_TOG,  DVORAK,  _______, \
							 | 
						||
| 
								 | 
							
											RGB_HUD, RGB_MOD,  KC_VOLD, _______, \
							 | 
						||
| 
								 | 
							
											RGB_HUI, RGB_RMOD, KC_VOLU, RESET),
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Makes sure to update the good tri-layer if a layer changes
							 | 
						||
| 
								 | 
							
								uint32_t layer_state_set_user(uint32_t state) {
							 | 
						||
| 
								 | 
							
									switch (biton32(default_layer_state)) {
							 | 
						||
| 
								 | 
							
										case _QWERTY_LAYER:
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											break;
							 | 
						||
| 
								 | 
							
										case _QWERTZ_LAYER:
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											break;
							 | 
						||
| 
								 | 
							
										case _COLEMA_LAYER:
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											break;
							 | 
						||
| 
								 | 
							
										case _DVORAK_LAYER:
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											break;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return state;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Makes the tri-layer
							 | 
						||
| 
								 | 
							
								uint32_t default_layer_state_set_kb(uint32_t state) {
							 | 
						||
| 
								 | 
							
									switch (biton32(state)) {
							 | 
						||
| 
								 | 
							
										case _QWERTY_LAYER:
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											layer_move(_QWERTY_LAYER);
							 | 
						||
| 
								 | 
							
											break;
							 | 
						||
| 
								 | 
							
										case _QWERTZ_LAYER:
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											layer_move(_QWERTZ_LAYER);
							 | 
						||
| 
								 | 
							
											break;
							 | 
						||
| 
								 | 
							
										case _COLEMA_LAYER:
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _DVORAK_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											layer_move(_COLEMA_LAYER);
							 | 
						||
| 
								 | 
							
											break;
							 | 
						||
| 
								 | 
							
										case _DVORAK_LAYER:
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER);
							 | 
						||
| 
								 | 
							
											layer_move(_DVORAK_LAYER);
							 | 
						||
| 
								 | 
							
											break;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return state;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								bool process_record_user(uint16_t keycode, keyrecord_t *record) {
							 | 
						||
| 
								 | 
							
									switch (keycode) {
							 | 
						||
| 
								 | 
							
										case BL_TOGG:
							 | 
						||
| 
								 | 
							
											if (record->event.pressed) {
							 | 
						||
| 
								 | 
							
												cospad_bl_led_togg();
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											return false;
							 | 
						||
| 
								 | 
							
										case BL_ON:
							 | 
						||
| 
								 | 
							
											if (record->event.pressed) {
							 | 
						||
| 
								 | 
							
												cospad_bl_led_on();
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											return false;
							 | 
						||
| 
								 | 
							
										case BL_OFF:
							 | 
						||
| 
								 | 
							
											if (record->event.pressed) {
							 | 
						||
| 
								 | 
							
												cospad_bl_led_off();
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											return false;
							 | 
						||
| 
								 | 
							
										case QWERTY:
							 | 
						||
| 
								 | 
							
											if (record->event.pressed) {
							 | 
						||
| 
								 | 
							
												set_single_persistent_default_layer(_QWERTY_LAYER);
							 | 
						||
| 
								 | 
							
												print("switched to QWERTY layout\n");
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											return false;
							 | 
						||
| 
								 | 
							
											break;
							 | 
						||
| 
								 | 
							
										case QWERTZ:
							 | 
						||
| 
								 | 
							
											if (record->event.pressed) {
							 | 
						||
| 
								 | 
							
												set_single_persistent_default_layer(_QWERTZ_LAYER);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											return false;
							 | 
						||
| 
								 | 
							
											break;
							 | 
						||
| 
								 | 
							
										case COLEMAK:
							 | 
						||
| 
								 | 
							
											if (record->event.pressed) {
							 | 
						||
| 
								 | 
							
												set_single_persistent_default_layer(_COLEMA_LAYER);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											return false;
							 | 
						||
| 
								 | 
							
											break;
							 | 
						||
| 
								 | 
							
										case DVORAK:
							 | 
						||
| 
								 | 
							
											if (record->event.pressed) {
							 | 
						||
| 
								 | 
							
												set_single_persistent_default_layer(_DVORAK_LAYER);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											return false;
							 | 
						||
| 
								 | 
							
											break;
							 | 
						||
| 
								 | 
							
										default:
							 | 
						||
| 
								 | 
							
											return true;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 |