aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/planck/keymaps/foreveranapple/config.h46
-rw-r--r--keyboards/planck/keymaps/foreveranapple/keymap.c413
-rw-r--r--keyboards/planck/keymaps/foreveranapple/readme.md3
-rw-r--r--keyboards/planck/keymaps/foreveranapple/rules.mk2
4 files changed, 464 insertions, 0 deletions
diff --git a/keyboards/planck/keymaps/foreveranapple/config.h b/keyboards/planck/keymaps/foreveranapple/config.h
new file mode 100644
index 000000000..6e6d0f3ac
--- /dev/null
+++ b/keyboards/planck/keymaps/foreveranapple/config.h
@@ -0,0 +1,46 @@
1/* Copyright 2015-2021 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
17#pragma once
18
19#ifdef AUDIO_ENABLE
20# define STARTUP_SONG SONG(PLANCK_SOUND)
21// #define STARTUP_SONG SONG(NO_SOUND)
22
23# define DEFAULT_LAYER_SONGS \
24 { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND) }
25#endif
26
27/*
28 * MIDI options
29 */
30
31/* enable basic MIDI features:
32 - MIDI notes can be sent when in Music mode is on
33*/
34
35#define MIDI_BASIC
36
37/* enable advanced MIDI features:
38 - MIDI notes can be added to the keymap
39 - Octave shift and transpose
40 - Virtual sustain, portamento, and modulation wheel
41 - etc.
42*/
43//#define MIDI_ADVANCED
44
45// Most tactile encoders have detents every 4 stages
46#define ENCODER_RESOLUTION 4
diff --git a/keyboards/planck/keymaps/foreveranapple/keymap.c b/keyboards/planck/keymaps/foreveranapple/keymap.c
new file mode 100644
index 000000000..3c5ab7cd0
--- /dev/null
+++ b/keyboards/planck/keymaps/foreveranapple/keymap.c
@@ -0,0 +1,413 @@
1/* Copyright 2015-2021 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
17#include QMK_KEYBOARD_H
18#include "muse.h"
19
20
21enum planck_layers {
22 _QWERTY,
23 _OSX,
24 _NIXQWERTY,
25 _COLEMAK,
26 _DVORAK,
27 _LOWER,
28 _RAISE,
29 _PLOVER,
30 _ADJUST
31};
32
33enum planck_keycodes {
34 QWERTY = SAFE_RANGE,
35 OSX,
36 NIXQWERTY,
37 COLEMAK,
38 DVORAK,
39 PLOVER,
40 BACKLIT,
41 EXT_PLV
42};
43
44#define LOWER MO(_LOWER)
45#define RAISE MO(_RAISE)
46
47const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
48
49/* Qwerty
50 * ,-----------------------------------------------------------------------------------.
51 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
52 * |------+------+------+------+------+------+------+------+------+------+------+------|
53 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
54 * |------+------+------+------+------+------+------+------+------+------+------+------|
55 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
56 * |------+------+------+------+------+------+------+------+------+------+------+------|
57 * | Ctrl |Brite | Alt | GUI |Raise | Space |Lower | Left | Down | Up |Right |
58 * `-----------------------------------------------------------------------------------'
59 */
60[_QWERTY] = LAYOUT_planck_grid(
61 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
62 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
63 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
64 KC_LCTL, BACKLIT, KC_LALT, KC_LGUI, RAISE, KC_SPC, KC_SPC, LOWER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
65),
66
67/* OSX - Qwerty
68 * ,-----------------------------------------------------------------------------------.
69 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
70 * |------+------+------+------+------+------+------+------+------+------+------+------|
71 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
72 * |------+------+------+------+------+------+------+------+------+------+------+------|
73 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
74 * |------+------+------+------+------+------+------+------+------+------+------+------|
75 * | CMD |Brite | Alt | CTRL |Raise | Space |Lower | Left | Down | Up |Right |
76 * `-----------------------------------------------------------------------------------'
77 */
78[_OSX] = LAYOUT_planck_grid(
79 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
80 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
81 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
82 KC_LGUI, BACKLIT, KC_LALT, KC_LCTL, RAISE, KC_SPC, KC_SPC, LOWER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
83),
84
85/* Colemak
86 * ,-----------------------------------------------------------------------------------.
87 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
88 * |------+------+------+------+------+------+------+------+------+------+------+------|
89 * | Esc | A | R | S | T | D | H | N | E | I | O | " |
90 * |------+------+------+------+------+------+------+------+------+------+------+------|
91 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
92 * |------+------+------+------+------+------+------+------+------+------+------+------|
93 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
94 * `-----------------------------------------------------------------------------------'
95 */
96[_COLEMAK] = LAYOUT_planck_grid(
97 KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
98 KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
99 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
100 BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
101),
102
103/* Dvorak
104 * ,-----------------------------------------------------------------------------------.
105 * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
106 * |------+------+------+------+------+------+------+------+------+------+------+------|
107 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
108 * |------+------+------+------+------+------+------+------+------+------+------+------|
109 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
110 * |------+------+------+------+------+------+------+------+------+------+------+------|
111 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
112 * `-----------------------------------------------------------------------------------'
113 */
114[_DVORAK] = LAYOUT_planck_grid(
115 KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
116 KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
117 KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
118 BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
119),
120
121/* NixQwerty
122 * ,-----------------------------------------------------------------------------------.
123 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
124 * |------+------+------+------+------+------+------+------+------+------+------+------|
125 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
126 * |------+------+------+------+------+------+------+------+------+------+------+------|
127 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
128 * |------+------+------+------+------+------+------+------+------+------+------+------|
129 * | Ctrl |Brite | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
130 * `-----------------------------------------------------------------------------------'
131 */
132[_NIXQWERTY] = LAYOUT_planck_grid(
133 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
134 KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
135 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
136 KC_LCTL, BACKLIT, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
137),
138
139/* Lower
140 * ,-----------------------------------------------------------------------------------.
141 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
142 * |------+------+------+------+------+------+------+------+------+------+------+------|
143 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
144 * |------+------+------+------+------+------+------+------+------+------+------+------|
145 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
146 * |------+------+------+------+------+------+------+------+------+------+------+------|
147 * | | | | | | | | Next | Vol- | Vol+ | Play |
148 * `-----------------------------------------------------------------------------------'
149 */
150[_LOWER] = LAYOUT_planck_grid(
151 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
152 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
153 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
154 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
155),
156
157/* Raise
158 * ,-----------------------------------------------------------------------------------.
159 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
160 * |------+------+------+------+------+------+------+------+------+------+------+------|
161 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
162 * |------+------+------+------+------+------+------+------+------+------+------+------|
163 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
164 * |------+------+------+------+------+------+------+------+------+------+------+------|
165 * | | | | | | | | Next | Vol- | Vol+ | Play |
166 * `-----------------------------------------------------------------------------------'
167 */
168[_RAISE] = LAYOUT_planck_grid(
169 KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
170 KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
171 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
172 _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
173),
174
175/* Plover layer (http://opensteno.org)
176 * ,-----------------------------------------------------------------------------------.
177 * | # | # | # | # | # | # | # | # | # | # | # | # |
178 * |------+------+------+------+------+------+------+------+------+------+------+------|
179 * | | S | T | P | H | * | * | F | P | L | T | D |
180 * |------+------+------+------+------+------+------+------+------+------+------+------|
181 * | | S | K | W | R | * | * | R | B | G | S | Z |
182 * |------+------+------+------+------+------+------+------+------+------+------+------|
183 * | Exit | | | A | O | | E | U | | | |
184 * `-----------------------------------------------------------------------------------'
185 */
186[_PLOVER] = LAYOUT_planck_grid(
187 KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
188 XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
189 XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
190 EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
191),
192
193/* Adjust (Lower + Raise)
194 * v------------------------RGB CONTROL--------------------v
195 * ,-----------------------------------------------------------------------------------.
196 * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
197 * |------+------+------+------+------+------+------+------+------+------+------+------|
198 * | | |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|NixQty| OSX |Plover|Colemk|
199 * |------+------+------+------+------+------+------+------+------+------+------+------|
200 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | |
201 * |------+------+------+------+------+------+------+------+------+------+------+------|
202 * | | | | | | | | | | | |
203 * `-----------------------------------------------------------------------------------'
204 */
205[_ADJUST] = LAYOUT_planck_grid(
206 _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
207 _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, NIXQWERTY, OSX, PLOVER, COLEMAK,
208 _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, DVORAK, _______, _______,
209 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
210)
211
212};
213
214#ifdef AUDIO_ENABLE
215 float plover_song[][2] = SONG(PLOVER_SOUND);
216 float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
217#endif
218
219layer_state_t layer_state_set_user(layer_state_t state) {
220 return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
221}
222
223bool process_record_user(uint16_t keycode, keyrecord_t *record) {
224 switch (keycode) {
225 case QWERTY:
226 if (record->event.pressed) {
227 print("mode just switched to qwerty and this is a huge string\n");
228 set_single_persistent_default_layer(_QWERTY);
229 }
230 return false;
231 break;
232 case OSX:
233 if (record->event.pressed) {
234 set_single_persistent_default_layer(_OSX);
235 #ifdef AUDIO_ENABLE
236 stop_all_notes();
237 PLAY_SONG(plover_song);
238 #endif
239 }
240 return false;
241 break;
242 case NIXQWERTY:
243 if (record->event.pressed) {
244 set_single_persistent_default_layer(_NIXQWERTY);
245 #ifdef AUDIO_ENABLE
246 stop_all_notes();
247 PLAY_SONG(plover_song);
248 #endif
249 }
250 return false;
251 break;
252 case COLEMAK:
253 if (record->event.pressed) {
254 set_single_persistent_default_layer(_COLEMAK);
255 }
256 return false;
257 break;
258 case DVORAK:
259 if (record->event.pressed) {
260 set_single_persistent_default_layer(_DVORAK);
261 }
262 return false;
263 break;
264 case BACKLIT:
265 if (record->event.pressed) {
266 register_code(KC_RSFT);
267 #ifdef BACKLIGHT_ENABLE
268 backlight_step();
269 #endif
270 #ifdef KEYBOARD_planck_rev5
271 writePinLow(E6);
272 #endif
273 } else {
274 unregister_code(KC_RSFT);
275 #ifdef KEYBOARD_planck_rev5
276 writePinHigh(E6);
277 #endif
278 }
279 return false;
280 break;
281 case PLOVER:
282 if (record->event.pressed) {
283 #ifdef AUDIO_ENABLE
284 stop_all_notes();
285 PLAY_SONG(plover_song);
286 #endif
287 layer_off(_RAISE);
288 layer_off(_LOWER);
289 layer_off(_ADJUST);
290 layer_on(_PLOVER);
291 if (!eeconfig_is_enabled()) {
292 eeconfig_init();
293 }
294 keymap_config.raw = eeconfig_read_keymap();
295 keymap_config.nkro = 1;
296 eeconfig_update_keymap(keymap_config.raw);
297 }
298 return false;
299 break;
300 case EXT_PLV:
301 if (record->event.pressed) {
302 #ifdef AUDIO_ENABLE
303 PLAY_SONG(plover_gb_song);
304 #endif
305 layer_off(_PLOVER);
306 }
307 return false;
308 break;
309 }
310 return true;
311}
312
313bool muse_mode = false;
314uint8_t last_muse_note = 0;
315uint16_t muse_counter = 0;
316uint8_t muse_offset = 70;
317uint16_t muse_tempo = 50;
318
319bool encoder_update_user(uint8_t index, bool clockwise) {
320 if (muse_mode) {
321 if (IS_LAYER_ON(_RAISE)) {
322 if (clockwise) {
323 muse_offset++;
324 } else {
325 muse_offset--;
326 }
327 } else {
328 if (clockwise) {
329 muse_tempo+=1;
330 } else {
331 muse_tempo-=1;
332 }
333 }
334 } else {
335 if (clockwise) {
336 #ifdef MOUSEKEY_ENABLE
337 tap_code(KC_MS_WH_DOWN);
338 #else
339 tap_code(KC_PGDN);
340 #endif
341 } else {
342 #ifdef MOUSEKEY_ENABLE
343 tap_code(KC_MS_WH_UP);
344 #else
345 tap_code(KC_PGUP);
346 #endif
347 }
348 }
349 return true;
350}
351
352bool dip_switch_update_user(uint8_t index, bool active) {
353 switch (index) {
354 case 0: {
355#ifdef AUDIO_ENABLE
356 static bool play_sound = false;
357#endif
358 if (active) {
359#ifdef AUDIO_ENABLE
360 if (play_sound) { PLAY_SONG(plover_song); }
361#endif
362 layer_on(_ADJUST);
363 } else {
364#ifdef AUDIO_ENABLE
365 if (play_sound) { PLAY_SONG(plover_gb_song); }
366#endif
367 layer_off(_ADJUST);
368 }
369#ifdef AUDIO_ENABLE
370 play_sound = true;
371#endif
372 break;
373 }
374 case 1:
375 if (active) {
376 muse_mode = true;
377 } else {
378 muse_mode = false;
379 }
380 }
381 return true;
382}
383
384void matrix_scan_user(void) {
385#ifdef AUDIO_ENABLE
386 if (muse_mode) {
387 if (muse_counter == 0) {
388 uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
389 if (muse_note != last_muse_note) {
390 stop_note(compute_freq_for_midi_note(last_muse_note));
391 play_note(compute_freq_for_midi_note(muse_note), 0xF);
392 last_muse_note = muse_note;
393 }
394 }
395 muse_counter = (muse_counter + 1) % muse_tempo;
396 } else {
397 if (muse_counter) {
398 stop_all_notes();
399 muse_counter = 0;
400 }
401 }
402#endif
403}
404
405bool music_mask_user(uint16_t keycode) {
406 switch (keycode) {
407 case RAISE:
408 case LOWER:
409 return false;
410 default:
411 return true;
412 }
413}
diff --git a/keyboards/planck/keymaps/foreveranapple/readme.md b/keyboards/planck/keymaps/foreveranapple/readme.md
new file mode 100644
index 000000000..ddaa58ea3
--- /dev/null
+++ b/keyboards/planck/keymaps/foreveranapple/readme.md
@@ -0,0 +1,3 @@
1# The Almost Default Planck Layout
2
3Simple changes right now, just some key shifts. Nothing major. \ No newline at end of file
diff --git a/keyboards/planck/keymaps/foreveranapple/rules.mk b/keyboards/planck/keymaps/foreveranapple/rules.mk
new file mode 100644
index 000000000..87df38d49
--- /dev/null
+++ b/keyboards/planck/keymaps/foreveranapple/rules.mk
@@ -0,0 +1,2 @@
1SRC += muse.c
2AUDIO_ENABLED = yes \ No newline at end of file