2020 February 29 Breaking Changes Update (#8064)
[jackhill/qmk/firmware.git] / keyboards / planck / keymaps / dlaroe / keymap.c
CommitLineData
07dcbd23 1// Can't Remember Sh*t Keymap for Planck
4ca65bb6 2// http://www.keyboard-layout-editor.com/#/gists/c6c0ac051b2b118a34ef84ebadab54c7
07dcbd23 3
26eef35f 4#include QMK_KEYBOARD_H
07dcbd23 5
6extern keymap_config_t keymap_config;
7
4ca65bb6 8
9enum planck_layers {
10 _QWERTY,
11 _ARROW,
12 _GAME,
13 _LOWER,
14 _RAISE,
15 _PLOVER,
16 _ADJUST
17};
18
07dcbd23 19
20enum planck_keycodes {
21 QWERTY = SAFE_RANGE,
4ca65bb6 22 ARROW,
07dcbd23 23 GAME,
24 LOWER,
25 RAISE,
26 BACKLIT,
4ca65bb6 27 PLOVER,
28 EXT_PLV
07dcbd23 29};
30
07dcbd23 31const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
32
33/* Qwerty
34 * ,-----------------------------------------------------------------------------------.
35 * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
36 * |------+------+------+------+------+-------------+------+------+------+------+------|
37 * | Tab | A | S | D | F | G | H | J | K | L | ; | ' |
38 * |------+------+------+------+------+------|------+------+------+------+------+------|
39 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
40 * |------+------+------+------+------+------+------+------+------+------+------+------|
41 * | Ctrl | GUI | \ | Alt | Lower| Space |Raise | [ | - | = | ] |
42 * `-----------------------------------------------------------------------------------'
43 */
26eef35f
JY
44[_QWERTY] = LAYOUT_planck_grid(
45 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
46 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
47 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) ,
48 KC_LCTL, KC_LGUI, KC_BSLS, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, LT(_LOWER, KC_LBRC), KC_MINS, KC_EQL, MT(MOD_RCTL, KC_RBRC)
49),
07dcbd23 50
4ca65bb6 51 /* Arrow
52 * ,-----------------------------------------------------------------------------------.
53 * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
54 * |------+------+------+------+------+-------------+------+------+------+------+------|
55 * | Tab | A | S | D | F | G | H | J | K | L | ; | ' |
56 * |------+------+------+------+------+------|------+------+------+------+------+------|
57 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
58 * |------+------+------+------+------+------+------+------+------+------+------+------|
59 * | Ctrl | GUI | \ | Alt | Lower| Space |Raise | Left | Down | Up | Right|
60 * `-----------------------------------------------------------------------------------'
61 */
26eef35f
JY
62[_ARROW] = LAYOUT_planck_grid(
63 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
64 KC_TAB, 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, SFT_T(KC_ENT) ,
66 KC_LCTL, KC_LGUI, KC_BSLS, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
67),
ade22f8e
JH
68
69
07dcbd23 70/* Game
71 * ,-----------------------------------------------------------------------------------.
72 * | 1 | Q | W | E | R | T | Y | U | I | O | P | Bksp |
73 * |------+------+------+------+------+-------------+------+------+------+------+------|
74 * |Shift | A | S | D | F | G | H | J | K | L | ; | ' |
75 * |------+------+------+------+------+------|------+------+------+------+------+------|
76 * | Ctrl | Z | X | C | V | B | N | M | , | . | / |Enter |
77 * |------+------+------+------+------+------+------+------+------+------+------+------|
78 * | Alt | 4 | 3 | 2 | Lower| Space |Raise | Left | Down | Up | Right|
79 * `-----------------------------------------------------------------------------------'
80 */
26eef35f
JY
81[_GAME] = LAYOUT_planck_grid(
82 KC_1, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
83 KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
84 KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______ ,
85 KC_LALT, KC_4, KC_3, KC_2, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
86),
07dcbd23 87
88
fe60cbd9 89/* Lower (switched to # because KP# were weird in terminal emulators)
07dcbd23 90 * ,-----------------------------------------------------------------------------------.
91 * | Del | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
92 * |------+------+------+------+------+-------------+------+------+------+------+------|
93 * | Tab | F1 | F2 | F3 | F4 | F5 | F6 | 4 | 5 | 6 | . | * |
94 * |------+------+------+------+------+------+------+------+------+------+------+------|
4ca65bb6 95 * | | F7 | F8 | F9 | F10 | F11 | F12 | 1 | 2 | 3 | / |Enter |
07dcbd23 96 * |------+------+------+------+------+------+------+------+------+------+------+------|
97 * | Esc | | | | | 0 | | | | KP_+ | |
98 * `-----------------------------------------------------------------------------------'
99 */
26eef35f
JY
100[_LOWER] = LAYOUT_planck_grid(
101 KC_DEL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
102 _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_4, KC_5, KC_6, KC_DOT, KC_ASTR,
103 _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_1, KC_2, KC_3, KC_SLSH, _______,
104 KC_ESC, _______, _______, _______, _______, KC_0, KC_0, _______, _______, _______, KC_PLUS, _______
105),
07dcbd23 106
fe60cbd9 107/* Raise
07dcbd23 108 * ,-----------------------------------------------------------------------------------.
109 * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
110 * |------+------+------+------+------+-------------+------+------+------+------+------|
111 * | Del | Wh Up|RightC| M-Up | LeftC|QWERTY| Left | Down | Up | Right| | | ` |
112 * |------+------+------+------+------+------|------+------+------+------+------+------|
4ca65bb6 113 * | | Wh Dn| M-L | M-Dn | M-R | | - | = | [ | ] | \ | |
07dcbd23 114 * |------+------+------+------+------+------+------+------+------+------+------+------|
115 * | | App | | | | Ins | | Home | PGDN | PGUP | End |
116 * `-----------------------------------------------------------------------------------'
117 */
26eef35f
JY
118[_RAISE] = LAYOUT_planck_grid(
119 KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
120 KC_DEL, KC_WH_U, KC_BTN2, KC_MS_U, KC_BTN1, QWERTY, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_PIPE, KC_GRV,
121 _______, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLASH, _______,
122 _______, KC_APP, _______, _______, _______, KC_INS, KC_INS, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
123),
07dcbd23 124
4ca65bb6 125/* Plover layer (http://opensteno.org)
126 * ,-----------------------------------------------------------------------------------.
127 * | # | # | # | # | # | # | # | # | # | # | # | # |
128 * |------+------+------+------+------+-------------+------+------+------+------+------|
129 * | | S | T | P | H | * | * | F | P | L | T | D |
130 * |------+------+------+------+------+------|------+------+------+------+------+------|
131 * | | S | K | W | R | * | * | R | B | G | S | Z |
132 * |------+------+------+------+------+------+------+------+------+------+------+------|
133 * | Exit | | | A | O | | E | U | | | |
134 * `-----------------------------------------------------------------------------------'
135 */
136
26eef35f
JY
137[_PLOVER] = LAYOUT_planck_grid(
138 KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 ,
139 XXXXXXX, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
140 XXXXXXX, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
141 EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
142),
4ca65bb6 143
07dcbd23 144/* Adjust (Lower + Raise)
145 * ,-----------------------------------------------------------------------------------.
4ca65bb6 146 * | C-A-I|Qwerty| | |Reset |Macro0| | | | |PLOVER|C-A-D |
07dcbd23 147 * |------+------+------+------+------+-------------+------+------+------+------+------|
4ca65bb6 148 * | Caps | Arrow| |Aud on|Audoff| Game |AGswap|AGnorm| PrtSc|ScrLck| Break| |
07dcbd23 149 * |------+------+------+------+------+------|------+------+------+------+------+------|
4ca65bb6 150 * | |Voice-|Voice+|Mus on|Musoff| Prev | Next | Mute | VolDn| VolUp| | |
07dcbd23 151 * |------+------+------+------+------+------+------+------+------+------+------+------|
4ca65bb6 152 * | Brite| | | | | Play/Pause | | BL_T |BL_DEC|BL_INC|BL_ST |
07dcbd23 153 * `-----------------------------------------------------------------------------------'
154 */
26eef35f
JY
155[_ADJUST] = LAYOUT_planck_grid(
156 LALT(LCTL(KC_INS)), QWERTY, _______, _______, RESET, M(0), _______, _______, _______, _______, PLOVER, LALT(LCTL(KC_DEL)),
157 KC_CAPS, ARROW, _______, AU_ON, AU_OFF, GAME, AG_SWAP, AG_NORM, KC_PSCR, KC_SLCK, KC_PAUS, _______,
158 _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
159 BACKLIT, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, BL_TOGG, BL_DEC , BL_INC , BL_STEP
160)
07dcbd23 161
162
163};
164
165const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // this is the function signature -- just copy/paste it into your keymap file as it is.
166{
167 switch(id) {
168 case 0: // this would trigger when you hit a key mapped as M(0)
169 if (record->event.pressed) {
170 return MACRO( D(LSFT), T(LEFT), U(LSFT), D(LCTL), T(X), U(LCTL), T(RIGHT), D(LCTL), T(V), U(LCTL), T(LEFT), END ); // this swaps the characters on either side of the cursor when the macro executes
171 }
172 break;
173 }
174 return MACRO_NONE;
175};
176
07dcbd23 177#ifdef AUDIO_ENABLE
4ca65bb6 178 float plover_song[][2] = SONG(PLOVER_SOUND);
179 float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
07dcbd23 180#endif
181
07dcbd23 182bool process_record_user(uint16_t keycode, keyrecord_t *record) {
183 switch (keycode) {
184 case QWERTY:
185 if (record->event.pressed) {
4ca65bb6 186 print("mode just switched to qwerty and this is a huge string\n");
187 set_single_persistent_default_layer(_QWERTY);
188 }
189 return false;
190 break;
191 case ARROW:
192 if (record->event.pressed) {
193 set_single_persistent_default_layer(_ARROW);
07dcbd23 194 }
195 return false;
196 break;
197 case GAME:
198 if (record->event.pressed) {
4ca65bb6 199 set_single_persistent_default_layer(_GAME);
07dcbd23 200 }
201 return false;
202 break;
4ca65bb6 203 case LOWER:
204 if (record->event.pressed) {
205 layer_on(_LOWER);
206 update_tri_layer(_LOWER, _RAISE, _ADJUST);
207 } else {
208 layer_off(_LOWER);
209 update_tri_layer(_LOWER, _RAISE, _ADJUST);
210 }
07dcbd23 211 return false;
212 break;
213 case RAISE:
214 if (record->event.pressed) {
215 layer_on(_RAISE);
216 update_tri_layer(_LOWER, _RAISE, _ADJUST);
217 } else {
218 layer_off(_RAISE);
219 update_tri_layer(_LOWER, _RAISE, _ADJUST);
220 }
221 return false;
222 break;
223 case BACKLIT:
224 if (record->event.pressed) {
225 register_code(KC_RSFT);
226 #ifdef BACKLIGHT_ENABLE
227 backlight_step();
228 #endif
229 } else {
230 unregister_code(KC_RSFT);
231 }
232 return false;
233 break;
4ca65bb6 234 case PLOVER:
235 if (record->event.pressed) {
236 #ifdef AUDIO_ENABLE
237 stop_all_notes();
238 PLAY_SONG(plover_song);
239 #endif
240 layer_off(_RAISE);
241 layer_off(_LOWER);
242 layer_off(_ADJUST);
243 layer_on(_PLOVER);
244 if (!eeconfig_is_enabled()) {
245 eeconfig_init();
246 }
247 keymap_config.raw = eeconfig_read_keymap();
248 keymap_config.nkro = 1;
249 eeconfig_update_keymap(keymap_config.raw);
250 }
251 return false;
252 break;
253 case EXT_PLV:
254 if (record->event.pressed) {
255 #ifdef AUDIO_ENABLE
256 PLAY_SONG(plover_gb_song);
257 #endif
258 layer_off(_PLOVER);
259 }
260 return false;
261 break;
262 }
07dcbd23 263 return true;
264}