Keymap Wrappers
Pattern adapted from users/drashna/wrapper.h
Defines several object macros for common keycode sets. Each macro typically
covers 5 keycodes with a left- or right-hand orientation, and macros are
generally grouped into rows of three or four.
TODO: Use keymap builder to generate images.
Example
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format off
[_MODS] = LAYOUT_wrapper(
_______, ___________________BLANK___________________, ...
...
),
//clang-format on
}
Substitute the appropriate LAYOUT
function, e.g., LAYOUT_planck_grid
for your board.
Wrappers
How to Read the Tables
- Headers are numbered when wrapper is not hand-specific
- Headers use
L
and R
to indicate handedness
- Headers use
P
, R
, M
, and I
to indicate pinky, ring, middle, and index, respectively
- Wrappers define a maximum of five keycodes -- hands are shown on the same row for readability
Alpha: Colemak mod-DH
# |
LP |
LR |
LM |
LI |
LI+ |
RI+ |
RI |
RM |
RR |
RP |
1 |
Q |
W |
F |
P |
B |
J |
L |
U |
Y |
;ˆ |
2 |
A° |
R° |
S° |
T° |
G |
M |
N° |
E° |
I° |
O° |
3 |
Z |
X |
C |
D |
V˜ |
K |
H |
, |
. |
/ |
- ˆ: (Optional) Replace
;
with '
(top-right)
- °: (Optional) Home row modifiers on tap-hold (GACS, SCAG)
- ˜: (Optional) Tap-hold
shift
on v
Alpha: QWERTY
# |
LP |
LR |
LM |
LI |
LI+ |
RI+ |
RI |
RM |
RR |
RP |
1 |
Q |
W |
E |
R |
T |
Y |
U |
I |
O |
P |
2 |
A |
S |
D |
F |
G |
H |
J |
K |
L |
; |
3 |
Z |
X |
C |
V |
B |
N |
M |
, |
. |
/ |
Blank(-ish)
Defines macros for common filler.
1 |
2 |
3 |
4 |
5 |
TRNS |
TRNS |
TRNS |
TRNS |
TRNS |
xxxx |
xxxx |
xxxx |
xxxx |
xxxx |
LP |
LR |
LM |
LI |
LI+ |
RI+ |
RI |
RM |
RR |
RP |
LGUI |
LALT |
LCTL |
LSFT |
TRNS |
TRNS |
RSFT |
RCTL |
LALT |
RGUI |
Adjust
# |
LP |
LR |
LM |
LI |
LI+ |
RI+ |
RI |
RM |
RR |
RP |
1 |
Reset |
Debug |
xxxx |
Term+ |
Term- |
xxxx |
AGNORM |
AGSWAP |
xxxx |
xxxx |
2 |
RgbTog |
Hue+ |
Sat+ |
Val+ |
RgbMod |
xxxx |
CLMKDH |
QWERTY |
xxxx |
xxxx |
3 |
xxxx |
Hue- |
Sat- |
Val- |
xxxx |
xxxx |
xxxx |
xxxx |
xxxx |
xxxx |
Recommend: Define Right side per-board
Function
# |
1 |
2 |
3 |
4 |
1 |
F1 |
F2 |
F3 |
F4 |
2 |
F5 |
F6 |
F7 |
F8 |
3 |
F9 |
F10 |
F11 |
F12 |
Media
# |
1 |
2 |
3 |
4 |
5 |
1 |
AuOn |
MiOn |
MuOn |
Brm+ |
Vol+ |
2 |
AuOff |
MiOff |
MuOff |
Brm- |
Vol- |
3 |
Play |
Stop |
Next |
Prev |
Mute |
Nav
# |
RI+ |
RI |
RM |
RR |
RP |
1 |
Pg Up |
Home |
Wh Dn |
Wh Up |
End |
2 |
Pg Dn |
Left |
Down |
Up |
Right |
3 |
xxxx |
xxxx |
xxxx |
xxxx |
xxxx |
Numpad
X Y
indicates the character X
on keypress and character Y
on shift
keypress
- Second table shows characters with
alt
keypress
# |
RI+ |
RI |
RM |
RR |
RP |
1 |
Del |
7 & |
8 _ |
9 ( |
|
2 |
- _ |
4 $ |
5 % |
6 ^ |
* |
3 |
= + |
1 ! |
2 @ |
3 # |
, < |
4 |
|
0 ) |
. > |
|
|
# |
RI+ |
RI |
RM |
RR |
RP |
1 |
|
¶ ‡ |
• ° |
ª · |
« » |
2 |
– — |
¢ › |
∞ fi |
§ fl |
° ° |
3 |
≠ ± |
¡ ⁄ |
™ € |
£ ‹ |
≤ ¯ |
4 |
|
|
º ‚ |
|
|
Symbols
# |
LP |
LR |
LM |
LI |
LI+ |
1 |
~ |
` |
( |
) |
|
2 |
LGUI |
LALT |
[ ° |
] ° |
_ - |
3 |
xxxx |
xxxx |
{ |
} |
LSFT |
- °: Home row modifiers on tap-hold (GACS, SCAG)
VIM
# |
LP |
LR |
LM |
LI |
LI+ |
1 |
Q° |
W° |
: |
|
|
Typical Layers
My keymaps typically use the following layers.
# |
Name |
Via |
Left |
Right |
0 |
Colemak DH |
Adjust |
|
|
1 |
QWERTY |
Adjust |
|
|
2 |
Mouse |
tap-dance |
n/a |
n/a |
3 |
Lower |
L home thumb |
symbols |
numpad |
4 |
Raise |
L outer thumb |
|
|
5 |
Nav |
R home thumb |
home mods |
nav |
6 |
Adjust |
tap-dance |
RGB |
MEDIA |