1 // This is Sean Hunter's keymap file, customized from the canonical layout file for the Quantum project.
2 // If you want to add another keyboard, that is the style you want to emulate.
4 #include QMK_KEYBOARD_H
5 #include "mymappings.h"
7 extern keymap_config_t keymap_config
;
9 // Each layer gets a name for readability, which is then used in the keymap matrix below.
23 enum planck_keycodes
{
37 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
40 * ,-----------------------------------------------------------------------------------.
41 * | " | , | . | P | Y | / | = | F | G | C | R | L |
42 * |------+------+------+------+------+------+------+------+------+------+------+------|
43 * | A | O | E | U | I | ESC | BSPC | D | H | T | N | S |
44 * |------+------+------+------+------+------+------+------+------+------+------+------|
45 * | ; | Q | J | K | X | TAB | ENT | B | M | W | V | Z |
46 * |------+------+------+------+------+------+------+------+------+------+------+------|
47 * | Sft | Ctl | Alt | Gui |Lower | Space |Raise | < | v | ^ | > |
48 * `-----------------------------------------------------------------------------------'
50 [_DVRK
] = LAYOUT_planck_grid(
51 KC_QUOT
, KC_COMM
, KC_DOT
, KC_P
, KC_Y
, KC_SLSH
, KC_EQL
, KC_F
, KC_G
, KC_C
, KC_R
, KC_L
,
52 KC_A
, KC_O
, KC_E
, KC_U
, KC_I
, KC_ESC
, KC_BSPC
, KC_D
, KC_H
, KC_T
, KC_N
, KC_S
,
53 KC_SCLN
, KC_Q
, KC_J
, KC_K
, KC_X
, KC_TAB
, KC_ENT
, KC_B
, KC_M
, KC_W
, KC_V
, KC_Z
,
54 KC_LSFT
, KC_LCTL
, KC_LALT
, KC_LGUI
, LOWER
, KC_SPC
, KC_SPC
, RAISE
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RIGHT
59 * ,-----------------------------------------------------------------------------------.
60 * | F1 | F2 | F3 | F4 | F5 | { | } | F6 | F7 | F8 | F9 | F10 |
61 * |------+------+------+------+------+-------------+------+------+------+------+------|
62 * | 1 | 2 | 3 | 4 | 5 | [ | ] | 6 | 7 | 8 | 9 | 0 |
63 * |------+------+------+------+------+------|------+------+------+------+------+------|
64 * | ~ | | | ` | - | _ | INS | DEL | ( | ) | + | = | \ |
65 * |------+------+------+------+------+------+------+------+------+------+------+------|
66 * | Sft | Ctl | Alt | Gui |Lower | |Raise | Home | PgDn | PgUp | End |
67 * `-----------------------------------------------------------------------------------'
69 [_LOWER
] = LAYOUT_planck_grid(
70 KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_LCBR
, KC_RCBR
, KC_F6
, KC_F7
, KC_F8
, KC_F9
, KC_F10
,
71 KC_1
, KC_2
, KC_3
, KC_4
, KC_5
, KC_LBRC
, KC_RBRC
, KC_6
, KC_7
, KC_8
, KC_9
, KC_0
,
72 KC_TILD
, KC_PIPE
, KC_GRV
, KC_MINS
, KC_UNDS
, KC_INS
, KC_DEL
, KC_LPRN
, KC_RPRN
, KC_PLUS
, KC_EQL
, KC_BSLS
,
73 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_HOME
, KC_PGDN
, KC_PGUP
, KC_END
78 * ,-----------------------------------------------------------------------------------.
79 * | F11 | F12 | F13 | F14 | F15 | | | F16 | F17 | F18 | F19 | F20 |
80 * |------+------+------+------+------+-------------+------+------+------+------+------|
81 * | ! | @ | # | $ | % |Sleep | Wake | ^ | & | * | ( | ) |
82 * |------+------+------+------+------+-------------+------+------+------+------+------|
83 * | GUI1 | GUI2 | GUI3 | GUI4 | GUI5 | | GUI6 | GUI7 | GUI8 | GUI9 |GUI10 |
84 * |------+------+------+------+------+------+------+------+------+------+------+------|
85 * | Sft | Ctl | Alt | Gui |Lower | |Raise | Gui | Alt | Ctl | Sft |
86 * `-----------------------------------------------------------------------------------'
88 [_RAISE
] = LAYOUT_planck_grid(
89 KC_F11
, KC_F12
, KC_F13
, KC_F14
, KC_F15
, _______
, _______
, KC_F16
, KC_F17
, KC_F18
, KC_F19
, KC_F20
,
90 KC_EXLM
, KC_AT
, KC_HASH
, KC_DLR
, KC_PERC
, KC_SLEP
, KC_WAKE
, KC_CIRC
, KC_AMPR
, KC_ASTR
, KC_LPRN
, KC_RPRN
,
91 GUI_1
, GUI_2
, GUI_3
, GUI_4
, GUI_5
, _______
, _______
, GUI_6
, GUI_7
, GUI_8
, GUI_9
, GUI_10
,
92 KC_LSFT
, KC_LCTL
, KC_LALT
, KC_LGUI
, LOWER
, KC_SPC
, KC_SPC
, RAISE
, KC_RGUI
, KC_RALT
, KC_RCTL
, KC_RSFT
95 /* 'Software Dvorak': Designed to look like dvorak in the mapping but depend on software
96 * dvorak (ie the OS keymapping changed to dvorak).
97 * ,-----------------------------------------------------------------------------------.
98 * | " | , | . | P | Y | / | = | F | G | C | R | L |
99 * |------+------+------+------+------+------+------+------+------+------+------+------|
100 * | A | O | E | U | I | ESC | BSPC | D | H | T | N | S |
101 * |------+------+------+------+------+------+------+------+------+------+------+------|
102 * | ; | Q | J | K | X | TAB | ENT | B | M | W | V | Z |
103 * |------+------+------+------+------+------+------+------+------+------+------+------|
104 * | Sft | Ctl | Alt | Gui |SLower| Space |SRaise| < | v | ^ | > |
105 * `-----------------------------------------------------------------------------------'
107 [_SDRK
] = LAYOUT_planck_grid(
108 DV_QUOT
, DV_COMM
, DV_DOT
, DV_P
, DV_Y
, DV_SLSH
, DV_EQL
, DV_F
, DV_G
, DV_C
, DV_R
, DV_L
,
109 DV_A
, DV_O
, DV_E
, DV_U
, DV_I
, KC_ESC
, KC_BSPC
, DV_D
, DV_H
, DV_T
, DV_N
, DV_S
,
110 DV_SCLN
, DV_Q
, DV_J
, DV_K
, DV_X
, KC_TAB
, KC_ENT
, DV_B
, DV_M
, DV_W
, DV_V
, DV_Z
,
111 KC_LSFT
, KC_LCTL
, KC_LALT
, KC_LGUI
, SLWER
, KC_SPC
, KC_SPC
, SRAIS
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RIGHT
115 /* 'Software dvorak lower mode': Puts all the braces etc in the right places so it works
116 * just like the lower mode above except that it depends on the OS keymapping being set
118 * ,-----------------------------------------------------------------------------------.
119 * | F1 | F2 | F3 | F4 | F5 | { | } | F6 | F7 | F8 | F9 | F10 |
120 * |------+------+------+------+------+-------------+------+------+------+------+------|
121 * | 1 | 2 | 3 | 4 | 5 | [ | ] | 6 | 7 | 8 | 9 | 0 |
122 * |------+------+------+------+------+------|------+------+------+------+------+------|
123 * | ~ | | | ` | - | _ | INS | DEL | ( | ) | + | = | \ |
124 * |------+------+------+------+------+------+------+------+------+------+------+------|
125 * | Sft | Ctl | Alt | Gui |SLower| |SRaise| Home | PgDn | PgUp | End |
126 * `-----------------------------------------------------------------------------------'
128 [_SLWER
] = LAYOUT_planck_grid(
129 KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, DV_LCBR
, DV_RCBR
, KC_F6
, KC_F7
, KC_F8
, KC_F9
, KC_F10
,
130 DV_1
, DV_2
, DV_3
, DV_4
, DV_5
, DV_LBRC
, DV_RBRC
, DV_6
, DV_7
, DV_8
, DV_9
, DV_0
,
131 DV_TILD
, DV_PIPE
, DV_GRV
, DV_MINS
, DV_UNDS
, KC_INS
, KC_DEL
, DV_LPRN
, DV_RPRN
, DV_PLUS
, DV_EQL
, DV_BSLS
,
132 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_HOME
, KC_PGDN
, KC_PGUP
, KC_END
136 /* 'Software dvorak raise mode'
137 * ,-----------------------------------------------------------------------------------.
138 * | F11 | F12 | F13 | F14 | F15 | | | F16 | F17 | F18 | F19 | F20 |
139 * |------+------+------+------+------+-------------+------+------+------+------+------|
140 * | ! | @ | # | $ | % |Sleep | Wake | ^ | & | * | ( | ) |
141 * |------+------+------+------+------+-------------+------+------+------+------+------|
142 * | GUI1 | GUI2 | GUI3 | GUI4 | GUI5 | | GUI6 | GUI7 | GUI8 | GUI9 |GUI10 |
143 * |------+------+------+------+------+------+------+------+------+------+------+------|
144 * | Sft | Ctl | Alt | Gui |Lower | |Raise | Gui | Alt | Ctl | Sft |
145 * `-----------------------------------------------------------------------------------'
147 [_SRAIS
] = LAYOUT_planck_grid(
148 KC_F11
, KC_F12
, KC_F13
, KC_F14
, KC_F15
, _______
, _______
, KC_F16
, KC_F17
, KC_F18
, KC_F19
, KC_F20
,
149 DV_EXLM
, DV_AT
, DV_HASH
, DV_DLR
, DV_PERC
, KC_SLEP
, KC_WAKE
, DV_CIRC
, DV_AMPR
, DV_ASTR
, DV_LPRN
, DV_RPRN
,
150 GUI_1
, GUI_2
, GUI_3
, GUI_4
, GUI_5
, _______
, _______
, GUI_6
, GUI_7
, GUI_8
, GUI_9
, GUI_10
,
151 KC_LSFT
, KC_LCTL
, KC_LALT
, KC_LGUI
, SLWER
, KC_SPC
, KC_SPC
, SRAIS
, KC_RGUI
, KC_RALT
, KC_RCTL
, KC_RSFT
155 /* Adjust (Lower + Raise or SLower + SRaise)
156 * ,-----------------------------------------------------------------------------------.
157 * | | Reset| | | |AGnorm|AGswap| | |HRevl |HReset|HMenu |
158 * |------+------+------+------+------+-------------+------+------+------+------+------|
159 * | PWR | EJCT | CUT | COPY |PASTE |PrScr |SysReq| CAPS | << | >> | Mute | Stop |
160 * |------+------+------+------+------+------|------+------+------+------+------+------|
161 * |DVORAK|NUMPAD| MVMT | SDRK | | | | | Next | Vol- | Vol+ | Play |
162 * |------+------+------+------+------+------+------+------+------+------+------+------|
163 * |Brite |BToggl| | | | | | Gui | Alt | Ctl | Sft |
164 * `-----------------------------------------------------------------------------------'
166 [_ADJUST
] = LAYOUT_planck_grid(
167 _______
, RESET
, _______
, _______
, _______
, AG_NORM
, AG_SWAP
, _______
, _______
, HRVL
, HRESET
, HMENU
,
168 KC_PWR
, KC_EJCT
, CUT
, COPY
, PASTE
, KC_PSCR
, KC_SYSREQ
, KC_CAPS
, KC_MRWD
, KC_MFFD
, KC_MUTE
, KC_MSTP
,
169 DVRK
, TO(_NMPD
), TO(_MVMT
), SDRK
, _______
, _______
, _______
, _______
, KC_MNXT
, KC_VOLD
, KC_VOLU
, KC_MPLY
,
170 BACKLIT
, BACKTOG
, _______
, _______
, _______
, _______
, _______
, _______
, KC_RGUI
, KC_RALT
, KC_RCTL
, KC_RSFT
175 * ,-----------------------------------------------------------------------------------.
176 * | | | | | | | |NumLck| 7 | 8 | 9 | / |
177 * |------+------+------+------+------+------+------+------+------+------+------+------|
178 * | | | | | | | |Enter | 4 | 5 | 6 | * |
179 * |------+------+------+------+------+------+------+------+------+------+------+------|
180 * |DVORAK|NUMPAD| MVMT | SDRK | | | | | 3 | 2 | 1 | - |
181 * |------+------+------+------+------+-------------+------+------+------+------+------|
182 * | | | | | | | | | 0 | . | + |
183 * `-----------------------------------------------------------------------------------'
185 [_NMPD
] = LAYOUT_planck_grid(
186 XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, KC_NLCK
, KC_P7
, KC_P8
, KC_P9
, KC_PSLS
,
187 XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, KC_PENT
, KC_P4
, KC_P5
, KC_P6
, KC_PAST
,
188 TO(_DVRK
),TO(_NMPD
),TO(_MVMT
),SDRK
, XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, KC_P1
, KC_P2
, KC_P3
, KC_PMNS
,
189 _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, _______
, KC_P0
, KC_PDOT
, KC_PPLS
194 * ,-----------------------------------------------------------------------------------.
195 * |MsBut2|MsWhDn|MsWhUp|MsBut1|MsBut3| | | | Home | PgDn | PgUp | End |
196 * +------+------+------+------+------+------+------+------+------+------+------+------+
197 * |Ms Lft|Ms Dn |Ms Up |Ms Rht| | | | | Left | Down | Up | Right|
198 * |------+------+------+------+------+------+------+------+------+------+------+------|
199 * |DVORAK|NUMPAD| MVMT | SDRK | | | | | | | | |
200 * |------+------+------+------+------+-------------+------+------+------+------+------|
201 * | Sft | Ctl | Alt | Gui | | | | Gui | Alt | Ctl | Sft |
202 * `-----------------------------------------------------------------------------------'
204 [_MVMT
] = LAYOUT_planck_grid(
205 KC_MB2
, KC_MWDN
, KC_MWUP
, KC_MB1
, KC_MB3
, XXXXXXX
, XXXXXXX
, XXXXXXX
, KC_HOME
, KC_PGDN
, KC_PGUP
, KC_END
,
206 KC_MLFT
, KC_MDN
, KC_MUP
, KC_MRGT
, XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RGHT
,
207 TO(_DVRK
),TO(_NMPD
),TO(_MVMT
),SDRK
,XXXXXXX
,XXXXXXX
,XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
, XXXXXXX
,
208 KC_LSFT
, KC_LCTL
, KC_LALT
, KC_LGUI
, _______
, _______
, _______
, _______
, KC_RGUI
, KC_RALT
, KC_RCTL
, KC_RSFT
213 void persistent_default_layer_set(uint16_t default_layer
) {
214 eeconfig_update_default_layer(default_layer
);
215 default_layer_set(default_layer
);
218 bool process_record_user(uint16_t keycode
, keyrecord_t
*record
) {
221 if (record
->event
.pressed
) {
222 persistent_default_layer_set(1UL<<_DVRK
);
228 if (record
->event
.pressed
) {
230 update_tri_layer(_LOWER
, _RAISE
, _ADJUST
);
233 update_tri_layer(_LOWER
, _RAISE
, _ADJUST
);
238 if (record
->event
.pressed
) {
240 update_tri_layer(_LOWER
, _RAISE
, _ADJUST
);
243 update_tri_layer(_LOWER
, _RAISE
, _ADJUST
);
248 if (record
->event
.pressed
) {
249 persistent_default_layer_set(1UL<<_SDRK
);
255 if (record
->event
.pressed
) {
257 update_tri_layer(_SLWER
, _SRAIS
, _ADJUST
);
260 update_tri_layer(_SLWER
, _SRAIS
, _ADJUST
);
265 if (record
->event
.pressed
) {
267 update_tri_layer(_SLWER
, _SRAIS
, _ADJUST
);
270 update_tri_layer(_SLWER
, _SRAIS
, _ADJUST
);
275 if (record
->event
.pressed
) {
276 register_code(KC_RSFT
);
277 #ifdef BACKLIGHT_ENABLE
281 unregister_code(KC_RSFT
);
286 if (record
->event
.pressed
) {
287 #ifdef BACKLIGHT_ENABLE
293 case CUT
: //cut macro
294 return MACRODOWN( DOWN(KC_LCTL
), TYPE(KC_X
), UP(KC_LCTL
), END
);
295 case COPY
: // copy macro
296 return MACRODOWN( DOWN(KC_LCTL
), TYPE(KC_C
), UP(KC_LCTL
), END
);
297 case PASTE
: // paste macro
298 return MACRODOWN( DOWN(KC_LCTL
), TYPE(KC_V
), UP(KC_LCTL
), END
);
303 void matrix_init_user(void) {