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 |