-
-
Notifications
You must be signed in to change notification settings - Fork 32
/
_eD_Remap.ini
290 lines (271 loc) · 29.9 KB
/
_eD_Remap.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
;
;; ============================================================================================================================================================
;; Remap definitions
;; for EPiKaL Portable Keyboard Layout (EPKL) by Øystein "DreymaR" Bech-Aase (2015-), based on PKL by Máté Farkas (2008-2010).
;; ============================================================================================================================================================
;
;; This file provides remap cycles for compatibility and ergonomic mods.
;; It usually goes in the ./Files folder and is used by EPKL.exe.
;; NOTE: Help images are not updated automatically. You have to run the Help Image Generator (which requires Inkscape) for that.
;
;; Remap notes:
;; - There are remap loops/permutations/cycles, and a section of remaps referring to them.
;; - The keys to the right of the main block can be left out of a map if unused.
;
;; - Depending on context, key codes can be referred to by scan code (SC), virtual key code (VK) or other handy formats such as my KeyLayoutMap (KLM) codes.
;; - The KLM codes are 2 characters long for letters/numbers and 3 for others. For SC, use QW### or Co### as desired. For VK, vc### is a synonym for QW###.
;; - There's a VK table using VK## for long names and names for shorter ones. Abbreviations explained in comments.
;; - The default table uses ANSI VK_OEM codes. ISO VK_OEM codes vary a lot depending on locale, so they're less than reliable.
;; - SC/VK/KLM entries are case agnostic. EPKL converts them to upper case internally.
;
[KeyLayoutMap]
;; These key maps are used in cycles below. A key remap cycle will be converted from the chosen map type (specified at the start of the cycle) to SC.
;; 'Enhanced 101/102-key' (type 4 keyboard). VirtualKey, ScanCode and Colemak alias mappings.
;; XX======+======+======+======+======+======+======+======+======+======+======+======+======XX======+======XX======+======+======XX======+======+======+======XX
;; ||Esc |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10 |F11 |F12 ||Back |Menu ||PrtSc |ScrLk |Pause ||NumLk |KP / |KP * |KP - ||
VK0 ="ESCAPE| F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 || BACK | APPS || vk2c |SCROLL|PAUSE || vk90 | vk6f | vk6a | vk6d |"
SC0 ="sc001 |sc03b |sc03c |sc03d |sc03e |sc03f |sc040 |sc041 |sc042 |sc043 |sc044 |sc057 |sc058 ||sc00e |sc15d ||sc137 |sc046 |sc045 ||sc145 |sc135 |sc037 |sc04a |"
Co0 =" ESC | _F1 | _F2 | _F3 | _F4 | _F5 | _F6 | _F7 | _F8 | _F9 | F10 | F11 | F12 || BSP | APP || PSC | SLK | PAU || NLK | PDV | PMU | PMN |"
;; XX======+======+======+======+======+======+======+======+======+======+======+======+======XX======+======XX======+======+======XX------+------+------+------XX
;; ||` |1 |2 |3 |4 |5 |6 |7 |8 |9 |0 |- |= ||LShft |RShft ||Ins |Home |PgUp ||KP 7 |KP 8 |KP 9 |KP + ||
VK1 ="OEM_3 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | vkbd | vkbb ||LSHIFT|RSHIFT||INSERT| HOME |PRIOR || vk67 | vk68 | vk69 | vk6b |"
SC1 ="sc029 |sc002 |sc003 |sc004 |sc005 |sc006 |sc007 |sc008 |sc009 |sc00a |sc00b |sc00c |sc00d ||sc02a |sc136 ||sc152 |sc147 |sc149 ||sc047 |sc048 |sc049 |sc04e |"
Co1 =" _GR | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _0 | _MN | _PL || LSH | RSH || INS | HOM | PGU || P_7 | P_8 | P_9 | PPL |"
;; XX------+------+------+------+------+------+------+------+------+------+------+------+------XX------+------XX------+------+------XX------+------+------+------XX
;Cmk||Tab |Q |W |F |P |G |J |L |U |Y |; |[ |] ||LCtrl |RCtrl ||Del |End |PgDn ||KP 4 |KP 5 |KP 6 |KPEnt ||
VK2 =" TAB | Q | W | E | R | T | Y | U | I | O | P |OEM_4 |OEM_6 || vka2 | vka3 ||DELETE| END | NEXT || vk64 | vk65 | vk66 | vk0d |"
SC2 ="sc00f |sc010 |sc011 |sc012 |sc013 |sc014 |sc015 |sc016 |sc017 |sc018 |sc019 |sc01a |sc01b ||sc01d |sc11d ||sc153 |sc14f |sc151 ||sc04b |sc04c |sc04d |sc11c |"
Co2 =" TAB | _Q | _W | _F | _P | _G | _J | _L | _U | _Y | _SC | _LB | _RB || LCT | RCT || DEL | END | PGD || P_4 | P_5 | P_6 | PEN |"
;; XX------+------+------+------+------+------+------+------+------+------+------+------+------XX------+------XX======+======+======XX------+------+------+------XX
;Cmk||Caps |A |R |S |T |D |H |N |E |I |O |' |\ ||LGUI |RGUI ||VolDn |Up |VolUp ||KP 1 |KP 2 |KP 3 |Mute ||
VK3 =" vk14 | A | S | D | F | G | H | J | K | L |OEM_1 |OEM_7 |OEM_5 || LWIN | RWIN || vkaf | UP | vkae || vk61 | vk62 | vk63 | vkad |"
SC3 ="sc03a |sc01e |sc01f |sc020 |sc021 |sc022 |sc023 |sc024 |sc025 |sc026 |sc027 |sc028 |sc02b ||sc15b |sc15c ||sc130 |sc148 |sc12e ||sc04f |sc050 |sc051 |sc120 |"
Co3 =" CLK | _A | _R | _S | _T | _D | _H | _N | _E | _I | _O | _QU | _BS || LWI | RWI || VLD | _UP | VLU || P_1 | P_2 | P_3 | MUT |"
;; XX------+------+------+------+------+------+------+------+------+------+------+------+------XX------+------XX------+------+------XX------+------+------+------XX
;Cmk||LS/GT |Z |X |C |V |B |K |M |, |. |/ |Enter |Space ||LAlt |RAlt ||Left |Down |Right ||KP 0 |KP . |Power |Sleep ||
VK4 =" vke2 | Z | X | C | V | B | N | M | vkbc | vkbe |OEM_2 |RETURN|SPACE ||LMENU |RMENU || LEFT | DOWN |RIGHT || vk60 | vk6e |POWER |SLEEP |"
SC4 ="sc056 |sc02c |sc02d |sc02e |sc02f |sc030 |sc031 |sc032 |sc033 |sc034 |sc035 |sc01c |sc039 ||sc038 |sc138 ||sc14b |sc150 |sc14d ||sc052 |sc053 |sc15e |sc15f |"
Co4 =" _LG | _Z | _X | _C | _V | _B | _K | _M | _CM | _PD | _SL | ENT | SPC || LAL | RAL || _LE | _DN | _RI || P_0 | PDC | PWR | SLP |"
;; XX======+======+======+======+======+======+======+======+======+======+======+======+======XX======+======XX======+======+======XX======+======+======+======XX
;; VK general abbreviations: 14-CAPITAL, 2c-SNAPSHOT, e2-OEM_102, [a2-a3]-#CONTROL, bb-OEM_PLUS, bc-OEM_COMMA, bd-OEM_MINUS, be-OEM_PERIOD, df-OEM_8 (not on ANSI)
;; VK NumPad abbreviations: [60-69]-NUMPAD#, 6a-MULTIPLY, 6b-ADD, 6c-SEPARATOR ("comma"), 6d-SUBTRACT, 6e-DECIMAL, 6f-DIVIDE, 90-NUMLOCK. 0d-RETURN (both Enters).
;; Other key codes: SC146 = CtrlBrk; SC054 = SysReq; SC163 = Wake. These and Power/Sleep may not work well on all systems.
;; The SharpKeys program and/or the AHK Key History may be used to find yet other codes, such as App/Media keys, SC07D = ¥, SC073 = ABNT_C1, SC07e = ABNT_C2...
;; These are other KeyLayoutMap variants with positional information and full-length maps. You can use them in remap cycles.
;; * QWERTY labeled Co-like KeyLayoutMap. In remap cycles, use each entry as is (specifying QW as the first entry). In key names, use QW### where ### is the entry.
;; XX======+======+======+======+======+======+======+======+======+======+======+======+======XX======+======XX======+======+======XX======+======+======+======XX
QW0 =" ESC | _F1 | _F2 | _F3 | _F4 | _F5 | _F6 | _F7 | _F8 | _F9 | F10 | F11 | F12 || BSP | APP || PSC | SLK | PAU || NLK | PDV | PMU | PMN |"
QW1 =" _GR | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _0 | _MN | _PL || LSH | RSH || INS | HOM | PGU || P_7 | P_8 | P_9 | PPL |"
QW2 =" TAB | _Q | _W | _E | _R | _T | _Y | _U | _I | _O | _P | _LB | _RB || LCT | RCT || DEL | END | PGD || P_4 | P_5 | P_6 | PEN |"
QW3 =" CLK | _A | _S | _D | _F | _G | _H | _J | _K | _L | _SC | _QU | _BS || LWI | RWI || VLD | _UP | VLU || P_1 | P_2 | P_3 | MUT |"
QW4 =" _LG | _Z | _X | _C | _V | _B | _N | _M | _CM | _PD | _SL | ENT | SPC || LAL | RAL || _LE | _DN | _RI || P_0 | PDC | PWR | SLP |"
;; XX======+======+======+======+======+======+======+======+======+======+======+======+======XX======+======XX======+======+======XX======+======+======+======XX
;;
;; * Colemak labeled TMK-like KeyLayoutMap.
;; XX======+======+======+======+======+======+======+======+======+======+======+======+======XX======+======XX======+======+======XX======+======+======+======XX
TC0 =" ESC_ | _F1_ | _F2_ | _F3_ | _F4_ | _F5_ | _F6_ | _F7_ | _F8_ | _F9_ | _F10 | _F11 | _F12 || BSPC | APP_ || PSCR | SCLK | PAUS || NLCK | PSLS | PAST | PMNS |"
TC1 =" N0GR | N1_1 | N2_2 | N3_3 | N4_4 | N5_5 | N6_6 | N7_7 | N8_8 | N9_9 | Na_0 | NbMN | NcPL || LSFT | RSFT || INS_ | HOME | PGUP || _P7_ | _P8_ | _P9_ | PPLS |"
TC2 =" TAB_ | U1_Q | U2_W | U3_F | U4_P | U5_G | U6_J | U7_L | U8_U | U9_Y | UaSC | UbLB | UcRB || LCTL | RCTL || DEL_ | END_ | PGDN || _P4_ | _P5_ | _P6_ | PENT |"
TC3 =" CAPS | H1_A | H2_R | H3_S | H4_T | H5_D | H6_H | H7_N | H8_E | H9_I | Ha_O | HbQU | HcBS || LGUI | RGUI || VOLD | _UP_ | VOLU || _P1_ | _P2_ | _P3_ | MUTE |"
TC4 =" L0LG | L1_Z | L2_X | L3_C | L4_V | L5_B | L6_K | L7_M | L8CM | L9PD | LaSL | ENT_ | SPC_ || LALT | RALT || LEFT | DOWN | RGHT || _P0_ | PDEC | PWR_ | SLEP |"
;; XX======+======+======+======+======+======+======+======+======+======+======+======+======XX======+======XX======+======+======XX======+======+======+======XX
;;
;; * QWERTY labeled TMK-like KeyLayoutMap.
;; XX======+======+======+======+======+======+======+======+======+======+======+======+======XX======+======XX======+======+======XX======+======+======+======XX
TQ0 =" ESC_ | _F1_ | _F2_ | _F3_ | _F4_ | _F5_ | _F6_ | _F7_ | _F8_ | _F9_ | _F10 | _F11 | _F12 || BSPC | APP_ || PSCR | SCLK | PAUS || NLCK | PSLS | PAST | PMNS |"
TQ1 =" N0GR | N1_1 | N2_2 | N3_3 | N4_4 | N5_5 | N6_6 | N7_7 | N8_8 | N9_9 | Na_0 | NbMN | NcPL || LSFT | RSFT || INS_ | HOME | PGUP || _P7_ | _P8_ | _P9_ | PPLS |"
TQ2 =" TAB_ | U1_Q | U2_W | U3_E | U4_R | U5_T | U6_Y | U7_U | U8_I | U9_O | Ua_P | UbLB | UcRB || LCTL | RCTL || DEL_ | END_ | PGDN || _P4_ | _P5_ | _P6_ | PENT |"
TQ3 =" CAPS | H1_A | H2_S | H3_D | H4_F | H5_G | H6_H | H7_J | H8_K | H9_L | HaSC | HbQU | HcBS || LGUI | RGUI || VOLD | _UP_ | VOLU || _P1_ | _P2_ | _P3_ | MUTE |"
TQ4 =" L0LG | L1_Z | L2_X | L3_C | L4_V | L5_B | L6_N | L7_M | L8CM | L9PD | LaSL | ENT_ | SPC_ || LALT | RALT || LEFT | DOWN | RGHT || _P0_ | PDEC | PWR_ | SLEP |"
;; XX======+======+======+======+======+======+======+======+======+======+======+======+======XX======+======XX======+======+======XX======+======+======+======XX
;;
;; * QWERTY labeled KMonad-like KeyLayoutMap (https://github.com/kmonad/kmonad). KMonad is a nifty program for cross-platform layout implementation.
;; XX======+======+======+======+======+======+======+======+======+======+======+======+======XX======+======XX======+======+======XX======+======+======+======XX
KM0 =" ESC_ | _F1 | _F2 | _F3 | _F4 | _F5 | _F6 | _F7 | _F8 | _F9 | F10 | F11 | F12 || BSPC | APP_ || PSCR | SCLK | SSRQ || NLCK | KP/_ | KP*_ | KP-_ |"
KM1 =" GRV_ | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _0 | _MN | _PL || LSFT | RSFT || INS_ | HOME | PGUP || KP7_ | KP8_ | KP9_ | PPLS |"
KM2 =" TAB_ | _Q | _W | _E | _R | _T | _Y | _U | _I | _O | _P | _LB | _RB || LCTL | RCTL || DEL_ | END_ | PGDN || KP4_ | KP5_ | KP6_ | KPRT |"
KM3 =" CAPS | _A | _S | _D | _F | _G | _H | _J | _K | _L | _SC | _QU | _BS || LMET | RMET || VOLD | _UP_ | VOLU || KP1_ | KP2_ | KP3_ | MUTE |"
KM4 =" 102D | _Z | _X | _C | _V | _B | _N | _M | _CM | _PD | _SL | RET | SPC || LALT | RALT || LEFT | DOWN | RGHT || KP0_ | KP._ | PWR_ | SLEP |"
;; XX======+======+======+======+======+======+======+======+======+======+======+======+======XX======+======XX======+======+======XX======+======+======+======XX
;;
;; * XKB key alias table. The main block is purely positional and therefore layout agnostic.
;; XX======+======+======+======+======+======+======+======+======+======+======+======+======XX======+======XX======+======+======XX======+======+======+======XX
XK0 =" ESC | FK01 | FK02 | FK03 | FK04 | FK05 | FK06 | FK07 | FK08 | FK09 | FK10 | FK11 | FK12 || BKSP | MENU || PRSC | SCLK | PAUS || NMLK | KPDV | KPMU | KPSU |"
XK1 =" TLDE | AE01 | AE02 | AE03 | AE04 | AE05 | AE06 | AE07 | AE08 | AE09 | AE10 | AE11 | AE12 || LFSH | RTSH || INS | HOME | PGUP || KP7 | KP8 | KP9 | KPAD |"
XK2 =" TAB | AD01 | AD02 | AD03 | AD04 | AD05 | AD06 | AD07 | AD08 | AD09 | AD10 | AD11 | AD12 || LCTL | RCTL || DELE | END | PGDN || KP4 | KP5 | KP6 | KPEN |"
XK3 =" CAPS | AC01 | AC02 | AC03 | AC04 | AC05 | AC06 | AC07 | AC08 | AC09 | AC10 | AC11 | BKSL || LWIN | RWIN || VOL- | UP | VOL+ || KP1 | KP2 | KP3 | MUTE |"
XK4 =" LSGT | AB01 | AB02 | AB03 | AB04 | AB05 | AB06 | AB07 | AB08 | AB09 | AB10 | RTRN | SPCE || LALT | RALT || LEFT | DOWN | RGHT || KP0 | KPDL | POWR | I150 |"
;; XX======+======+======+======+======+======+======+======+======+======+======+======+======XX======+======XX======+======+======XX======+======+======+======XX
[Remaps]
;; Remap syntax: Each remap is a comma separated (CSV) list of permutation cycles marked with ^.
;; - <remap> without ^ includes another map. <remap> + ^<cycle> etc merges cycles/remaps.
;; - Note that merged cycles/remaps must all be of the same KeyLayMap type (e.g., "Co").
;; - Layout files may use the same syntax as these remaps.
Angle_ISO = ^Angle_ISO105
Angle_ANS = ^Angle_ANSI-Z
Wide_ISO = ^Wide7_Number , ^Wide__Upper_ , ^Wide__HomeRB + ^WidSL_Lower_ ;Wide_Slash for ISO
Wide_ANS = ^Wide7_Number , ^Wide__Upper_ , ^Wide__HomeRB , ^WidQU_Lower_ ;Wide_Quote for ANS
AWing_ANS = ^AWing_Number , ^AWing_Upper_ , ^AWing_HomeRB , ^WidQU_Lower_ ;Angle-Wing for ANS
AWide_ISO = Angle_ISO , Wide_ISO
AWide_ANS = Angle_ANS , Wide_ANS
A-S_ISO = Sym_ISO , Angle_ISO
A-S_ANS = Sym_ANS , Angle_ANS
AWS_ISO = SymQMW_ISO , AWide_ISO ; Note: This remap is for optimized layouts with a semicolon or similar above the home row.
AWS_ANS = SymQMW_ANS , AWide_ANS ; Hence, it does remap the QW _P (Co _SC) key.
Cmk-CA--_ISO = Cmk-Curl-DH , Angle_ISO ; The CAWS shorthand is used here for the Cmk-Curl(DH) mods. For the geometric mods A/W alone, not.
Cmk-CA--_ANS = Cmk-Curl-DH , Angle_ANS
Cmk-CA-S_ISO = Cmk-Curl-DH , Angle_ISO , Sym_ISO
Cmk-CA-S_ANS = Cmk-Curl-DH , Angle_ANS , Sym_ANS
Cmk-CAW-_ISO = Cmk-Curl-DH , AWide_ISO
Cmk-CAW-_ANS = Cmk-Curl-DH , AWide_ANS
Cmk-CkAW-_ISO = Cmk-Curl-DHk , AWide_ISO ; The old DH 2107–2020 standard, superseded by DH(m). Use it if you "must".
Cmk-CkAW-_ANS = Cmk-Curl-DHk , AWide_ANS
Cmk-CAWS_ISO = Cmk-Curl-DH , SymQMW_ISO , AWide_ISO ; NOTE: Sequence matters here. Can't remap to Sym after Wide in my implementation.
Cmk-CAWS_ANS = Cmk-Curl-DH , SymQMW_ANS , AWide_ANS
Cmk-CkAWS_ISO = Cmk-Curl-DHk , SymQMW_ISO , AWide_ISO ; The old DH(k) standard, superseded by DH(m).
Cmk-CkAWS_ANS = Cmk-Curl-DHk , SymQMW_ANS , AWide_ANS
Ext-CA--_ISO = V-B , Angle_ISO ; Extend-Paste (Ctrl+V) usually follows the V key in Colemak-Curl(DH) - a V-B swap from the Angle mod
Ext-CA--_ANS = V-B , Angle_ANS
Ext-CA-S_ISO = Ext-CA--_ISO
Ext-CA-S_ANS = Ext-CA--_ANS
Ext-CAW-_ISO = V-B , AWide_ISO ; Extend-Paste (Ctrl+V) usually follows the V key in Colemak-Curl(DH) - a V-B swap from the Angle mod
Ext-CAW-_ANS = V-B , AWide_ANS
Ext-CAWS_ISO = V-B , SL-BS , AWide_ISO ; The Slash-Backspace swap from ISO-CAWS brings the WheelLeft/Right keys next to each other
Ext-CAWS_ANS = Ext-CAW-_ANS
Cmk-Curl-DH = ^CurlDH_L_Std , ^CurlDH_R_DHm ; The M-on-homerow original DH(m) mod was (re)installed as DH standard in Oct 2020
Cmk-Curl-DHk = ^CurlDH_L_Std , ^CurlDH_R_DHk ; The K-on-homerow DHk variant was the DH standard from 2017 to 2020
Cmk-Curl-DpgH = ^CurlDH_L_Dpg , ^CurlDH_R_DHm ; The D>P>G loop is a "poor man's DH" variant leaving the bottom left half row alone
Cmk-Curl-DpH = ^CurlDH_L_Dp , ^CurlDH_R_DHm ; The D>P swap is Shai's DH variant: https://forum.colemak.com/topic/2644-shais-colemak-mod/
Sym_ISO = ^SymQu , ^SymMn_LB ; DreymaR's Symbol Rotation mod (non-Wide variant, with left bracket lift) for optimized layouts
Sym_ANS = Sym_ISO
SymQM-Br = ^SymQu , ^SymMn_Br ; The old non-Wide Symbol Rotation, lifting both brackets. Good for ortho/matrix boards?
SymQMW_ISO = ^SymQu , ^SymMnW_ISO ; DreymaR's Symbol Rotation (both QU-SC and MN loop, better for Wide layouts)
SymQMW_ANS = ^SymQuMnW_ANS ; DreymaR's Symbol Rotation (ANSI 1-loop variant for Wide, w/ SC on BS)
SymMn-LB = ^SymMn_LB ; DreymaR's Symbol Rotation, Mn part only (non-Wide, Left-Bracket-Lift variant)
SymMnW_ISO = ^SymMnW_ISO ; DreymaR's Symbol Rotation, Mn part only (Wide-ISO), for some layouts (APT, Semimak, ...)
SymMnW_ANS = ^SymMnW_ANS ; DreymaR's Symbol Rotation, Mn part only (Wide-ANSI) --"--
V-B = ^Swap_V_B ; Swap V-B so CurlDH Ext+V follows V by swapping V and D, as Curl-DH puts D on the B key
V-K = ^Swap_V_K ; Swap V-K to remove the KN/NK and KL/LK same-finger bigrams... But beware of CK and VE getting worse! ++?
SL-BS = ^Swap_SL_BS ; For Wide-ISO Extend, swap / - \ to get WhLe/WhRi together
J-Z = ^Swap_J_Z ; Swapping J and Z can sometimes be useful although they're both rare? See, e.g., the Cmk-eD-Cz variant.
O-U = ^Swap_O_U ; Swap O-U; suggested by some when worried about the `EU` SFB in, e.g., the Cmk-eD-Es variant.
Y-Z = ^Swap_Y_Z ; Swap Y-Z to convert positions between QWERTY and QWERTZ (Germany etc.)
;QW-AZ = ^Swap_QWE_AZE ; Swap A-Q, W-Z and M-SC(?) to convert roughly between QWERTY and AZERTY (France).
;; eD WIP: Do the AZERTY M-SC-CM-PD-etc stuff by layout VKey maps?
QWERTY = ^Tarmak_Rev_E + Tarmak-1 ; QWERTY, somewhat amusingly, is implemented here as the last of the reverse Tarmak steps!
Tarmak-1 = ^Tarmak_Rev_T + Tarmak-2
Tarmak-2 = ^Tarmak_Rev_R + Tarmak-3
Tarmak-3 = ^Tarmak_Rev_O , Tarmak-4
Tarmak-4 = ^Tarmak_Rev_I
Tmk-1C_ISO = Tarmak-1 , ^CurlDH_R_DHm ; Using the DH(m) mod, one may actually choose freely when to implement the right-hand side.
Tmk-2C_ISO = Tarmak-2 , Cmk-Curl-DH ; At Tm2, it's good to get the Angle mod in place. Use, e.g., 'Tmk-2C_@K,Angle_@K' in Layout.ini.
Tmk-3C_ISO = Tarmak-3 , Cmk-Curl-DH ; A Tm1, Tm1C, (Tm1CA,) Tm2C(A) starting progression is the most careful; maybe too much for most.
Tmk-4C_ISO = Tarmak-4 , Cmk-Curl-DH
Tmk-1C_ANS = Tarmak-1 , ^CurlDH_R_DHm
Tmk-2C_ANS = Tarmak-2 , Cmk-Curl-DH
Tmk-3C_ANS = Tarmak-3 , Cmk-Curl-DH
Tmk-4C_ANS = Tarmak-4 , Cmk-Curl-DH
Dvorak = ^Dvorak_Loop1 , ^Dvorak_Loop2 + ^Dvk_NormSym3 ; Standard Dvorak
Dvk-AWi_ISO = ^Dvorak_Loop1 , ^Dvorak_Loop2 + ^Dvk_WideISO3 , AWide_ISO ; Dvorak AngleWide
Dvk-AWi_ANS = ^Dvorak_Loop1 , ^Dvorak_Loop2 + ^Dvk_WideANS3 , AWide_ANS
Dvk-CA_ISO = ^Dvk_Curl-ID , Dvorak , Angle_ISO ; Dvorak-CA (Curl-ID-Angle)
Dvk-CA_ANS = ^Dvk_Curl-ID , Dvorak , Angle_ANS
Dvk-CAW_ISO = ^Dvk_Curl-ID , Dvk-AWi_ISO ; Dvorak-CAW
Dvk-CAW_ANS = ^Dvk_Curl-ID , Dvk-AWi_ANS
Dvk-CAWS_ISO = ^Dvk_Curl-ID , Dvk-sym , ^Dvk_WSym_ISO , AWide_ISO ; #@ kept together, BS on num row
Dvk-CAWS_ANS = ^Dvk_Curl-ID , Dvk-sym , ^Dvk_WSym_ANS , AWide_ANS ; #@ kept together, MN on home row
Dvk-Sym = ^SymQu , Dvorak , ^DvkPrgSymNum , ^AWing_Number ; The Programmer Dvorak Symbols mod
[RemapCycles]
;; Remap cycles are pipe delimited like a KeyLayoutMap. Several slash separated cycles can be defined in one cycle entry, for a more compact notation.
;; The first entry determines map type (Co, QW etc) and >(L-R)/<(R-L) order (TODO).
;; eD TODO: Order isn't implemented yet! Is it necessary? I've just reversed some cycles manually for now.
Angle_ISO105 = Co> | _B | _V | _C | _X | _Z | _LG |
Angle_ANSI-Z = Co> | _B | _V | _C | _X | _Z |
CurlDH_L_Std = Co> | _D | _V | _B | _G | ; SteveP99's DH-Left standard mod.
CurlDH_L_Dbg = Co> | _D | _B | _G | ; DreymaR's 2014 DvH_L mod: Keep ZXCV, use down-in instead of down-out positions.
CurlDH_L_Dpg = Co> | _D | _P | _G | ; Stevep99's DH-Left D>P>G alternative, leaving V alone but with a poorer D position.
CurlDH_L_Dp = Co> | _D | _P | ; Shai's D>P DH-Left variant for leaving V alone.
CurlDH_R_DHm = Co> | _H | _M | ; SteveP99's DH-Right 2014 mod, good on matrix boards, now standard.
CurlDH_R_DHk = Co> | _H | _M | _K | ; The 2017 standard DHk-Right mod, good on row-staggered boards (but DHm is also good).
CurlDH_R_vHk = Co> | _H | _K | ; DreymaR's 2014 DvH_R mod. For the full Colemak-DvH variant, use this with L_Dbg.
;; Cmk-CAS-ISO Cmk-CAW-ISO Colemak-CAWS-ISO Cmk-CAW-ANSI Cmk-CAWS-ANSI
;; -----------------+ -----------------+ +----------------------------+ -----------------+ -----------------+
;; 6 7 8 9 0 = [ | = 6 7 8 9 0 - | | 1 2 3 4 5 6 \ 7 8 9 0 = | = 6 7 8 9 0 - | 6 \ 7 8 9 0 = |
;; j l u y ' - ] | [ j l u y ; / | | q w f p b [ j l u y ' - | [ j l u y ; ' \ | [ j l u y ' - ; |
;; m n e i o ; \ | ] m n e i o ' | | a r s t g ] m n e i o ; | ] m n e i o | ] m n e i o |
;; _ k h , . / | _ \ k h , . | | z x c d v _ / k h , . | z / k h , . | z / k h , . |
;; -----------------+ -----------------+ +----------------------------+ -----------------+ -----------------+
;; In the Sym remap loops below, I've elected to stick with Colemak remappings. These are like their QWERTY counterparts, except that Co SC is on QW _P.
SymMn_LB = Co> | _MN | _LB | _PL | ; Symbol mod non-Wide partial, lifting LB only ( PL LB / MN RB ); new non-Wide Sym-Mn.
SymMn_Br = Co> | _MN | _LB / _PL | _RB | ; Symbol mod non-Wide partial, lifting LB + RB ( LB RB / MN PL ); old non-Wide Sym-Mn.
SymQu = Co> | _QU | _SC | ; DreymaR's SymKey rotation ( ' → ; ) for a better quote pos; Sym-Qu (Cmk etc).
SymMnW_ISO = Co> | _SL | _BS | _PL | _MN | ; DreymaR's SymKey rotation ( - → / → \ → = ) for the hyphen; Sym-Mn for Wide-ISO.
SymMnW_ANS = Co> | _QU | _BS | _PL | _MN | ; DreymaR's SymKey rotation ( ' → \ → = → - ); Sym-Mn for W-ANSI alt (leaves SC). APT, Semimak...
SymQuMnW_ANS = Co> | _QU | _SC | _BS | _PL | _MN | ; DreymaR's SymKey rotation ( ' → ; → \ → = → - ); Sym-QuMn for Wide-ANSI (Cmk etc).
SymQuMn1_ANS = Co> | _QU | _SC | _SL | _PL | _MN | ; DreymaR's SymKey rotation ( ANS var: ' → ; → / → = → - ); old Sym-QuMn-W for ANSI (leaves BS).
Swap_V_B = QW> | _V | _B | ; Swap V and B (for Curl-DH Extend)
Swap_SL_BS = QW> | _SL | _BS | ; Swap / and \ (for Wide-ISO Extend WheelLeft/Right keys)
Swap_V_K = Co> | _V | _K | ; Swap V and K (Cmk). Ostensibly the best single swap from Cmk-DH, but...? Fixes KN/NK & KL/LK SFBs.
Swap_J_Z = Co> | _J | _Z | ; Swap J and Z (Cmk; suggested for Czech Cmk-Cz_ANSI?)
Swap_O_U = Co> | _O | _U | ; Swap O and U (Cmk; suggested for Spanish Cmk-Es?)
Swap_Y_Z = QW> | _Y | _Z | ; Swap Y-Z to convert between QWERTY and QWERTZ (Germany etc.)
Swap_QWE_AZE = QW> | _A | _Q / _W | _Z / _M | _SC | ; Swap A-Q, W-Z and M-SC to convert roughly between QWERTY and AZERTY (France)
Wide6_Number = Co> | _6 | _7 | _8 | _9 | _0 | _MN | _PL | ; TC> | N6_6 | N7_7 | N8_8 | N9_9 | Na_0 | NbMN | NcPL |
Wide7_Number = Co> | _7 | _8 | _9 | _0 | _MN | _PL | ; TC> | N7_7 | N8_8 | N9_9 | Na_0 | NbMN | NcPL |
Wide__Upper_ = TC> | U6_J | U7_L | U8_U | U9_Y | UaSC | UbLB | ; All RHKs on row U except RB (RHK: Right-Hand Key, except wide ones)
Wide__HomeRB = TC> | UcRB | H6_H | H7_N | H8_E | H9_I | Ha_O | HbQU | ; All RHKs on row H except BS, RB from row U
WidSL_Lower_ = TC> | HcBS | L6_K | L7_M | L8CM | L9PD | LaSL | ; All RHKs on row L , BS from row H for Wide_ISO
WidQU_Lower_ = TC> | L6_K | L7_M | L8CM | L9PD | LaSL | ; All RHKs on row L for Wide_ANS (and AWing_ANS)
AWing_Number = Co> | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _0 | _MN | _PL |
AWing_Upper_ = TC> | U1_Q | U2_W | U3_F | U4_P | U5_G | U6_J | U7_L | U8_U | U9_Y | UaSC | UbLB |
AWing_HomeRB = TC> | H1_A | H2_R | H3_S | H4_T | H5_D | H6_H | H7_N | H8_E | H9_I | Ha_O | HbQU | UcRB |
;; Since my layouts are Colemak-centric, the Tarmak_Rev progression is backwards from Cmk[eD] to QWERTY like in my XKB files.
;; The five Tarmak loop elements are: L>U>I J>Y>O>;>P > R>S>D > G>T>F > E>K>N
Tarmak_Rev_E = Co> | _N | _K | _E | ; QW> | _E | _K | _N | _J |
Tarmak_Rev_T = Co> | _F | _T | _G | ; QW> | _G | _T | _F |
Tarmak_Rev_R = Co> | _D | _S | _R | ; QW> | _R | _S | _D |
Tarmak_Rev_O = Co> | _P | _SC | _O | _Y | _J | ; QW> | _Y | _O | _SC | _P |
Tarmak_Rev_I = Co> | _I | _U | _L | ; QW> | _L | _U | _I |
;; The Dvorak layout will also be implemented here as a remap from Colemak, a little for fun. Normal users shouldn't notice.
;; Heatmap (from Thomas alias Ioboru): G 13.1 / F 12.1 / D 11.4 / RSh 11.0 / P 10.7 / B 9.9 / LSh 9.1 / , 8.3 / . 6.6
;Dvorak_Swaps = QW> | _RB | _PL / _W | _CM | ; Ioboru's loops from QWERTY (2/2/14/15 keys)
;Dvorak_Loop1 = QW> | _E | _D | _H | _J | _C | _I | _G | _U | _F | _Y | _T | _K | _V | _PD |
;Dvorak_Loop2 = QW> | _Q | _X | _B | _N | _L | _P | _R | _O | _S | _SC | _Z | _SL | _LB | _MN | _QU |
Dvorak_Loop1 = Co> | _I | _D | _H | _N / _W | _CM | ; Going from Colemak, there's a 4-loop and 2 swaps, then the big loop
Dvorak_Loop2 = Co> | _Q | _X | _B | _K | _V | _PD | _F | _J | _C | _U | _T | _E | _S | _O | _R | _Y | _G | _L | _SC | _Z |
Dvk_NormSym3 = Co> | _SL | _LB | _MN | _QU / _RB | _PL | ; The rest of the big loop and a sym swap, for normal Dvorak
Dvk_WideISO3 = Co> | _BS | _PL | _MN | _QU | ; For Wide(ISO) Dvorak symbols, using the Wide_Slash remap
Dvk_WideANS3 = Co> | _SL | _PL | _MN | _QU | ; For Wide(ANSI) Dvorak symbols, using the Wide_Quote remap
Dvk_Curl-ID = Co> | _I | _U | _K | _X / _D | _M | _B | _F | ; DreymaR's Dvorak Curl mod, bettering IU and DF positions
Dvk_WSym_ISO = QW> | _PL | _LB | _SL | _BS | ; Prog-Dvk Symbols for WideSym-ISO ; eD WIP: PL #`, LB /?, SL zZ; RB @^, QU -_
Dvk_WSym_ANS = QW> | _RB | _LB | _QU | ; Prog-Dvk Symbols for WideSym-ANSI ; (after Dvk-Sym)
DvkPrgSymNum = QW> | _1 | _4 | _8 | _0 | _6 | _9 | _5 | _2 | _7 | ; Programmer Dvorak num row: &75319 02468#. Swap QU <> SC too.
;; VirtualKey remaps follow the same general syntax as others, but are applied to VK entries. Complex, since different ISO locales use different codes!
;; - KLM vc_## VKs: | SC | GR | BS | SL | MN | PL | LB | RB | LG | QU | bd=MN, bb=PL, bc=CM, be=PD |
;; - ANSI OEM_# VKs: | ;: 1 | `~ 3 | \| 5 | /? 2 | -_ - | =+ + | [{ 4 | ]} 6 | vke2 | '" 7 | vkbd MINUS | vkbb PLUS | vkdf OEM_8 |
;; - ISO-Sc OEM_# VKs: | ;: 3 | `~ 5 | \| 2 | /? - | -_ + | =+ 4 | [{ 6 | ]} 1 | _ 102 | '" 7 | vkbc COMMA | vkbe PERIOD | (UK non-ANS) |
;VK_ANSI2ISOSc = VK> | OEM_1 | OEM_3 | OEM_5 | OEM_2 | vkbd | vkbb | OEM_4 | OEM_6 | ; This remap cycle isn't in use
;VK_ISOSc2ANSI = VK> | OEM_6 | OEM_4 | vkbb | vkbd | OEM_2 | OEM_5 | OEM_3 | OEM_1 | ; This remap cycle isn't in use
;; ****************************************************************
;; **** VK_OEM key code table (Key and SC for ANSI) ****
;; ****************************************************************
;; KLM : SC PL CM MN PD SL GR LB BS RB QU ?? LG
;; Key : :; += <, _- >. ?/ ~` {[ |\ }] "' §| ><
;; VK OEM_ : _1 PL CM MN PD _2 _3 _4 _5 _6 _7 _8 _102
;; VK hex : BA BB BC BD BE BF C0 DB DC DD DE DF E2
;; SC ANS : 27 0D 33 0C 34 35 29 1A 2B 1B 28 -- 56
;; ****************************************************************
;; **** OEM key codes vs some locales; ISO variations ****
;; ****************************************************************
;; KLM OEM : GR MN PL LB RB BS SC QU LG CM PD SL
;; SC code : 29 0C 0D 1A 1B 2B 27 28 56 33 34 35
;; VK code : C0 BD BB DB DD DC BA DE E2 BC BE BF
;; KLM ANS : _3/MN/PL _4/_6/_5 _1/_7/LG CM/PD/_2 ; KLM ANS default, used by some locales (US,Al,Vi,Br,...?)
;; KLM ISO : _5/PL/_4 _6/_1/_2 _3/_7/LG CM/PD/MN ; KLM ISO-Sc, for Scandinavian locales (Dk,No,Fi,Se)
;; UK : _8/MN/PL _4/_6/_7 _1/_3/_5 CM/PD/_2 ; UK, UK "Extended"
;; De/Es++ : _5/_4/_6 _1/PL/_2 _3/_7/LG CM/PD/MN ; A/Z swap for De QWERTZ. Otherwise as Es. Pt swaps _1/PL.
;; Fr/Be : _7/_4/PL _6/_1/_5 CM/_3/LG PD/_2/_8 ; A/Q W/Z M/CM/... swaps. Be has PL->MN _8->PL.
;; Ca : _7/MN/PL _4/_6/_5 _1/_3/LG CM/PD/_2 ; Canadian "French" and "Multilingual"
;; Cz/Pl++ : _3/PL/_2 _4/_6/_5 _1/_7/LG CM/PD/MN ; Cz, Pl "(214)", Slovenian (swaps _2/PL). Cz "QWERTY" has ANS.
;; Tk : _3/_8/MN _4/_6/CM _1/_7/LG _2/_5/PD ; Turkish "Q"
;; ****************************************************************