Commit | Line | Data |
---|---|---|
a09a042b JC |
1 | /* Copyright 2015-2017 Jack Humbert |
2 | * | |
3 | * This program is free software: you can redistribute it and/or modify | |
4 | * it under the terms of the GNU General Public License as published by | |
5 | * the Free Software Foundation, either version 2 of the License, or | |
6 | * (at your option) any later version. | |
7 | * | |
8 | * This program is distributed in the hope that it will be useful, | |
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
11 | * GNU General Public License for more details. | |
12 | * | |
13 | * You should have received a copy of the GNU General Public License | |
14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
15 | */ | |
16 | ||
26eef35f | 17 | #include QMK_KEYBOARD_H |
a09a042b JC |
18 | |
19 | extern keymap_config_t keymap_config; | |
20 | bool isGame = false; | |
21 | bool isMusic = false; | |
22 | ||
23 | ||
24 | enum planck_layers { | |
25 | _COLEMAK, | |
26 | _GAME, | |
27 | _MUSIC, | |
28 | _LOWER, | |
29 | _RAISE, | |
30 | _ADJUST, | |
31 | }; | |
32 | ||
33 | enum planck_keycodes { | |
34 | COLEMAK = SAFE_RANGE, | |
35 | GCTOGG, | |
36 | MCTOGG, | |
37 | LOWER, | |
38 | RAISE, | |
39 | LENNY, | |
40 | COMMENTHEAD, | |
41 | RICKANDMORT, | |
42 | MARIO, | |
43 | MARIOE, | |
44 | OVERWATCH, | |
45 | DOOM, | |
46 | DISNEY, | |
47 | NUMBERONE, | |
48 | CABBAGE, | |
49 | OLDSPICE, | |
50 | }; | |
51 | ||
52 | enum { | |
53 | TD_SPC_ENT = 0, | |
54 | TD_ESC_CAPS | |
55 | }; | |
56 | ||
57 | qk_tap_dance_action_t tap_dance_actions[] = { | |
58 | [TD_SPC_ENT] = ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT), | |
59 | [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS) | |
60 | }; | |
61 | ||
62 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |
63 | ||
64 | /* Colemak | |
65 | * ,-----------------------------------------------------------------------------------. | |
66 | * | Tab | Q | W | F | P | G | J | L | U | Y | ; | = | | |
67 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
68 | * | Esc | A | R | S | T | D | H | N | E | I | O | " | | |
69 | * |------+------+------+------+------+------|------+------+------+------+------+------| | |
70 | * | Shift| Z | X | C | V | B | K | M | , | . | / | - | | |
71 | * |------+------+------+------+------+------+------+------+------+------+------+------| | |
72 | * | Ctrl | GUI | Alt |lenny |Lower | shift|space |Raise | macro|macro2|macro3|QWERTY| | |
73 | * `-----------------------------------------------------------------------------------' | |
74 | */ | |
26eef35f JY |
75 | [_COLEMAK] = LAYOUT_planck_grid( |
76 | KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_EQL, | |
77 | KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, | |
78 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, | |
79 | KC_LCTL, KC_LGUI, KC_LALT, LENNY, LOWER, RSFT_T(KC_BSPC), TD(TD_SPC_ENT), RAISE, COMMENTHEAD, RICKANDMORT, KC_LEFT, KC_RGHT | |
80 | ), | |
a09a042b JC |
81 | |
82 | /* Lower | |
83 | * ,-----------------------------------------------------------------------------------. | |
84 | * | | | | [ | ] | | ( | ) | { | } | | + | | |
85 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
86 | * | Del | F1 | F2 | F3 | F4 | F5 | F6 | left | down | up | right| | | | |
87 | * |------+------+------+------+------+------|------+------+------+------+------+------| | |
88 | * | | F7 | F8 | F9 | F10 | F11 | F12 | | | | | _ | | |
89 | * |------+------+------+------+------+------+------+------+------+------+------+------| | |
90 | * | | | | | | | | Next | Vol- | Vol+ | Play | | |
91 | * `-----------------------------------------------------------------------------------' | |
92 | */ | |
26eef35f JY |
93 | [_LOWER] = LAYOUT_planck_grid( |
94 | _______, _______, _______, KC_LBRC, KC_RBRC, _______, KC_LPRN, KC_RPRN, KC_LCBR, KC_RCBR, _______, S(KC_EQL), | |
95 | KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_PIPE, | |
96 | _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, KC_UNDS, | |
97 | _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | |
98 | ), | |
a09a042b JC |
99 | |
100 | /* Raise | |
101 | * ,-----------------------------------------------------------------------------------. | |
102 | * | ` | ! | @ | # | $ | % | ^ | & | * | ( | ) | DEL | | |
103 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
104 | * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | \ | | |
105 | * |------+------+------+------+------+------|------+------+------+------+------+------| | |
106 | * | | | | | | | | | | | | | | |
107 | * |------+------+------+------+------+------+------+------+------+------+------+------| | |
108 | * | | | | | | | | | bl- | bl+ | GCTG | | |
109 | * `-----------------------------------------------------------------------------------' | |
110 | */ | |
26eef35f JY |
111 | [_RAISE] = LAYOUT_planck_grid( |
112 | KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, | |
113 | KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, | |
114 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |
115 | _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, MCTOGG, GCTOGG | |
116 | ), | |
a09a042b JC |
117 | |
118 | /* Adjust (Lower + Raise) | |
119 | * ,-----------------------------------------------------------------------------------. | |
120 | * | | Reset| | | | | | | | | | Del | | |
121 | * |------+------+------+------+------+-------------+------+------+------+------+------| | |
122 | * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| | | |
123 | * |------+------+------+------+------+------|------+------+------+------+------+------| | |
124 | * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | | | |
125 | * |------+------+------+------+------+------+------+------+------+------+------+------| | |
126 | * | | | | | | | | | | | | | |
127 | * `-----------------------------------------------------------------------------------' | |
128 | */ | |
26eef35f JY |
129 | [_ADJUST] = LAYOUT_planck_grid( |
130 | _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , | |
131 | _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, COLEMAK, _______, _______, _______, | |
132 | _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, _______, _______, TERM_ON, TERM_OFF, _______, _______, _______, | |
133 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |
134 | ), | |
135 | ||
136 | [_GAME] = LAYOUT_planck_grid( | |
137 | KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_EQL, | |
138 | KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, | |
139 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_MINS, | |
140 | KC_LCTL, RAISE, KC_LALT, LOWER, KC_SPC, RSFT_T(KC_BSPC), TD(TD_SPC_ENT), RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT | |
141 | ), | |
142 | ||
143 | [_MUSIC] = LAYOUT_planck_grid( | |
144 | MARIO, MARIOE, OVERWATCH, DOOM, DISNEY, NUMBERONE, CABBAGE, OLDSPICE, _______, _______, _______, _______, | |
145 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |
146 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | |
147 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | |
148 | ) | |
a09a042b JC |
149 | |
150 | }; | |
151 | ||
152 | #ifdef AUDIO_ENABLE | |
153 | float guitar[][2] = SONG(GUITAR_SOUND); | |
154 | float mario[][2] = SONG(MARIO_THEME); | |
155 | float marioe[][2] = SONG(MARIO_GAMEOVER); | |
156 | float overwatch[][2] = SONG(OVERWATCH_THEME); | |
157 | float doom[][2] = SONG(E1M1_DOOM); | |
158 | float disney[][2] = SONG(DISNEY_SONG); | |
159 | float numberone[][2] = SONG(NUMBER_ONE); | |
160 | float cabbage[][2] = SONG(CABBAGE_SONG); | |
161 | float oldspice[][2] = SONG(OLD_SPICE); | |
162 | #endif | |
163 | ||
164 | void setLayer(int layer) { | |
165 | if (layer == _COLEMAK) { | |
166 | #ifdef AUDIO_ENABLE | |
167 | stop_all_notes(); | |
168 | PLAY_SONG(marioe); | |
169 | #endif | |
170 | set_single_persistent_default_layer(_COLEMAK); | |
171 | #ifdef BACKLIGHT_ENABLE | |
172 | backlight_set(0); | |
173 | #endif | |
174 | } else if (layer == _GAME) { | |
175 | #ifdef AUDIO_ENABLE | |
176 | stop_all_notes(); | |
177 | PLAY_SONG(mario); | |
178 | #endif | |
179 | set_single_persistent_default_layer(_GAME); | |
180 | #ifdef BACKLIGHT_ENABLE | |
181 | backlight_set(15); | |
182 | #endif | |
183 | } else if (layer == _MUSIC) { | |
184 | #ifdef AUDIO_ENABLE | |
185 | stop_all_notes(); | |
186 | PLAY_SONG(guitar); | |
187 | #endif | |
188 | set_single_persistent_default_layer(_MUSIC); | |
189 | #ifdef BACKLIGHT_ENABLE | |
190 | backlight_set(1); | |
191 | #endif | |
192 | } | |
193 | } | |
194 | ||
195 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |
196 | switch (keycode) { | |
197 | case COLEMAK: | |
198 | if (record->event.pressed) { | |
199 | set_single_persistent_default_layer(_COLEMAK); | |
200 | #ifdef BACKLIGHT_ENABLE | |
201 | backlight_set(0); | |
202 | #endif | |
203 | } | |
204 | return false; | |
205 | break; | |
206 | case GCTOGG: | |
207 | if (record->event.pressed) { | |
208 | if (isGame) { | |
209 | if (isMusic) | |
210 | setLayer(_MUSIC); | |
211 | else | |
212 | setLayer(_COLEMAK); | |
213 | isGame = false; | |
214 | } else { | |
215 | setLayer(_GAME); | |
216 | isGame = true; | |
217 | } | |
218 | } | |
219 | return false; | |
220 | break; | |
221 | case MCTOGG: | |
222 | if (record->event.pressed) { | |
223 | if (isMusic) { | |
224 | if (isGame) | |
225 | setLayer(_GAME); | |
226 | else | |
227 | setLayer(_COLEMAK); | |
228 | isMusic = false; | |
229 | } else { | |
230 | setLayer(_MUSIC); | |
231 | isMusic = true; | |
232 | } | |
233 | } | |
234 | return false; | |
235 | break; | |
236 | case LOWER: | |
237 | if (record->event.pressed) { | |
238 | layer_on(_LOWER); | |
239 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
240 | } else { | |
241 | layer_off(_LOWER); | |
242 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
243 | } | |
244 | return false; | |
245 | break; | |
246 | case RAISE: | |
247 | if (record->event.pressed) { | |
248 | layer_on(_RAISE); | |
249 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
250 | } else { | |
251 | layer_off(_RAISE); | |
252 | update_tri_layer(_LOWER, _RAISE, _ADJUST); | |
253 | } | |
254 | return false; | |
255 | break; | |
256 | case LENNY: | |
257 | if (record->event.pressed) { | |
258 | SEND_STRING("()"); | |
259 | } | |
260 | return false; break; | |
261 | case COMMENTHEAD: | |
262 | if (record->event.pressed) { | |
263 | SEND_STRING("// ---------------------------------------------------------------"); | |
264 | } | |
265 | return false; break; | |
266 | case RICKANDMORT: | |
267 | if (record->event.pressed) { | |
268 | SEND_STRING("// ***************************************************************"); | |
269 | } | |
270 | return false; break; | |
271 | case MARIO: | |
272 | if(record->event.pressed) { | |
273 | #ifdef AUDIO_ENABLE | |
274 | PLAY_SONG(mario); | |
275 | #endif | |
276 | } | |
277 | return false; break; | |
278 | case MARIOE: | |
279 | if(record->event.pressed) { | |
280 | #ifdef AUDIO_ENABLE | |
281 | PLAY_SONG(marioe); | |
282 | #endif | |
283 | } | |
284 | return false; break; | |
285 | case OVERWATCH: | |
286 | if(record->event.pressed) { | |
287 | #ifdef AUDIO_ENABLE | |
288 | PLAY_SONG(overwatch); | |
289 | #endif | |
290 | } | |
291 | return false; break; | |
292 | case DOOM: | |
293 | if(record->event.pressed) { | |
294 | #ifdef AUDIO_ENABLE | |
295 | PLAY_SONG(doom); | |
296 | #endif | |
297 | } | |
298 | return false; break; | |
299 | case DISNEY: | |
300 | if(record->event.pressed) { | |
301 | #ifdef AUDIO_ENABLE | |
302 | PLAY_SONG(disney); | |
303 | #endif | |
304 | } | |
305 | return false; break; | |
306 | case NUMBERONE: | |
307 | if(record->event.pressed) { | |
308 | #ifdef AUDIO_ENABLE | |
309 | PLAY_SONG(numberone); | |
310 | #endif | |
311 | } | |
312 | return false; break; | |
313 | case CABBAGE: | |
314 | if(record->event.pressed) { | |
315 | #ifdef AUDIO_ENABLE | |
316 | PLAY_SONG(cabbage); | |
317 | #endif | |
318 | } | |
319 | return false; break; | |
320 | case OLDSPICE: | |
321 | if(record->event.pressed) { | |
322 | #ifdef AUDIO_ENABLE | |
323 | PLAY_SONG(oldspice); | |
324 | #endif | |
325 | } | |
326 | return false; break; | |
327 | } | |
328 | return true; | |
329 | } | |
330 | ||
331 | void matrix_init_user(void) { | |
332 | set_single_persistent_default_layer(_COLEMAK); | |
333 | isGame = false; | |
334 | #ifdef BACKLIGHT_ENABLE | |
335 | backlight_level(0); | |
336 | #endif | |
337 | } |