1 /* Copyright 2015-2017 Jack Humbert
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.
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.
13 * make planck/rev4:navi
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 #include "action_layer.h"
22 #include "song_list.h"
25 extern keymap_config_t keymap_config;
37 enum planck_keycodes {
47 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
50 * ,-----------------------------------------------------------------------------------.
51 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
52 * |------+------+------+------+------+-------------+------+------+------+------+------|
53 * | CtlE | A | S | D | F | G | H | J | K | L | ; | " |
54 * |------+------+------+------+------+------|------+------+------+------+------+------|
55 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
56 * |------+------+------+------+------+------+------+------+------+------+------+------|
57 * | FN |CtlSE | GUI | Alt | Lower| Space |Raise | Left | Down | Up |Right |
58 * `-----------------------------------------------------------------------------------'
59 * CtlSE = Control+shift+esc/
60 * CtlE = Control when held, esc when tapped
63 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
64 {LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
65 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
66 {FUNCTION, C_S_T(KC_ESC), KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
70 * ,-----------------------------------------------------------------------------------.
71 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
72 * |------+------+------+------+------+-------------+------+------+------+------+------|
73 * | CtlE | A | R | S | T | D | H | N | E | I | O | " |
74 * |------+------+------+------+------+------|------+------+------+------+------+------|
75 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
76 * |------+------+------+------+------+------+------+------+------+------+------+------|
77 * | FN |CtlSE | GUI | Alt |Lower | Space | Raise| Left | Down | Up |Right |
78 * `-----------------------------------------------------------------------------------'
81 {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
82 {LCTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
83 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
84 {FUNCTION, C_S_T(KC_ESC), KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
87 /* Plover layer (http://opensteno.org)
88 * ,-----------------------------------------------------------------------------------.
89 * | # | # | # | # | # | # | # | # | # | # | # | # |
90 * |------+------+------+------+------+-------------+------+------+------+------+------|
91 * | | S | T | P | H | * | * | F | P | L | T | D |
92 * |------+------+------+------+------+------|------+------+------+------+------+------|
93 * | | S | K | W | R | * | * | R | B | G | S | Z |
94 * |------+------+------+------+------+------+------+------+------+------+------+------|
95 * | Exit | | | A | O | | E | U | | | |
96 * `-----------------------------------------------------------------------------------'
100 {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
101 {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
102 {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
103 {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX}
108 * ,-----------------------------------------------------------------------------------.
109 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
110 * |------+------+------+------+------+-------------+------+------+------+------+------|
111 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
112 * |------+------+------+------+------+------|------+------+------+------+------+------|
113 * | Shift| F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ | ISO | End | Home | |
114 * |------+------+------+------+------+------+------+------+------+------+------+------|
115 * | | | | | | | | |Pg DN | Pg UP| |
116 * `-----------------------------------------------------------------------------------'
119 {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL},
120 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
121 {KC_LSHIFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_END, KC_HOME, _______},
122 {_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN , KC_PGUP, _______}
126 * ,-----------------------------------------------------------------------------------.
127 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
128 * |------+------+------+------+------+-------------+------+------+------+------+------|
129 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
130 * |------+------+------+------+------+------|------+------+------+------+------+------|
131 * |Shift | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | End | Home | |
132 * |------+------+------+------+------+------+------+------+------+------+------+------|
133 * | | | | | | | | |Pg DN |Pg UP | |
134 * `-----------------------------------------------------------------------------------'
137 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL},
138 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
139 {KC_LSHIFT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_END, KC_HOME, _______},
140 {_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN , KC_PGUP, _______}
143 /* Adjust (Lower + Raise)
144 * ,-----------------------------------------------------------------------------------.
145 * | | Reset| | | | | | | | | | Del |
146 * |------+------+------+------+------+-------------+------+------+------+------+------|
147 * | | |MU_MOD|Aud on|Audoff| | |Qwerty|Colemk|Plover| | |
148 * |------+------+------+------+------+------|------+------+------+------+------+------|
149 * |Caps |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | Caps |
150 * |------+------+------+------+------+------+------+------+------+------+------+------|
151 * | | | | | | | | | | | |
152 * `-----------------------------------------------------------------------------------'
155 {_______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL },
156 {_______, _______, MU_MOD, AU_ON, AU_OFF, _______, _______, QWERTY, COLEMAK, PLOVER,_______, _______},
157 {KC_CAPS, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, KC_CAPS},
158 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______}
162 * ,-----------------------------------------------------------------------------------.
163 * | Esc | | Prev | Play | Next | | | | 7 | 8 | 9 | Bksp |
164 * |------+------+------+------+------+-------------+------+------+------+------+------|
165 * | | | Vol- | Mute | Vol+ | | | + | 4 | 5 | 6 | - |
166 * |------+------+------+------+------+------|------+------+------+------+------+------|
167 * | CALC | | | | | | | $ | 1 | 2 | 3 | Enter|
168 * |------+------+------+------+------+------+------+------+------+------+------+------|
169 * | | |Prntsc| | | | * | 0 | . |Numlck| / |
170 * `-----------------------------------------------------------------------------------'
174 {KC_ESC , _______, KC_MPRV, KC_MPLY, KC_MNXT, _______,_______,_______, KC_KP_7, KC_KP_8, KC_KP_9,KC_BSPC},
175 {_______, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, KC_PPLS, KC_KP_4, KC_KP_5, KC_KP_6, KC_PMNS},
176 {KC_CALC, _______, _______, _______, _______, _______, _______, KC_DLR, KC_KP_1, KC_KP_2, KC_KP_3, KC_ENT},
177 {_______, _______, KC_PSCR, _______, _______ , _______, _______, KC_PAST, KC_KP_0, KC_KP_DOT,KC_NUMLOCK, KC_PSLS}
183 float tone_startup[][2] = SONG(ZELDA_PUZZLE);
184 float tone_qwerty[][2] = SONG(ZELDA_TREASURE);
185 float plover_song[][2] = SONG(PLOVER_SOUND);
186 float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
187 float tone_colemak[][2] = SONG(VIOLIN_SOUND);
188 float tone_music_on[][2] = SONG(ONE_UP_SOUND);
189 float tone_music_off[][2] = SONG(ROCK_A_BYE_BABY);
190 #endif /* AUDIO_ENABLE */
192 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
195 if (record->event.pressed) {
196 print("mode just switched to qwerty and this is a huge string\n");
197 set_single_persistent_default_layer(_QWERTY);
199 PLAY_SONG(tone_qwerty);
205 if (record->event.pressed) {
206 set_single_persistent_default_layer(_COLEMAK);
208 PLAY_SONG(tone_colemak);
214 if (record->event.pressed) {
216 update_tri_layer(_LOWER, _RAISE, _ADJUST);
219 update_tri_layer(_LOWER, _RAISE, _ADJUST);
224 if (record->event.pressed) {
226 update_tri_layer(_LOWER, _RAISE, _ADJUST);
229 update_tri_layer(_LOWER, _RAISE, _ADJUST);
234 if (record->event.pressed) {
237 layer_off(_FUNCTION);
242 if (record->event.pressed) {
245 PLAY_SONG(plover_song);
251 if (!eeconfig_is_enabled()) {
254 keymap_config.raw = eeconfig_read_keymap();
255 keymap_config.nkro = 1;
256 eeconfig_update_keymap(keymap_config.raw);
261 if (record->event.pressed) {
263 PLAY_SONG(plover_gb_song);
273 void matrix_init_user(void) {
283 _delay_ms(20); // gets rid of tick
284 PLAY_SONG(tone_startup);
287 void music_on_user(void)
289 PLAY_SONG(tone_music_on);
292 void music_off_user(void)
294 PLAY_SONG(tone_music_off);