2020 February 29 Breaking Changes Update (#8064)
[jackhill/qmk/firmware.git] / keyboards / planck / keymaps / dbroqua / keymap.c
CommitLineData
578b7e96 1
26eef35f 2#include QMK_KEYBOARD_H
578b7e96 3
4extern 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
11aa19a6 11#define _LOWER 1
12#define _RAISE 2
d7b6d748 13#define _MULTIMEDIA 3
11aa19a6 14#define _ADJUST 4
578b7e96 15
16enum planck_keycodes {
17 QWERTY = SAFE_RANGE,
578b7e96 18 LOWER,
19 RAISE,
11aa19a6 20 BACKLIT
578b7e96 21};
22
11aa19a6 23// Func macro definitions.
26eef35f 24#define SFT_TAB LT(_MULTIMEDIA, KC_TAB) // Tap for Enter, hold for Shift
11aa19a6 25
578b7e96 26const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
27
28/* Qwerty
29 * ,-----------------------------------------------------------------------------------.
d7b6d748 30 * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
11aa19a6 31 * |------+------+------+------+------+------+------+------+------+------+------+------|
d7b6d748 32 * | Tab | A | S | D | F | G | H | J | K | L | ; | " |
11aa19a6 33 * |------+------+------+------+------+------+------+------+------+------+------+------|
578b7e96 34 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
35 * |------+------+------+------+------+------+------+------+------+------+------+------|
d7b6d748 36 * | Ctrl | GUI | AltGr| Alt | Lower| Space | Raise| Left | Down | Up |Right |
578b7e96 37 * `-----------------------------------------------------------------------------------'
38 */
26eef35f
JY
39[_QWERTY] = LAYOUT_planck_grid(
40 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
41 SFT_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
42 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
43 KC_LCTL, KC_LGUI, KC_RALT, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
44),
578b7e96 45
11aa19a6 46/* Lower
578b7e96 47 * ,-----------------------------------------------------------------------------------.
11aa19a6 48 * | | | | | | | | | | | ( | ) |
578b7e96 49 * |------+------+------+------+------+------+------+------+------+------+------+------|
11aa19a6 50 * | Brite| | | | | | | | | | { | } |
578b7e96 51 * |------+------+------+------+------+------+------+------+------+------+------+------|
11aa19a6 52 * | | | | | | | | | | | [ | ] |
578b7e96 53 * |------+------+------+------+------+------+------+------+------+------+------+------|
b4f23b14 54 * | | | | | | | | Home | PgDwn| PgUp | End |
578b7e96 55 * `-----------------------------------------------------------------------------------'
56 */
26eef35f
JY
57[_LOWER] = LAYOUT_planck_grid(
58 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LPRN, KC_RPRN,
59 BACKLIT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR,
60 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC,
61 _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
62),
578b7e96 63
64/* Raise
65 * ,-----------------------------------------------------------------------------------.
66 * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | - | = |
11aa19a6 67 * |------+------+------+------+------+------+------+------+------+------+------+------|
b4f23b14 68 * | | | | | | | | | | | | ` |
578b7e96 69 * |------+------+------+------+------+------+------+------+------+------+------+------|
b9a28435 70 * | | | | | | | | | | | \ | |
11aa19a6 71 * |------+------+------+------+------+------+------+------+------+------+------+------|
b9a28435 72 * | | | | | | | | | | | |
578b7e96 73 * `-----------------------------------------------------------------------------------'
74 */
26eef35f
JY
75[_RAISE] = LAYOUT_planck_grid(
76 KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
77 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_GRV,
78 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BSLS, _______,
79 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
80),
578b7e96 81
d7b6d748 82/* _MULTIMEDIA
578b7e96 83 * ,-----------------------------------------------------------------------------------.
11aa19a6 84 * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
85 * |------+------+------+------+------+------+------+------+------+------+------+------|
92fe78a5 86 * | | | | | | | | Psc | | | | |
578b7e96 87 * |------+------+------+------+------+------+------+------+------+------+------+------|
b9a28435 88 * | | | | | | Mute | Vol+ | Vol- | | | |Insert|
11aa19a6 89 * |------+------+------+------+------+------+------+------+------+------+------+------|
b9a28435 90 * | | | | | | | | Prev | Play | Next | Del |
578b7e96 91 * `-----------------------------------------------------------------------------------'
92 */
26eef35f
JY
93[_MULTIMEDIA] = LAYOUT_planck_grid(
94 KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
95 _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, _______,
96 _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD, _______, _______, _______, KC_INS,
97 _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_DEL
98),
578b7e96 99
11aa19a6 100
578b7e96 101/* Adjust (Lower + Raise)
102 * ,-----------------------------------------------------------------------------------.
103 * | | Reset| | | | | | | | | | Del |
11aa19a6 104 * |------+------+------+------+------+------+------+------+------+------+------+------|
105 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty| | | | |
106 * |------+------+------+------+------+------+------+------+------+------+------+------|
578b7e96 107 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
108 * |------+------+------+------+------+------+------+------+------+------+------+------|
109 * | | | | | | | | | | | |
110 * `-----------------------------------------------------------------------------------'
111 */
26eef35f
JY
112[_ADJUST] = LAYOUT_planck_grid(
113 _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
114 _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______,
115 _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
116 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
117)
578b7e96 118
119
120};
121
122#ifdef AUDIO_ENABLE
123
124float tone_startup[][2] = SONG(STARTUP_SOUND);
125float tone_qwerty[][2] = SONG(QWERTY_SOUND);
126float tone_dvorak[][2] = SONG(DVORAK_SOUND);
127float tone_colemak[][2] = SONG(COLEMAK_SOUND);
128float tone_plover[][2] = SONG(PLOVER_SOUND);
129float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
130float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
131
132float tone_goodbye[][2] = SONG(GOODBYE_SOUND);
133#endif
134
135
8ddbf7f5 136void persistent_default_layer_set(uint16_t default_layer) {
578b7e96 137 eeconfig_update_default_layer(default_layer);
138 default_layer_set(default_layer);
139}
140
141bool process_record_user(uint16_t keycode, keyrecord_t *record) {
142 switch (keycode) {
143 case QWERTY:
144 if (record->event.pressed) {
145 #ifdef AUDIO_ENABLE
fe60cbd9 146 PLAY_SONG(tone_qwerty);
578b7e96 147 #endif
8ddbf7f5 148 persistent_default_layer_set(1UL<<_QWERTY);
578b7e96 149 }
150 return false;
151 break;
578b7e96 152 case LOWER:
153 if (record->event.pressed) {
154 layer_on(_LOWER);
155 update_tri_layer(_LOWER, _RAISE, _ADJUST);
156 } else {
157 layer_off(_LOWER);
158 update_tri_layer(_LOWER, _RAISE, _ADJUST);
159 }
160 return false;
161 break;
162 case RAISE:
163 if (record->event.pressed) {
164 layer_on(_RAISE);
165 update_tri_layer(_LOWER, _RAISE, _ADJUST);
166 } else {
167 layer_off(_RAISE);
168 update_tri_layer(_LOWER, _RAISE, _ADJUST);
169 }
170 return false;
171 break;
172 case BACKLIT:
173 if (record->event.pressed) {
174 register_code(KC_RSFT);
175 #ifdef BACKLIGHT_ENABLE
176 backlight_step();
177 #endif
178 } else {
179 unregister_code(KC_RSFT);
180 }
181 return false;
182 break;
578b7e96 183 }
184 return true;
185}
186
187void matrix_init_user(void) {
188 #ifdef AUDIO_ENABLE
189 startup_user();
190 #endif
191}
192
193#ifdef AUDIO_ENABLE
194
195void startup_user()
196{
197 _delay_ms(20); // gets rid of tick
fe60cbd9 198 PLAY_SONG(tone_startup);
578b7e96 199}
200
201void shutdown_user()
202{
fe60cbd9 203 PLAY_SONG(tone_goodbye);
578b7e96 204 _delay_ms(150);
205 stop_all_notes();
206}
207
208void music_on_user(void)
209{
210 music_scale_user();
211}
212
213void music_scale_user(void)
214{
fe60cbd9 215 PLAY_SONG(music_scale);
578b7e96 216}
217
ade22f8e 218#endif