1 #include QMK_KEYBOARD_H
2 #include "action_layer.h"
5 extern keymap_config_t keymap_config;
7 // Each layer gets a name for readability, which is then used in the keymap matrix below.
8 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
9 // Layer names don't all need to be of the same length, obviously, and you can also skip them
10 // entirely and just use numbers.
18 enum custom_keycodes {
27 // Fillers to make layering more clear
28 #define _______ KC_TRNS
32 #define CTL_ESC CTL_T(KC_ESC) // Tap for Escape, hold for Control
33 #define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift
34 #define SFT_BSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift
35 #define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift)
36 // #define MEH_GRV MEH_T(KC_GRV) // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift)
38 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
41 * ,--------------------------------------------------------------------------------------------------------.
42 * | | | | | | | | | | | | | | | |
43 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
44 * | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | Bksp |
45 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
46 * | Esc | A | S | D | F | G | | | | H | J | K | L | ; | " |
47 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
48 * | Shift| Z | X | C | V | B | | | | N | M | , | . | / |Enter |
49 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
50 * |Adjust| Ctrl | Alt | GUI |Lower |Space | | | | Bksp |Raise | GUI |AltGr | Ctrl |Adjust|
51 * `--------------------------------------------------------------------------------------------------------'
54 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
55 { HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, _______, _______, _______, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC },
56 { CTL_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, _______, _______, _______, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT },
57 { SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT },
58 { ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, _______, _______, _______, SFT_BSP, RAISE, KC_RGUI, KC_RALT, KC_RCTL, ADJUST },
62 * ,--------------------------------------------------------------------------------------------------------.
63 * | | | | | | | | | | | | | | | |
64 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
65 * | Tab | Q | W | F | P | G | | | | J | L | U | Y | ; | Bksp |
66 * |------+------+------+------+------+------+------+------+-------------+------+------+------+------+------|
67 * | Esc | A | R | S | T | D | | | | H | N | E | I | O | " |
68 * |------+------+------+------+------+------+------+------+------|------+------+------+------+------+------|
69 * | Shift| Z | X | C | V | B | | | | K | M | , | . | / |Enter |
70 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
71 * |Adjust| Ctrl | Alt | GUI |Lower |Space | | | | Bksp |Raise | GUI |AltGr | Ctrl |Adjust|
72 * `--------------------------------------------------------------------------------------------------------'
75 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
76 { HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, _______, _______, _______, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC },
77 { CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, _______, _______, _______, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT },
78 { SFT_BSP, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, _______, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT },
79 { ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, _______, _______, _______, SFT_BSP, RAISE, KC_RGUI, KC_RALT, KC_RCTL, ADJUST },
83 * ,--------------------------------------------------------------------------------------------------------.
84 * | | | | | | | | | | | | | | | |
85 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
86 * | Tab | " | , | . | P | Y | | | | F | G | C | R | L | Bksp |
87 * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------|
88 * | Esc | A | O | E | U | I | | | | D | H | T | N | S | / |
89 * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------|
90 * | Shift| ; | Q | J | K | X | | | | B | M | W | V | Z |Enter |
91 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
92 * |Adjust| Ctrl | Alt | GUI |Lower |Space | | | | Bksp |Raise | GUI |AltGr | Ctrl |Adjust|
93 * `--------------------------------------------------------------------------------------------------------'
96 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
97 { HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, _______, _______, _______, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC },
98 { CTL_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, _______, _______, _______, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH },
99 { SFT_BSP, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, _______, _______, _______, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT },
100 { ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, _______, _______, _______, SFT_BSP, RAISE, KC_RGUI, KC_RALT, KC_RCTL, ADJUST },
104 * ,--------------------------------------------------------------------------------------------------------.
105 * | | | | | | | | | | | | | | | |
106 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
107 * | ~ | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | Bksp |
108 * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------|
109 * | Del | F1 | F2 | F3 | F4 | F5 | | | | F6 | _ | + | { | } | | |
110 * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------|
111 * | | F7 | F8 | F9 | F10 | F11 | | | | F12 | MS L | MS D |MS U | MS R |MS Btn|
112 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
113 * | | | | | | | | | | | | Next | Vol- | Vol+ | Play |
114 * `--------------------------------------------------------------------------------------------------------'
117 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
118 { KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC },
119 { KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE },
120 { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1 },
121 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY },
125 * ,--------------------------------------------------------------------------------------------------------.
126 * | | | | | | | | | | | | | | | |
127 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
128 * | ` | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | Bksp |
129 * |------+------+------+------+------+-------------+------+------+------+------+------+------+------+------|
130 * | Del | F1 | F2 | F3 | F4 | F5 | | | | F6 | - | = | [ | ] | \ |
131 * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------|
132 * | | F7 | F8 | F9 | F10 | F11 | | | | F12 | Left | Down | Up | Rght |MS_BN2|
133 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
134 * | | | | | | | | | | | | Next | Vol- | Vol+ | Play |
135 * `--------------------------------------------------------------------------------------------------------'
138 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
139 { KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC },
140 { KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS },
141 { _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, _______, KC_F12, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BTN2 },
142 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY },
145 /* Adjust (Lower + Raise)
146 * ,--------------------------------------------------------------------------------------------------------.
147 * | | | | | | | | | | | | | | | |
148 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
149 * | |Reset | |Aud on|Audoff|AGnorm| | | |AGswap|Qwerty|Colemk|Dvorak|Reset | Del |
150 * |------+------+------+------+------+------|------+------+------+------+------+------+------+------+------|
151 * | | | | | | | | | | | | | | | |
152 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
153 * | | | | | | | | | | | | | | | |
154 * |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
155 * | | | | | | | | | | | | | | | |
156 * `--------------------------------------------------------------------------------------------------------'
159 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
160 { _______, RESET, _______, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, AG_SWAP, QWERTY, COLEMAK, DVORAK, RESET, KC_DEL },
161 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
162 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
163 { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
168 float tone_qwerty[][2] = SONG(QWERTY_SOUND);
169 float tone_dvorak[][2] = SONG(DVORAK_SOUND);
170 float tone_colemak[][2] = SONG(COLEMAK_SOUND);
173 void persistent_default_layer_set(uint16_t default_layer) {
174 eeconfig_update_default_layer(default_layer);
175 default_layer_set(default_layer);
178 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
181 if (record->event.pressed) {
183 PLAY_SONG(tone_qwerty);
185 persistent_default_layer_set(1UL<<_QWERTY);
190 if (record->event.pressed) {
192 PLAY_SONG(tone_colemak);
194 persistent_default_layer_set(1UL<<_COLEMAK);
199 if (record->event.pressed) {
201 PLAY_SONG(tone_dvorak);
203 persistent_default_layer_set(1UL<<_DVORAK);
208 if (record->event.pressed) {
210 update_tri_layer(_LOWER, _RAISE, _ADJUST);
213 update_tri_layer(_LOWER, _RAISE, _ADJUST);
218 if (record->event.pressed) {
220 update_tri_layer(_LOWER, _RAISE, _ADJUST);
223 update_tri_layer(_LOWER, _RAISE, _ADJUST);
228 if (record->event.pressed) {