Commit | Line | Data |
---|---|---|
f78a9943 | 1 | |
26eef35f | 2 | #include QMK_KEYBOARD_H |
f78a9943 JK |
3 | |
4 | extern keymap_config_t keymap_config; | |
5 | ||
6 | // Each layer gets a name for readability, which is then used in the keymap matrix below. | |
7 | // The underscores don't mean anything - you can have a layer called STUFF or any other name. | |
8 | // Layer names don't all need to be of the same length, obviously, and you can also skip them | |
9 | // entirely and just use numbers. | |
10 | #define _QWERTY 0 | |
11 | #define _COLEMAK 1 | |
12 | #define _DVORAK 2 | |
13 | #define _LOWER 3 | |
14 | #define _RAISE 4 | |
15 | #define _PLOVER 5 | |
b5d77440 | 16 | #define _TOUCHCURSOR 6 |
6483a2a0 | 17 | #define _MOUSECURSOR 7 |
f78a9943 JK |
18 | #define _ADJUST 16 |
19 | ||
fdd89e7f | 20 | // Keycodes |
f78a9943 JK |
21 | enum planck_keycodes { |
22 | QWERTY = SAFE_RANGE, | |
23 | COLEMAK, | |
24 | DVORAK, | |
25 | PLOVER, | |
26 | LOWER, | |
27 | RAISE, | |
28 | BACKLIT, | |
29 | EXT_PLV | |
30 | }; | |
31 | ||
fdd89e7f JK |
32 | enum macro_keycodes { |
33 | KC_ALT_TAB, | |
34 | KC_CMD_TAB, | |
35 | KC_CTL_TAB, | |
9a4e72fa | 36 | KC_CMD_SLSH, |
7db1d790 JK |
37 | KC_AG_FIND, |
38 | KC_AG_AGAIN, | |
39 | KC_AG_UNDO, | |
40 | KC_AG_CUT, | |
41 | KC_AG_COPY, | |
42 | KC_AG_PASTE, | |
bda4d15f JK |
43 | KC_AG_DESK_L, |
44 | KC_AG_DESK_R, | |
68e28701 JK |
45 | KC_AG_TAB_C, |
46 | KC_AG_TAB_N, | |
47 | KC_AG_TAB_R, | |
fdd89e7f JK |
48 | }; |
49 | ||
eb1a06d3 JK |
50 | // Custom macros |
51 | #define CTL_ESC CTL_T(KC_ESC) // Tap for Esc, hold for Ctrl | |
ad7e4af4 | 52 | #define SFT_ENT SFT_T(KC_ENT) // Tap for Enter, hold for Shift |
3d86e5b7 | 53 | #define HPR_TAB ALL_T(KC_TAB) // Tap for Tab, hold for Hyper |
ef83f1d0 JK |
54 | #define GUI_SEM GUI_T(KC_SCLN) // Tap for Semicolon, hold for GUI |
55 | #define ALT_QUO ALT_T(KC_QUOT) // Tap for Quote, hold for Alt | |
fdd89e7f | 56 | // Requires KC_TRNS/_______ for the trigger key in the destination layer |
6483a2a0 JK |
57 | #define LT_TC LT(_TOUCHCURSOR, KC_SPC) // L-ayer T-ap T-ouch C-ursor |
58 | #define LT_MC(kc) LT(_MOUSECURSOR, kc) // L-ayer T-ap M-ouse C-ursor | |
fdd89e7f JK |
59 | #define ALT_TAB M(KC_ALT_TAB) // Macro for Alt-Tab |
60 | #define CMD_TAB M(KC_CMD_TAB) // Macro for Cmd-Tab | |
61 | #define CTL_TAB M(KC_CTL_TAB) // Macro for Ctl-Tab | |
9a4e72fa | 62 | #define CMD_SLSH M(KC_CMD_SLSH) // Macro for Cmd-Slash (personal shortcut to toggle iTerm2 visibility) |
7db1d790 JK |
63 | #define AG_FIND M(KC_AG_FIND) // Macros for Cmd-[x] vs Ctrl-[x] based on current AG_NORM or AG_SWAP settings |
64 | #define AG_AGAIN M(KC_AG_AGAIN) | |
65 | #define AG_UNDO M(KC_AG_UNDO) | |
66 | #define AG_CUT M(KC_AG_CUT) | |
67 | #define AG_COPY M(KC_AG_COPY) | |
68 | #define AG_PASTE M(KC_AG_PASTE) | |
bda4d15f JK |
69 | #define AG_D_L M(KC_AG_DESK_L) // For Virtual Desktop Switching: Left, and |
70 | #define AG_D_R M(KC_AG_DESK_R) // Right | |
68e28701 JK |
71 | #define AG_T_C M(KC_AG_TAB_C) // For Chrome, etc. Tab Close, |
72 | #define AG_T_N M(KC_AG_TAB_N) // Tab New, and | |
73 | #define AG_T_R M(KC_AG_TAB_R) // Tab Reopen Closed | |
eb1a06d3 | 74 | |
f78a9943 JK |
75 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
76 | ||
77 | /* Qwerty | |
ad7e4af4 | 78 | * ,-----------------------------------------------------------------------------------------. |
3d86e5b7 | 79 | * | Hyper/Tab| Q | W | E | R | T | Y | U | I | O | P | Bksp | |
ad7e4af4 | 80 | * |----------+------+------+------+------+-------------+------+------+------+------+--------| |
ef83f1d0 | 81 | * | Ctrl/Esc | A | S | MC/D | F | G | H | J | K | L |GUI/; | Alt/" | |
ad7e4af4 JK |
82 | * |----------+------+------+------+------+------|------+------+------+------+------+--------| |
83 | * | Shift | Z | X | C | V | B | N | M | , | . | / |Sft/Ent | | |
84 | * |----------+------+------+------+------+------+------+------+------+------+------+--------| | |
eb9416a6 | 85 | * | PrntScrn | RGUI | Alt | GUI |Lower | TC/Space |Raise | Next | Vol- | Vol+ | Play | |
ad7e4af4 | 86 | * `-----------------------------------------------------------------------------------------' |
f78a9943 | 87 | */ |
26eef35f JY |
88 | [_QWERTY] = LAYOUT_planck_grid( |
89 | HPR_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, | |
90 | CTL_ESC, KC_A, KC_S, LT_MC(KC_D),KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, GUI_SEM, ALT_QUO, | |
91 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, | |
92 | KC_PSCR, KC_RGUI, KC_LALT, KC_LGUI, LOWER, LT_TC, LT_TC, RAISE, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | |
93 | ), | |
f78a9943 JK |
94 | |
95 | /* Colemak | |
ad7e4af4 | 96 | * ,-----------------------------------------------------------------------------------------. |
3d86e5b7 | 97 | * | Hyper/Tab| Q | W | F | P | G | J | L | U | Y | ; | Bksp | |
ad7e4af4 | 98 | * |----------+------+------+------+------+-------------+------+------+------+------+--------| |
6483a2a0 | 99 | * | Ctrl/Esc | A | R | MC/S | T | D | H | N | E | I | O | " | |
ad7e4af4 JK |
100 | * |----------+------+------+------+------+------|------+------+------+------+------+--------| |
101 | * | Shift | Z | X | C | V | B | K | M | , | . | / |Sft/Ent | | |
102 | * |----------+------+------+------+------+------+------+------+------+------+------+--------| | |
eb9416a6 | 103 | * | PrntScrn | RGUI | Alt | GUI |Lower | TC/Space |Raise | Next | Vol- | Vol+ | Play | |
ad7e4af4 | 104 | * `-----------------------------------------------------------------------------------------' |
f78a9943 | 105 | */ |
26eef35f JY |
106 | [_COLEMAK] = LAYOUT_planck_grid( |
107 | HPR_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, | |
108 | CTL_ESC, KC_A, KC_R, LT_MC(KC_S),KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, | |
109 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_ENT, | |
110 | KC_PSCR, KC_RGUI, KC_LALT, KC_LGUI, LOWER, LT_TC, LT_TC, RAISE, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | |
111 | ), | |
f78a9943 JK |
112 | |
113 | /* Dvorak | |
ad7e4af4 | 114 | * ,-----------------------------------------------------------------------------------------. |
3d86e5b7 | 115 | * | Hyper/Tab| " | , | . | P | Y | F | G | C | R | L | Bksp | |
ad7e4af4 | 116 | * |----------+------+------+------+------+-------------+------+------+------+------+--------| |
6483a2a0 | 117 | * | Ctrl/Esc | A | O | MC/E | U | I | D | H | T | N | S | / | |
ad7e4af4 JK |
118 | * |----------+------+------+------+------+------|------+------+------+------+------+--------| |
119 | * | Shift | ; | Q | J | K | X | B | M | W | V | Z |Sft/Ent | | |
120 | * |----------+------+------+------+------+------+------+------+------+------+------+--------| | |
eb9416a6 | 121 | * | PrntScrn | RGUI | Alt | GUI |Lower | TC/Space |Raise | Next | Vol- | Vol+ | Play | |
ad7e4af4 | 122 | * `-----------------------------------------------------------------------------------------' |
f78a9943 | 123 | */ |
26eef35f JY |
124 | [_DVORAK] = LAYOUT_planck_grid( |
125 | HPR_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, | |
126 | CTL_ESC, KC_A, KC_O, LT_MC(KC_E),KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, | |
127 | KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, SFT_ENT, | |
128 | KC_PSCR, KC_RGUI, KC_LALT, KC_LGUI, LOWER, LT_TC, LT_TC, RAISE, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | |
129 | ), | |
f78a9943 JK |
130 | |
131 | /* Lower | |
132 | * ,-----------------------------------------------------------------------------------. | |
133 | * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | | |
134 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
db8ad820 | 135 | * | [ | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | |
f78a9943 | 136 | * |------+------+------+------+------+------|------+------+------+------+------+------| |
db8ad820 | 137 | * | ] | F7 | F8 | F9 | F10 | F11 | F12 | - | = | [ | ] | \ | |
f78a9943 | 138 | * |------+------+------+------+------+------+------+------+------+------+------+------| |
eb9416a6 | 139 | * |Brite | | | | | | | Prev | Stop | Slct | Mute | |
f78a9943 JK |
140 | * `-----------------------------------------------------------------------------------' |
141 | */ | |
26eef35f JY |
142 | [_LOWER] = LAYOUT_planck_grid( |
143 | KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, | |
144 | KC_LBRC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, | |
145 | KC_RBRC, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, | |
146 | BACKLIT, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MSTP, KC_MSEL, KC_MUTE | |
147 | ), | |
f78a9943 JK |
148 | |
149 | /* Raise | |
150 | * ,-----------------------------------------------------------------------------------. | |
b54a5885 | 151 | * | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | |
f78a9943 | 152 | * |------+------+------+------+------+-------------+------+------+------+------+------| |
16f4a317 | 153 | * | $ | 4 | 5 | 6 | . | + | . | 4 | 5 | 6 | * | | | |
f78a9943 | 154 | * |------+------+------+------+------+------|------+------+------+------+------+------| |
16f4a317 | 155 | * | = | 7 | 8 | 9 | 0 | - | . | 1 | 2 | 3 | / | \ | |
f78a9943 | 156 | * |------+------+------+------+------+------+------+------+------+------+------+------| |
eb9416a6 | 157 | * |Brite | | | | | | | Prev | Stop | Slct | Mute | |
f78a9943 JK |
158 | * `-----------------------------------------------------------------------------------' |
159 | */ | |
26eef35f JY |
160 | [_RAISE] = LAYOUT_planck_grid( |
161 | KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, | |
162 | KC_DLR, KC_4, KC_5, KC_6, KC_DOT, KC_PLUS, KC_DOT, KC_4, KC_5, KC_6, KC_ASTR, KC_PIPE, | |
163 | KC_EQL, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_DOT, KC_1, KC_2, KC_3, KC_SLSH, KC_BSLS, | |
164 | BACKLIT, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MSTP, KC_MSEL, KC_MUTE | |
165 | ), | |
f78a9943 | 166 | |
b5d77440 JK |
167 | /* TouchCursor layer (http://martin-stone.github.io/touchcursor/) plus personal customizations |
168 | * ,-----------------------------------------------------------------------------------. | |
fdd89e7f | 169 | * |AltTab|CmdTab|CtlTab| GUI |Shift | ~ |Insert| Home | Up | End | Bksp | | |
b5d77440 | 170 | * |------+------+------+------+------+-------------+------+------+------+------+------| |
68e28701 | 171 | * | | Alt |Space |Tab_C | Find |Again | PgUp | Left | Down |Right |Desk_L|Desk_R| |
b5d77440 | 172 | * |------+------+------+------+------+------|------+------+------+------+------+------| |
68e28701 | 173 | * | | Undo | Cut | Copy |Paste | ` | PgDn | Del |Tab_N |Tab_R |iTerm2| | |
b5d77440 | 174 | * |------+------+------+------+------+------+------+------+------+------+------+------| |
7209310d | 175 | * | | | | | | | | | | | | |
b5d77440 | 176 | * `-----------------------------------------------------------------------------------' |
a2ed7ce7 JK |
177 | * |
178 | * The KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_FIND, and KC_AGAIN keycodes don't | |
179 | * seem to work on Mac. Presumably they'll work under Windows. | |
b5d77440 JK |
180 | */ |
181 | ||
26eef35f JY |
182 | [_TOUCHCURSOR] = LAYOUT_planck_grid( |
183 | ALT_TAB, CMD_TAB, CTL_TAB, KC_LGUI, KC_LSFT, KC_TILD, KC_INS, KC_HOME, KC_UP, KC_END, KC_BSPC, _______, | |
184 | _______, KC_LALT, KC_SPC, AG_T_C, AG_FIND,AG_AGAIN, KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, AG_D_L, AG_D_R , | |
185 | _______, AG_UNDO, AG_CUT, AG_COPY, AG_PASTE,KC_GRV, KC_PGDN, KC_DEL, AG_T_N, AG_T_R, CMD_SLSH,_______, | |
186 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |
187 | ), | |
7209310d JK |
188 | |
189 | /* Mouse Layer | |
190 | * ,-----------------------------------------------------------------------------------. | |
57218827 | 191 | * | | |ACCL0 | | | | |WHL_L | Up |WHL_R | BTN2 | | |
7209310d | 192 | * |------+------+------+------+------+-------------+------+------+------+------+------| |
57218827 | 193 | * | |ACCL2 | BTN2 | | BTN1 |ACCL1 |WHL_Up| Left | Down |Right | BTN4 | BTN5 | |
7209310d | 194 | * |------+------+------+------+------+------|------+------+------+------+------+------| |
6483a2a0 | 195 | * | | | | | BTN3 | |WHL_Dn| BTN1 | | | BTN3 | | |
7209310d JK |
196 | * |------+------+------+------+------+------+------+------+------+------+------+------| |
197 | * | | | | | | | | | | | | | |
198 | * `-----------------------------------------------------------------------------------' | |
199 | */ | |
200 | ||
26eef35f JY |
201 | [_MOUSECURSOR] = LAYOUT_planck_grid( |
202 | _______, _______, KC_ACL0, _______, _______, _______, _______, KC_WH_L, KC_MS_U, KC_WH_R, KC_BTN2, _______, | |
203 | _______, KC_ACL2, KC_BTN2, _______, KC_BTN1, KC_ACL1, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN4, KC_BTN5, | |
204 | _______, _______, _______, _______, KC_BTN3, _______, KC_WH_D, KC_BTN1, _______, _______, KC_BTN3, _______, | |
205 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |
206 | ), | |
b5d77440 | 207 | |
f78a9943 JK |
208 | /* Plover layer (http://opensteno.org) |
209 | * ,-----------------------------------------------------------------------------------. | |
210 | * | # | # | # | # | # | # | # | # | # | # | # | # | | |
211 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
212 | * | | S | T | P | H | * | * | F | P | L | T | D | | |
213 | * |------+------+------+------+------+------|------+------+------+------+------+------| | |
214 | * |TogOut| S | K | W | R | * | * | R | B | G | S | Z | | |
215 | * |------+------+------+------+------+------+------+------+------+------+------+------| | |
216 | * | Exit | | | A | O | | E | U | | | | | |
217 | * `-----------------------------------------------------------------------------------' | |
218 | */ | |
219 | ||
26eef35f JY |
220 | [_PLOVER] = LAYOUT_planck_grid( |
221 | KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 , | |
222 | XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, | |
223 | XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, | |
224 | EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX | |
225 | ), | |
f78a9943 JK |
226 | |
227 | /* Adjust (Lower + Raise) | |
228 | * ,-----------------------------------------------------------------------------------. | |
216efe6c | 229 | * | | | | | | | | | | | | Del | |
f78a9943 JK |
230 | * |------+------+------+------+------+-------------+------+------+------+------+------| |
231 | * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | | |
232 | * |------+------+------+------+------+------|------+------+------+------+------+------| | |
233 | * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | | |
234 | * |------+------+------+------+------+------+------+------+------+------+------+------| | |
216efe6c | 235 | * | | | | | | | | | | |Reset | |
f78a9943 JK |
236 | * `-----------------------------------------------------------------------------------' |
237 | */ | |
26eef35f JY |
238 | [_ADJUST] = LAYOUT_planck_grid( |
239 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, | |
240 | _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______, | |
241 | _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, | |
242 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET | |
243 | ) | |
f78a9943 JK |
244 | |
245 | ||
246 | }; | |
247 | ||
248 | #ifdef AUDIO_ENABLE | |
249 | ||
250 | float tone_startup[][2] = SONG(STARTUP_SOUND); | |
251 | float tone_qwerty[][2] = SONG(QWERTY_SOUND); | |
252 | float tone_dvorak[][2] = SONG(DVORAK_SOUND); | |
253 | float tone_colemak[][2] = SONG(COLEMAK_SOUND); | |
254 | float tone_plover[][2] = SONG(PLOVER_SOUND); | |
255 | float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND); | |
256 | float music_scale[][2] = SONG(MUSIC_SCALE_SOUND); | |
257 | ||
258 | float tone_goodbye[][2] = SONG(GOODBYE_SOUND); | |
259 | #endif | |
260 | ||
261 | ||
8ddbf7f5 | 262 | void persistent_default_layer_set(uint16_t default_layer) { |
f78a9943 JK |
263 | eeconfig_update_default_layer(default_layer); |
264 | default_layer_set(default_layer); | |
265 | } | |
266 | ||
267 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |
268 | switch (keycode) { | |
269 | case QWERTY: | |
270 | if (record->event.pressed) { | |
271 | #ifdef AUDIO_ENABLE | |
fe60cbd9 | 272 | PLAY_SONG(tone_qwerty); |
f78a9943 | 273 | #endif |
6a2c681a | 274 | default_layer_set(1UL<<_QWERTY); |
f78a9943 JK |
275 | } |
276 | return false; | |
277 | break; | |
278 | case COLEMAK: | |
279 | if (record->event.pressed) { | |
280 | #ifdef AUDIO_ENABLE | |
fe60cbd9 | 281 | PLAY_SONG(tone_colemak); |
f78a9943 | 282 | #endif |
6a2c681a | 283 | default_layer_set(1UL<<_COLEMAK); |
f78a9943 JK |
284 | } |
285 | return false; | |
286 | break; | |
287 | case DVORAK: | |
288 | if (record->event.pressed) { | |
289 | #ifdef AUDIO_ENABLE | |
fe60cbd9 | 290 | PLAY_SONG(tone_dvorak); |
f78a9943 | 291 | #endif |
6a2c681a | 292 | default_layer_set(1UL<<_DVORAK); |
f78a9943 JK |
293 | } |
294 | return false; | |
295 | break; | |
296 | case LOWER: | |
297 | if (record->event.pressed) { | |
298 | layer_on(_LOWER); | |
299 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
300 | } else { | |
301 | layer_off(_LOWER); | |
302 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
303 | } | |
304 | return false; | |
305 | break; | |
306 | case RAISE: | |
307 | if (record->event.pressed) { | |
308 | layer_on(_RAISE); | |
309 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
310 | } else { | |
311 | layer_off(_RAISE); | |
312 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
313 | } | |
314 | return false; | |
315 | break; | |
316 | case BACKLIT: | |
317 | if (record->event.pressed) { | |
318 | register_code(KC_RSFT); | |
319 | #ifdef BACKLIGHT_ENABLE | |
320 | backlight_step(); | |
321 | #endif | |
322 | } else { | |
323 | unregister_code(KC_RSFT); | |
324 | } | |
325 | return false; | |
326 | break; | |
327 | case PLOVER: | |
328 | if (record->event.pressed) { | |
329 | #ifdef AUDIO_ENABLE | |
330 | stop_all_notes(); | |
fe60cbd9 | 331 | PLAY_SONG(tone_plover); |
f78a9943 JK |
332 | #endif |
333 | layer_off(_RAISE); | |
334 | layer_off(_LOWER); | |
335 | layer_off(_ADJUST); | |
336 | layer_on(_PLOVER); | |
337 | if (!eeconfig_is_enabled()) { | |
338 | eeconfig_init(); | |
339 | } | |
340 | keymap_config.raw = eeconfig_read_keymap(); | |
341 | keymap_config.nkro = 1; | |
342 | eeconfig_update_keymap(keymap_config.raw); | |
343 | } | |
344 | return false; | |
345 | break; | |
346 | case EXT_PLV: | |
347 | if (record->event.pressed) { | |
348 | #ifdef AUDIO_ENABLE | |
fe60cbd9 | 349 | PLAY_SONG(tone_plover_gb); |
f78a9943 JK |
350 | #endif |
351 | layer_off(_PLOVER); | |
352 | } | |
353 | return false; | |
354 | break; | |
355 | } | |
356 | return true; | |
357 | } | |
358 | ||
fdd89e7f JK |
359 | /* |
360 | * Macro definition | |
361 | */ | |
362 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |
363 | { | |
7db1d790 JK |
364 | if (!eeconfig_is_enabled()) { |
365 | eeconfig_init(); | |
366 | } | |
367 | ||
368 | bool use_cmd = true; // Use, for example, Cmd-Tab, Cmd-C, Cmd-V, etc. | |
369 | // Compare to MAGIC_SWAP_ALT_GUI and MAGIC_UNSWAP_ALT_GUI configs, set in: | |
370 | // quantum/quantum.c | |
371 | if(keymap_config.swap_lalt_lgui == 1 && keymap_config.swap_ralt_rgui == 1) { | |
372 | use_cmd = false; // ... or, Alt-Tab, Ctrl-C, Ctrl-V, etc. | |
373 | } | |
374 | ||
fdd89e7f JK |
375 | switch (id) { |
376 | case KC_ALT_TAB: | |
7db1d790 JK |
377 | if(use_cmd) { return (record->event.pressed ? MACRO( D(LALT), D(TAB), END ) : MACRO( U(TAB), END )); } |
378 | else { return (record->event.pressed ? MACRO( D(LGUI), D(TAB), END ) : MACRO( U(TAB), END )); } | |
96ed96f9 JK |
379 | case KC_CMD_TAB: |
380 | if(use_cmd) { return (record->event.pressed ? MACRO( D(LGUI), D(TAB), END ) : MACRO( U(TAB), END )); } | |
381 | else { return (record->event.pressed ? MACRO( D(LALT), D(TAB), END ) : MACRO( U(TAB), END )); } | |
7db1d790 | 382 | |
fdd89e7f JK |
383 | case KC_CTL_TAB: |
384 | return (record->event.pressed ? MACRO( D(LCTRL), D(TAB), END ) : MACRO( U(TAB), END )); | |
9a4e72fa JK |
385 | case KC_CMD_SLSH: |
386 | return (record->event.pressed ? MACRO( D(LGUI), D(SLSH),END ) : MACRO( U(SLSH),END )); | |
7db1d790 JK |
387 | |
388 | case KC_AG_FIND: | |
389 | return use_cmd ? MACRODOWN( D(LGUI), T(F), END ) : MACRODOWN( D(LCTRL), T(F), END ); | |
390 | case KC_AG_AGAIN: | |
391 | return use_cmd ? MACRODOWN( D(LGUI), T(G), END ) : MACRODOWN( D(LCTRL), T(G), END ); | |
392 | case KC_AG_UNDO: | |
393 | return use_cmd ? MACRODOWN( D(LGUI), T(Z), END ) : MACRODOWN( D(LCTRL), T(Z), END ); | |
394 | case KC_AG_CUT: | |
395 | return use_cmd ? MACRODOWN( D(LGUI), T(X), END ) : MACRODOWN( D(LCTRL), T(X), END ); | |
396 | case KC_AG_COPY: | |
397 | return use_cmd ? MACRODOWN( D(LGUI), T(C), END ) : MACRODOWN( D(LCTRL), T(C), END ); | |
398 | case KC_AG_PASTE: | |
399 | return use_cmd ? MACRODOWN( D(LGUI), T(V), END ) : MACRODOWN( D(LCTRL), T(V), END ); | |
bda4d15f JK |
400 | |
401 | case KC_AG_DESK_L: | |
402 | return use_cmd ? MACRODOWN( D(LGUI), D(LCTRL), T(SCLN), END ) : MACRODOWN( D(LALT), D(LCTRL), T(SCLN), END ); | |
403 | case KC_AG_DESK_R: | |
404 | return use_cmd ? MACRODOWN( D(LGUI), D(LCTRL), T(QUOT), END ) : MACRODOWN( D(LALT), D(LCTRL), T(QUOT), END ); | |
68e28701 JK |
405 | |
406 | case KC_AG_TAB_C: | |
407 | return use_cmd ? MACRODOWN( D(LGUI), T(W), END ) : MACRODOWN( D(LCTRL), T(W), END ); | |
408 | case KC_AG_TAB_N: | |
409 | return use_cmd ? MACRODOWN( D(LGUI), T(T), END ) : MACRODOWN( D(LCTRL), T(T), END ); | |
410 | case KC_AG_TAB_R: | |
411 | return use_cmd ? MACRODOWN( D(LGUI), D(LSHIFT), T(T), END ) : MACRODOWN( D(LCTRL), D(LSHIFT), T(T), END ); | |
fdd89e7f JK |
412 | } |
413 | ||
414 | return MACRO_NONE; | |
415 | } | |
416 | ||
f78a9943 JK |
417 | void matrix_init_user(void) { |
418 | #ifdef AUDIO_ENABLE | |
419 | startup_user(); | |
420 | #endif | |
421 | } | |
422 | ||
423 | #ifdef AUDIO_ENABLE | |
424 | ||
425 | void startup_user() | |
426 | { | |
427 | _delay_ms(20); // gets rid of tick | |
fe60cbd9 | 428 | PLAY_SONG(tone_startup); |
f78a9943 JK |
429 | } |
430 | ||
431 | void shutdown_user() | |
432 | { | |
fe60cbd9 | 433 | PLAY_SONG(tone_goodbye); |
f78a9943 JK |
434 | _delay_ms(150); |
435 | stop_all_notes(); | |
436 | } | |
437 | ||
438 | void music_on_user(void) | |
439 | { | |
440 | music_scale_user(); | |
441 | } | |
442 | ||
443 | void music_scale_user(void) | |
444 | { | |
fe60cbd9 | 445 | PLAY_SONG(music_scale); |
f78a9943 JK |
446 | } |
447 | ||
448 | #endif |