1 // This is MJT's bastardization of the planck and minivan defaults
3 #include QMK_KEYBOARD_H
5 extern keymap_config_t keymap_config
;
7 // Each layer gets a name for readability, which is then used in the keymap matrix below.
8 // The underscores don't mean anything - you can have a layer called STUFF or any other name.
9 // Layer names don't all need to be of the same length, obviously, and you can also skip them
10 // entirely and just use numbers.
20 enum planck_keycodes
{
31 #include "dynamic_macro.h"
33 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
36 * ,-----------------------------------------------------------------------------------.
37 * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
38 * |------+------+------+------+------+-------------+------+------+------+------+------|
39 * | Esc | A | S | D | F | G | H | J | K | L | ; | " |
40 * |------+------+------+------+------+------|------+------+------+------+------+------|
41 * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
42 * |------+------+------+------+------+------+------+------+------+------+------+------|
43 * | Brite| Ctrl | Alt | GUI |FKEYS | Space |NUMSYM | Left | Down | Up |Right |
44 * `-----------------------------------------------------------------------------------'
46 [_QWERTY
] = LAYOUT_planck_grid(
47 KC_TAB
, KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_BSPC
,
48 KC_ESC
, KC_A
, KC_S
, KC_D
, KC_F
, KC_G
, KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
, KC_QUOT
,
49 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
) ,
50 KC_LCTL
, KC_LCTL
, KC_LALT
, KC_LGUI
, FKEYS
, KC_SPC
, KC_SPC
, NUMSYM
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RGHT
54 * ,-----------------------------------------------------------------------------------.
55 * | ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | Bksp |
56 * |------+------+------+------+------+-------------+------+------+------+------+------|
57 * | Del | F11 | F12 | F13 | F14 | F15 | | |Sleep | | Rec1 | Rec2 |
58 * |------+------+------+------+------+------|------+------+------+------+------+------|
59 * | | | | | | | | | Mac1 | Mac2 | | Stop |
60 * |------+------+------+------+------+------+------+------+------+------+------+------|
61 * | | | | | | | | Next | Vol- | Vol+ | Play |
62 * `-----------------------------------------------------------------------------------'
64 [_FKEYS
] = LAYOUT_planck_grid(
65 KC_TILD
, KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_F6
, KC_F7
, KC_F8
, KC_F9
, KC_F10
, _______
,
66 KC_DEL
, KC_F11
, KC_F12
, KC_F13
, KC_F14
, KC_F15
, KC_F6
, _______
, _______
, MACSLEEP
, DYN_REC_START1
, DYN_REC_START2
,
67 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, DYN_MACRO_PLAY1
, DYN_MACRO_PLAY2
, _______
, DYN_REC_STOP
,
68 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_MNXT
, KC_VOLD
, KC_VOLU
, KC_MPLY
72 * ,-----------------------------------------------------------------------------------.
73 * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
74 * |------+------+------+------+------+-------------+------+------+------+------+------|
75 * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | ' |
76 * |------+------+------+------+------+------|------+------+------+------+------+------|
77 * | | _ | + | { | } | | | - | = | [ | ] | \ | |
78 * |------+------+------+------+------+------+------+------+------+------+------+------|
79 * | | | | | | | | Home |Pg Dn |Pg Up | End |
80 * `-----------------------------------------------------------------------------------'
82 [_NUMSYM
] = LAYOUT_planck_grid(
83 KC_GRV
, KC_1
, KC_2
, KC_3
, KC_4
, KC_5
, KC_6
, KC_7
, KC_8
, KC_9
, KC_0
, _______
,
84 KC_DEL
, KC_EXLM
, KC_AT
, KC_HASH
, KC_DLR
, KC_PERC
, KC_CIRC
, KC_AMPR
, KC_ASTR
, KC_LPRN
, KC_RPRN
, _______
,
85 _______
,KC_UNDS
, KC_PLUS
,KC_LCBR
, KC_RCBR
, KC_PIPE
, KC_MINS
, KC_EQL
, KC_LBRC
, KC_RBRC
, KC_BSLS
, _______
,
86 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_HOME
, KC_PGDN
, KC_PGUP
, KC_END
89 /* Plover layer (http://opensteno.org)
90 * ,-----------------------------------------------------------------------------------.
91 * | # | # | # | # | # | # | # | # | # | # | # | # |
92 * |------+------+------+------+------+-------------+------+------+------+------+------|
93 * | | S | T | P | H | * | * | F | P | L | T | D |
94 * |------+------+------+------+------+------|------+------+------+------+------+------|
95 * | | S | K | W | R | * | * | R | B | G | S | Z |
96 * |------+------+------+------+------+------+------+------+------+------+------+------|
97 * | Exit | | | A | O | | E | U | | | |
98 * `-----------------------------------------------------------------------------------'
101 [_PLOVER
] = LAYOUT_planck_grid(
102 KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
, KC_1
,
103 XXXXXXX
, KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_LBRC
,
104 XXXXXXX
, KC_A
, KC_S
, KC_D
, KC_F
, KC_G
, KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
, KC_QUOT
,
105 EXT_PLV
, XXXXXXX
, XXXXXXX
, KC_C
, KC_V
, XXXXXXX
, XXXXXXX
, KC_N
, KC_M
, XXXXXXX
, XXXXXXX
, XXXXXXX
108 /* Adjust (FKEYS + NUMSYM)
109 * ,-----------------------------------------------------------------------------------.
110 * | | Reset| | | | | | | |Pause |PR SC | Del |
111 * |------+------+------+------+------+-------------+------+------+------+------+------|
112 * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty| |Sleep |Plover| |
113 * |------+------+------+------+------+------|------+------+------+------+------+------|
114 * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
115 * |------+------+------+------+------+------+------+------+------+------+------+------|
116 * |TogLED| | | | | | | | | | |
117 * `-----------------------------------------------------------------------------------'
119 [_ADJUST
] = LAYOUT_planck_grid(
120 _______
, RESET
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_PAUS
, KC_PSCR
, KC_DEL
,
121 _______
, _______
, _______
, AU_ON
, AU_OFF
, AG_NORM
, AG_SWAP
, QWERTY
, _______
, MACSLEEP
, PLOVER
, _______
,
122 _______
, MUV_DE
, MUV_IN
, MU_ON
, MU_OFF
, MI_ON
, MI_OFF
, _______
, _______
, _______
, _______
, _______
,
123 BACKLIT
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
125 [_DYN] = LAYOUT_planck_grid(
126 _______ , _______, _______, _______, _______, _______, _______, _______, _______, DYN_REC_START1, DYN_REC_START2, _______ ,
127 _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
128 _______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
129 _______ , _______, _______, _______, _______, _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, _______
136 float tone_startup
[][2] = SONG(STARTUP_SOUND
);
137 float tone_qwerty
[][2] = SONG(QWERTY_SOUND
);
138 float tone_dyn_macro_rec
[][2] = SONG(DVORAK_SOUND
);
139 float tone_dyn_macro_play
[][2] = SONG(COLEMAK_SOUND
);
140 float tone_plover
[][2] = SONG(PLOVER_SOUND
);
141 float tone_plover_gb
[][2] = SONG(PLOVER_GOODBYE_SOUND
);
142 float music_scale
[][2] = SONG(MUSIC_SCALE_SOUND
);
144 float tone_goodbye
[][2] = SONG(GOODBYE_SOUND
);
147 void persistant_default_layer_set(uint16_t default_layer
) {
148 eeconfig_update_default_layer(default_layer
);
149 default_layer_set(default_layer
);
152 bool process_record_user(uint16_t keycode
, keyrecord_t
*record
) {
153 uint16_t macro_kc
= (keycode
== FKEYS
? DYN_REC_STOP
: keycode
);
154 if (!process_record_dynamic_macro(macro_kc
, record
)) {
159 if (record
->event
.pressed
) {
161 PLAY_SONG(tone_qwerty
);
163 persistant_default_layer_set(1UL<<_QWERTY
);
168 if (record
->event
.pressed
) {
170 update_tri_layer(_FKEYS
, _NUMSYM
, _ADJUST
);
173 update_tri_layer(_FKEYS
, _NUMSYM
, _ADJUST
);
178 if (record
->event
.pressed
) {
180 update_tri_layer(_FKEYS
, _NUMSYM
, _ADJUST
);
183 update_tri_layer(_FKEYS
, _NUMSYM
, _ADJUST
);
188 if (record
->event
.pressed
) {
189 register_code(KC_RSFT
);
190 #ifdef BACKLIGHT_ENABLE
194 unregister_code(KC_RSFT
);
199 if (record
->event
.pressed
) {
202 PLAY_SONG(tone_plover
);
208 if (!eeconfig_is_enabled()) {
211 keymap_config
.raw
= eeconfig_read_keymap();
212 keymap_config
.nkro
= 1;
213 eeconfig_update_keymap(keymap_config
.raw
);
218 if (record
->event
.pressed
) {
220 PLAY_SONG(tone_plover_gb
);
227 if (record
->event
.pressed
) {
228 // ACTION_MODS_KEY(MOD_LCTL | MOD_LSFT, KC_POWER);
229 register_code(KC_RSFT
);
230 register_code(KC_RCTL
);
231 register_code(KC_POWER
);
232 unregister_code(KC_POWER
);
233 unregister_code(KC_RCTL
);
234 unregister_code(KC_RSFT
);
242 void matrix_init_user(void) {
252 _delay_ms(20); // gets rid of tick
253 PLAY_SONG(tone_startup
);
258 PLAY_SONG(tone_goodbye
);
263 void music_on_user(void)
268 void music_scale_user(void)
270 PLAY_SONG(music_scale
);