aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2017-03-28 09:17:16 -0400
committerGitHub <noreply@github.com>2017-03-28 09:17:16 -0400
commitfa091891956cfbfd4a9dc26296fe8e96aa27f55b (patch)
tree79d50e5a058989653239b933a111240d5b39a66f
parent6e688ad5c20251d1109f72914fdcde912284bea1 (diff)
parent0ec07ddc1c0e0bb3b653d182cdd90eb43afb3dce (diff)
downloadqmk_firmware-fa091891956cfbfd4a9dc26296fe8e96aa27f55b.tar.gz
qmk_firmware-fa091891956cfbfd4a9dc26296fe8e96aa27f55b.zip
Merge pull request #1162 from Khord/master
My customized keymap + some tunes for the song list
-rw-r--r--keyboards/planck/keymaps/khord/Makefile4
-rw-r--r--keyboards/planck/keymaps/khord/config.h93
-rw-r--r--keyboards/planck/keymaps/khord/keymap.c336
-rw-r--r--quantum/audio/song_list.h27
4 files changed, 460 insertions, 0 deletions
diff --git a/keyboards/planck/keymaps/khord/Makefile b/keyboards/planck/keymaps/khord/Makefile
new file mode 100644
index 000000000..f0ed9e8dc
--- /dev/null
+++ b/keyboards/planck/keymaps/khord/Makefile
@@ -0,0 +1,4 @@
1TAP_DANCE_ENABLE = yes
2ifndef QUANTUM_DIR
3 include ../../../../Makefile
4endif
diff --git a/keyboards/planck/keymaps/khord/config.h b/keyboards/planck/keymaps/khord/config.h
new file mode 100644
index 000000000..008f3a5c2
--- /dev/null
+++ b/keyboards/planck/keymaps/khord/config.h
@@ -0,0 +1,93 @@
1/*
2Copyright 2012 Jun Wako <wakojun@gmail.com>
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x6060
26#define MANUFACTURER Ortholinear Keyboards
27#define PRODUCT The Planck Keyboard
28#define DESCRIPTION A compact ortholinear keyboard
29
30/* key matrix size */
31#define MATRIX_ROWS 4
32#define MATRIX_COLS 12
33
34/* Planck PCB default pin-out */
35#define MATRIX_ROW_PINS { D0, D5, B5, B6 }
36#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
37#define UNUSED_PINS
38
39#define AUDIO_VOICES
40
41#define BACKLIGHT_PIN B7
42
43/* COL2ROW or ROW2COL */
44#define DIODE_DIRECTION COL2ROW
45
46/* define if matrix has ghost */
47//#define MATRIX_HAS_GHOST
48
49/* number of backlight levels */
50#define BACKLIGHT_LEVELS 3
51
52/* Set 0 if debouncing isn't needed */
53#define DEBOUNCING_DELAY 5
54
55/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
56#define LOCKING_SUPPORT_ENABLE
57/* Locking resynchronize hack */
58#define LOCKING_RESYNC_ENABLE
59
60/* key combination for command */
61#define IS_COMMAND() ( \
62 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
63)
64
65/* Tap Dance */
66#define TAPPING_TERM 150
67
68/*
69 * Feature disable options
70 * These options are also useful to firmware size reduction.
71 */
72
73/* disable debug print */
74//#define NO_DEBUG
75
76/* disable print */
77//#define NO_PRINT
78
79/* disable action features */
80//#define NO_ACTION_LAYER
81//#define NO_ACTION_TAPPING
82//#define NO_ACTION_ONESHOT
83//#define NO_ACTION_MACRO
84//#define NO_ACTION_FUNCTION
85
86#ifdef SUBPROJECT_rev3
87 #include "rev3/config.h"
88#endif
89#ifdef SUBPROJECT_rev4
90 #include "rev4/config.h"
91#endif
92
93#endif
diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c
new file mode 100644
index 000000000..8001a0986
--- /dev/null
+++ b/keyboards/planck/keymaps/khord/keymap.c
@@ -0,0 +1,336 @@
1// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
2// this is the style you want to emulate.
3
4#include "planck.h"
5#include "action_layer.h"
6#ifdef AUDIO_ENABLE
7 #include "audio.h"
8#endif
9#include "eeconfig.h"
10
11extern keymap_config_t keymap_config;
12
13// Each layer gets a name for readability, which is then used in the keymap matrix below.
14// The underscores don't mean anything - you can have a layer called STUFF or any other name.
15// Layer names don't all need to be of the same length, obviously, and you can also skip them
16// entirely and just use numbers.
17#define _QWERTY 0
18#define _COLEMAK 1
19#define _DVORAK 2
20#define _LOWER 3
21#define _RAISE 4
22#define _PLOVER 5
23#define _ADJUST 16
24
25enum planck_keycodes {
26 QWERTY = SAFE_RANGE,
27 COLEMAK,
28 DVORAK,
29 PLOVER,
30 LOWER,
31 RAISE,
32 BACKLIT,
33 EXT_PLV
34};
35
36// Fillers to make layering more clear
37#define _______ KC_TRNS
38#define XXXXXXX KC_NO
39
40// Tap Dance Declarations
41enum {
42 ESC_CAP = 0,
43 LFT_HOM,
44 DWN_PDN,
45 UPP_PUP,
46 RGT_END
47};
48
49// Dylan's additions
50#define C_A_DEL LALT(LCTL(KC_DEL))
51#define C_A_INS LALT(LCTL(KC_INS))
52
53const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
54
55/* Qwerty
56 * ,-----------------------------------------------------------------------------------.
57 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
58 * |------+------+------+------+------+-------------+------+------+------+------+------|
59 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
60 * |------+------+------+------+------+------|------+------+------+------+------+------|
61 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
62 * |------+------+------+------+------+------+------+------+------+------+------+------|
63 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
64 * `-----------------------------------------------------------------------------------'
65 */
66[_QWERTY] = {
67 {KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC },
68 {TD(ESC_CAP), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT },
69 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFT_T(KC_ENT)},
70 {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT }
71},
72
73/* Colemak
74 * ,-----------------------------------------------------------------------------------.
75 * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
76 * |------+------+------+------+------+-------------+------+------+------+------+------|
77 * | Esc | A | R | S | T | D | H | N | E | I | O | " |
78 * |------+------+------+------+------+------|------+------+------+------+------+------|
79 * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
80 * |------+------+------+------+------+------+------+------+------+------+------+------|
81 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
82 * `-----------------------------------------------------------------------------------'
83 */
84[_COLEMAK] = {
85 {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
86 {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
87 {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT },
88 {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
89},
90
91/* Dvorak
92 * ,-----------------------------------------------------------------------------------.
93 * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
94 * |------+------+------+------+------+-------------+------+------+------+------+------|
95 * | Esc | A | O | E | U | I | D | H | T | N | S | / |
96 * |------+------+------+------+------+------|------+------+------+------+------+------|
97 * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
98 * |------+------+------+------+------+------+------+------+------+------+------+------|
99 * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
100 * `-----------------------------------------------------------------------------------'
101 */
102[_DVORAK] = {
103 {KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC},
104 {KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH},
105 {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT },
106 {BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
107},
108
109/* Lower
110 * ,-----------------------------------------------------------------------------------.
111 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
112 * |------+------+------+------+------+-------------+------+------+------+------+------|
113 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
114 * |------+------+------+------+------+------|------+------+------+------+------+------|
115 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | END | HOME |Enter |
116 * |------+------+------+------+------+------+------+------+------+------+------+------|
117 * | | | | | | | | Next | Vol- | Vol+ | Play |
118 * `-----------------------------------------------------------------------------------'
119 */
120[_LOWER] = {
121 {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
122 {KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
123 {_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_END, KC_HOME, _______},
124 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
125},
126
127/* Raise
128 * ,-----------------------------------------------------------------------------------.
129 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
130 * |------+------+------+------+------+-------------+------+------+------+------+------|
131 * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
132 * |------+------+------+------+------+------|------+------+------+------+------+------|
133 * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |PG DN |PG UP |Enter |
134 * |------+------+------+------+------+------+------+------+------+------+------+------|
135 * | | | | | | | | Next | Vol- | Vol+ | Play |
136 * `-----------------------------------------------------------------------------------'
137 */
138[_RAISE] = {
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_NUHS, KC_NUBS, KC_PGDN, KC_PGUP, _______},
142 {_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
143},
144
145/* Plover layer (http://opensteno.org)
146 * ,-----------------------------------------------------------------------------------.
147 * | # | # | # | # | # | # | # | # | # | # | # | # |
148 * |------+------+------+------+------+-------------+------+------+------+------+------|
149 * | | S | T | P | H | * | * | F | P | L | T | D |
150 * |------+------+------+------+------+------|------+------+------+------+------+------|
151 * |TogOut| S | K | W | R | * | * | R | B | G | S | Z |
152 * |------+------+------+------+------+------+------+------+------+------+------+------|
153 * | Exit | | | A | O | | E | U | | | |
154 * `-----------------------------------------------------------------------------------'
155 */
156
157[_PLOVER] = {
158 {KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
159 {XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC},
160 {XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT},
161 {EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX}
162},
163
164/* Adjust (Lower + Raise)
165 * ,-----------------------------------------------------------------------------------.
166 * | | Reset| | | | | | | | | | Del |
167 * |------+------+------+------+------+-------------+------+------+------+------+------|
168 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Plover| |
169 * |------+------+------+------+------+------|------+------+------+------+------+------|
170 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
171 * |------+------+------+------+------+------+------+------+------+------+------+------|
172 * | | | | | | | | | | | |
173 * `-----------------------------------------------------------------------------------'
174 */
175[_ADJUST] = {
176 {_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL},
177 {_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______},
178 {_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______},
179 {_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_A_INS, C_A_DEL}
180}
181
182
183};
184
185
186qk_tap_dance_action_t tap_dance_actions[] = {
187 [ESC_CAP] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
188 [LFT_HOM] = ACTION_TAP_DANCE_DOUBLE(KC_LEFT, KC_HOME),
189 [DWN_PDN] = ACTION_TAP_DANCE_DOUBLE(KC_DOWN, KC_PGDN),
190 [UPP_PUP] = ACTION_TAP_DANCE_DOUBLE(KC_UP, KC_PGUP),
191 [RGT_END] = ACTION_TAP_DANCE_DOUBLE(KC_RGHT, KC_END)
192};
193
194#ifdef AUDIO_ENABLE
195
196float tone_startup[][2] = SONG(SONIC_RING); //plug in
197float tone_qwerty[][2] = SONG(QWERTY_SOUND);
198float tone_dvorak[][2] = SONG(DVORAK_SOUND);
199float tone_colemak[][2] = SONG(COLEMAK_SOUND);
200float tone_plover[][2] = SONG(PLOVER_SOUND);
201float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
202float music_scale[][2] = SONG(ZELDA_PUZZLE); //music mode
203
204float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
205#endif
206
207
208void persistant_default_layer_set(uint16_t default_layer) {
209 eeconfig_update_default_layer(default_layer);
210 default_layer_set(default_layer);
211}
212
213bool process_record_user(uint16_t keycode, keyrecord_t *record) {
214 switch (keycode) {
215 case QWERTY:
216 if (record->event.pressed) {
217 #ifdef AUDIO_ENABLE
218 PLAY_NOTE_ARRAY(tone_qwerty, false, 0);
219 #endif
220 persistant_default_layer_set(1UL<<_QWERTY);
221 }
222 return false;
223 break;
224 case COLEMAK:
225 if (record->event.pressed) {
226 #ifdef AUDIO_ENABLE
227 PLAY_NOTE_ARRAY(tone_colemak, false, 0);
228 #endif
229 persistant_default_layer_set(1UL<<_COLEMAK);
230 }
231 return false;
232 break;
233 case DVORAK:
234 if (record->event.pressed) {
235 #ifdef AUDIO_ENABLE
236 PLAY_NOTE_ARRAY(tone_dvorak, false, 0);
237 #endif
238 persistant_default_layer_set(1UL<<_DVORAK);
239 }
240 return false;
241 break;
242 case LOWER:
243 if (record->event.pressed) {
244 layer_on(_LOWER);
245 update_tri_layer(_LOWER, _RAISE, _ADJUST);
246 } else {
247 layer_off(_LOWER);
248 update_tri_layer(_LOWER, _RAISE, _ADJUST);
249 }
250 return false;
251 break;
252 case RAISE:
253 if (record->event.pressed) {
254 layer_on(_RAISE);
255 update_tri_layer(_LOWER, _RAISE, _ADJUST);
256 } else {
257 layer_off(_RAISE);
258 update_tri_layer(_LOWER, _RAISE, _ADJUST);
259 }
260 return false;
261 break;
262 case BACKLIT:
263 if (record->event.pressed) {
264 register_code(KC_RSFT);
265 #ifdef BACKLIGHT_ENABLE
266 backlight_step();
267 #endif
268 } else {
269 unregister_code(KC_RSFT);
270 }
271 return false;
272 break;
273 case PLOVER:
274 if (record->event.pressed) {
275 #ifdef AUDIO_ENABLE
276 stop_all_notes();
277 PLAY_NOTE_ARRAY(tone_plover, false, 0);
278 #endif
279 layer_off(_RAISE);
280 layer_off(_LOWER);
281 layer_off(_ADJUST);
282 layer_on(_PLOVER);
283 if (!eeconfig_is_enabled()) {
284 eeconfig_init();
285 }
286 keymap_config.raw = eeconfig_read_keymap();
287 keymap_config.nkro = 1;
288 eeconfig_update_keymap(keymap_config.raw);
289 }
290 return false;
291 break;
292 case EXT_PLV:
293 if (record->event.pressed) {
294 #ifdef AUDIO_ENABLE
295 PLAY_NOTE_ARRAY(tone_plover_gb, false, 0);
296 #endif
297 layer_off(_PLOVER);
298 }
299 return false;
300 break;
301 }
302 return true;
303}
304
305void matrix_init_user(void) {
306 #ifdef AUDIO_ENABLE
307 startup_user();
308 #endif
309}
310
311#ifdef AUDIO_ENABLE
312
313void startup_user()
314{
315 _delay_ms(20); // gets rid of tick
316 PLAY_NOTE_ARRAY(tone_startup, false, 0);
317}
318
319void shutdown_user()
320{
321 PLAY_NOTE_ARRAY(tone_goodbye, false, 0);
322 _delay_ms(150);
323 stop_all_notes();
324}
325
326void music_on_user(void)
327{
328 music_scale_user();
329}
330
331void music_scale_user(void)
332{
333 PLAY_NOTE_ARRAY(music_scale, false, 0);
334}
335
336#endif
diff --git a/quantum/audio/song_list.h b/quantum/audio/song_list.h
index 8022ca672..400915db9 100644
--- a/quantum/audio/song_list.h
+++ b/quantum/audio/song_list.h
@@ -122,4 +122,31 @@
122 E__NOTE(_E5), \ 122 E__NOTE(_E5), \
123 E__NOTE(_D5), 123 E__NOTE(_D5),
124 124
125#define COIN_SOUND \
126 E__NOTE(_A5 ), \
127 HD_NOTE(_E6 ),
128
129#define ONE_UP_SOUND \
130 Q__NOTE(_E6 ), \
131 Q__NOTE(_G6 ), \
132 Q__NOTE(_E7 ), \
133 Q__NOTE(_C7 ), \
134 Q__NOTE(_D7 ), \
135 Q__NOTE(_G7 ),
136
137#define SONIC_RING \
138 E__NOTE(_E6), \
139 E__NOTE(_G6), \
140 HD_NOTE(_C7),
141
142#define ZELDA_PUZZLE \
143 Q__NOTE(_G5), \
144 Q__NOTE(_FS5), \
145 Q__NOTE(_DS5), \
146 Q__NOTE(_A4), \
147 Q__NOTE(_GS4), \
148 Q__NOTE(_E5), \
149 Q__NOTE(_GS5), \
150 HD_NOTE(_C6),
151
125#endif 152#endif