Skip to content

Commit 20cef20

Browse files
author
Hrvoje Cavrak
committed
As suggested by @cornfeedhobo, adding support for alternative keyboard layouts.
Slightly reworked, it puts the definitions in a separate header file and uses the preprocessor for the remapping.
1 parent 2132af0 commit 20cef20

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

src/include/keyboard_layouts.h

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
/* ==================================================== *
2+
* Map hotkeys to alternative layouts
3+
* ==================================================== */
4+
5+
/* DVORAK */
6+
#define DVORAK_HID_KEY_A HID_KEY_A
7+
#define DVORAK_HID_KEY_B HID_KEY_N
8+
#define DVORAK_HID_KEY_C HID_KEY_I
9+
#define DVORAK_HID_KEY_D HID_KEY_H
10+
#define DVORAK_HID_KEY_E HID_KEY_D
11+
#define DVORAK_HID_KEY_F HID_KEY_Y
12+
#define DVORAK_HID_KEY_G HID_KEY_U
13+
#define DVORAK_HID_KEY_H HID_KEY_J
14+
#define DVORAK_HID_KEY_I HID_KEY_G
15+
#define DVORAK_HID_KEY_J HID_KEY_C
16+
#define DVORAK_HID_KEY_K HID_KEY_V
17+
#define DVORAK_HID_KEY_L HID_KEY_P
18+
#define DVORAK_HID_KEY_M HID_KEY_M
19+
#define DVORAK_HID_KEY_N HID_KEY_L
20+
#define DVORAK_HID_KEY_O HID_KEY_S
21+
#define DVORAK_HID_KEY_P HID_KEY_R
22+
#define DVORAK_HID_KEY_Q HID_KEY_X
23+
#define DVORAK_HID_KEY_R HID_KEY_O
24+
#define DVORAK_HID_KEY_S HID_KEY_SEMICOLON
25+
#define DVORAK_HID_KEY_T HID_KEY_K
26+
#define DVORAK_HID_KEY_U HID_KEY_F
27+
#define DVORAK_HID_KEY_V HID_KEY_PERIOD
28+
#define DVORAK_HID_KEY_W HID_KEY_COMMA
29+
#define DVORAK_HID_KEY_X HID_KEY_B
30+
#define DVORAK_HID_KEY_Y HID_KEY_T
31+
#define DVORAK_HID_KEY_Z HID_KEY_SLASH
32+
33+
/* COLEMAK */
34+
#define COLEMAK_HID_KEY_A HID_KEY_A
35+
#define COLEMAK_HID_KEY_B HID_KEY_B
36+
#define COLEMAK_HID_KEY_C HID_KEY_C
37+
#define COLEMAK_HID_KEY_D HID_KEY_G
38+
#define COLEMAK_HID_KEY_E HID_KEY_K
39+
#define COLEMAK_HID_KEY_F HID_KEY_E
40+
#define COLEMAK_HID_KEY_G HID_KEY_T
41+
#define COLEMAK_HID_KEY_H HID_KEY_H
42+
#define COLEMAK_HID_KEY_I HID_KEY_L
43+
#define COLEMAK_HID_KEY_J HID_KEY_Y
44+
#define COLEMAK_HID_KEY_K HID_KEY_N
45+
#define COLEMAK_HID_KEY_L HID_KEY_U
46+
#define COLEMAK_HID_KEY_M HID_KEY_M
47+
#define COLEMAK_HID_KEY_N HID_KEY_J
48+
#define COLEMAK_HID_KEY_O HID_KEY_SEMICOLON
49+
#define COLEMAK_HID_KEY_P HID_KEY_R
50+
#define COLEMAK_HID_KEY_Q HID_KEY_Q
51+
#define COLEMAK_HID_KEY_R HID_KEY_S
52+
#define COLEMAK_HID_KEY_S HID_KEY_D
53+
#define COLEMAK_HID_KEY_T HID_KEY_F
54+
#define COLEMAK_HID_KEY_U HID_KEY_I
55+
#define COLEMAK_HID_KEY_V HID_KEY_V
56+
#define COLEMAK_HID_KEY_W HID_KEY_W
57+
#define COLEMAK_HID_KEY_X HID_KEY_X
58+
#define COLEMAK_HID_KEY_Y HID_KEY_O
59+
#define COLEMAK_HID_KEY_Z HID_KEY_Z
60+
61+
/* QWERTY needs no change */
62+
#if KEYBOARD_LAYOUT == 0
63+
#define KBD_REMAP(key) key
64+
65+
/* For DVORAK we prepend DVORAK_ and reference the definitions above */
66+
#elif KEYBOARD_LAYOUT == 1
67+
#define KBD_REMAP(key) DVORAK_##key
68+
69+
/* For COLEMAK we prepend COLEMAK_ and reference the definitions above */
70+
#elif KEYBOARD_LAYOUT == 2
71+
#define KBD_REMAP(key) COLEMAK_##key
72+
#endif

0 commit comments

Comments
 (0)