-
Notifications
You must be signed in to change notification settings - Fork 0
/
gerdLTGT.klc
328 lines (291 loc) · 13.2 KB
/
gerdLTGT.klc
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
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
// 2010-2017 Jan Pacner <[email protected]>
// etaoin shrdlu!
// The concept of this keyboard layout
// motto: be as much compatible with ISO dvorak as possible
// 4. level is the same as 3. level
// 2. level of ISO dvorak goes without modifications to the 3. level
// the whole national alphabet is accessible directly from 1. and 2. level
// without any exception
// 3. level has some additional non-alphabet characters (e.g. numbers)
// 3. level is accessible only by pressing both Shifts at once (and
// holding either of them)
// there are 2 variants which differ in placement and/or availability of
// characters ' " < > „ “ en_dash
// in `ltgt`, characters „ “ are not available and ' " < > are at their
// original dvorak places and ! is duplicated for better reachability
// in `writer`, all characters are available, but " < > are in
// the 3. level, thus less reachable
// ----------- standard ISO dvorak, 1. and 2. level
// ~ ! @ # $ % ^ & * ( ) { }
// ` 1 2 3 4 5 6 7 8 9 0 [ ]
//
// " < > P Y F G C R L ? + |
// ' , . p y f g c r l / = \
//
// A O E U I D H T N S _
// a o e u i d h t n s -
//
// : Q J K X B M W V Z
// ; q j k x b m w v z
//
// space
// space
// ----------- german dvorak ltgt, 1. and 2. levelll
// ä Ö Ü ß
// ä ö ü ß
//
// " < > P Y F G C R L ? + |
// ' , . p y f g c r l / = \
//
// A O E U I D H T N S _
// a o e u i d h t n s -
//
// : Q J K X B M W V Z
// ; q j k x b m w v z
//
// NBSP
// space
// ----------- german dvorak ltgt, 3. level
// ~ ! @ # $ % ^ & * ( ) { }
//
// nda ! § , 7 8 9 [ ] + |
// en dash
//
// @ ° € ` : 4 5 6 = \
//
// 0 1 2 3 .
//
// NBSP
// ----------- german dvorak writer, 1. and 2. level
// ä Ö Ü ß
// ä ö ü ß
//
// “ nda ' P Y F G C R L ? + |
// en dash
// „ , . p y f g c r l / = \
//
// A O E U I D H T N S _
// a o e u i d h t n s -
//
// : Q J K X B M W V Z
// ; q j k x b m w v z
//
// NBSP
// space
// ----------- german dvorak writer, 3. level
// ~ ! @ # $ % ^ & * ( ) { }
//
// " < > § , 7 8 9 [ ] + |
//
// @ ° € ` : 4 5 6 = \
//
// 0 1 2 3 .
//
// NBSP
// ----------- german dvorak (ltgt|writer), 4. level
// the same as 3. level
// KBD identifier_max_8_bytes_long "Some description to show in keyboard settings and while switching layouts"
KBD gerdLTGT "ULKL German (ltgt variant)"
//KBD gerdLTGT "German Dvorak ltgt (useful for text with lots of <>)"
//KBD gerdLTGT "German Dvorak writer (useful for text with lower/upper UTF-8 double quotes)"
COPYRIGHT "MIT license"
COMPANY "github.com/dumblob/ULKL/"
LOCALENAME "de-DE"
// LOCALEID "00000000"
LOCALEID "00000407"
//FIXME 1.1 after unused keys produce the <none> character
VERSION 1.0
//ATTRIBUTES
//MODIFIERS
SHIFTSTATE
// shift_state_idx // column_below modifiers
0 // 4 <none>
1 // 5 LSHIFT or RSHIFT pressed
2 // 6 both LSHIFT and RSHIFT pressed simultaneously
LAYOUT
// an extra @ at the end is a dead key
// -1 denotes the <none> character
// SC denotes a Virtual Scan Code
// Cap ~ CapsInfo (probably whether CapsLock is applicable)
// topmost row
//SC VK_ Cap 0 1 2
29 OEM_3 0 -1 -1 007e // <none>, <none>, TILDE
02 1 0 -1 -1 0021 // <none>, <none>, EXCLAMATION MARK
03 2 0 00e4 00c4 0040 // adiaeresis, Adiaeresis, COMMERCIAL AT
04 3 0 00f6 00d6 0023 // odiaeresis, Odiaeresis, NUMBER SIGN
05 4 0 -1 -1 0024 // <none>, <none>, DOLLAR SIGN
06 5 0 00fc 00dc 0025 // udiaeresis, Udiaeresis, PERCENT SIGN
07 6 0 -1 -1 005e // <none>, <none>, CIRCUMFLEX ACCENT
08 7 0 -1 -1 0026 // <none>, <none>, AMPERSAND
09 8 0 -1 -1 002a // <none>, <none>, ASTERISK
0a 9 0 -1 -1 0028 // <none>, <none>, LEFT PARENTHESIS
0b 0 0 -1 -1 0029 // <none>, <none>, RIGHT PARENTHESIS
0c OEM_4 0 00df 1e9e 007b // ssharp, U1E9E, LEFT CURLY BRACKET (BRACELEFT)
0d OEM_6 0 -1 -1 007d // <none>, <none>, RIGHT CURLY BRACKET (BRACERIGHT)
// FIXME wtf is this key? is it really <AE13>?
56 OEM_102 0 -1 -1 -1 // <none>, <none>, <none>
//0e ???? 0 ???? ???? ???? // backspace, backspace, backspace
// top row
//0f ???? 0 ???? ???? ???? // tab, tab, tab
// ltgt variant
10 OEM_7 0 0027 0022 -1 // APOSTROPHE, QUOTATION MARK (QUOTEDBL), <none>
11 OEM_COMMA 0 002c 003c 2013 // COMMA, LESS-THAN SIGN, U2013 (EN DASH, pomlcka)
12 OEM_PERIOD 0 002e 003e 0021 // FULL STOP (PERIOD), GREATER-THAN SIGN, EXCLAMATION MARK
// writer variant
//10 OEM_7 0 201e 201c 0022 // U201E LOWER QUOTATION MARK (QUOTEDBL), U201C UPPER QUOTATION MARK (QUOTEDBL), QUOTATION MARK (QUOTEDBL)
//11 OEM_COMMA 0 002c 2013 003c // COMMA, U2013 (EN DASH, pomlcka), LESS-THAN SIGN
//12 OEM_PERIOD 0 002e 0027 003e // FULL STOP (PERIOD), APOSTROPHE, GREATER-THAN SIGN
13 P 0 p P 00a7 // LATIN SMALL LETTER P, LATIN CAPITAL LETTER P, SECTION SIGN (PARAGRAPH)
14 Y 0 y Y -1 // LATIN SMALL LETTER Y, LATIN CAPITAL LETTER Y, <none>
15 F 0 f F 002c // LATIN SMALL LETTER F, LATIN CAPITAL LETTER F, COMMA
16 G 0 g G 7 // LATIN SMALL LETTER G, LATIN CAPITAL LETTER G, DIGIT SEVEN
17 C 0 c C 8 // LATIN SMALL LETTER C, LATIN CAPITAL LETTER C, DIGIT EIGHT
18 R 0 r R 9 // LATIN SMALL LETTER R, LATIN CAPITAL LETTER R, DIGIT NINE
19 L 0 l L 005b // LATIN SMALL LETTER L, LATIN CAPITAL LETTER L, LEFT SQUARE BRACKET
1a OEM_2 0 002f 003f 005d // SOLIDUS (SLASH), QUESTION MARK, RIGHT SQUARE BRACKET
1b OEM_PLUS 0 003d 002b 002b // EQUALS SIGN, PLUS SIGN, PLUS SIGN
2b OEM_5 0 005c 007c 007c // REVERSE SOLIDUS (BACKSLASH), VERTICAL LINE (BAR), VERTICAL LINE (BAR)
// home/middle row
//CapsLk
//3a ???? 0 001b 001b 001b // ESCAPE, ESCAPE, ESCAPE
//3a SGCap 0 001b 001b 001b // ESCAPE, ESCAPE, ESCAPE
1e A 0 a A 0040 // LATIN SMALL LETTER A, LATIN CAPITAL LETTER A, COMMERCIAL AT
1f O 0 o O 00b0 // LATIN SMALL LETTER O, LATIN CAPITAL LETTER O, DEGREE
20 E 0 e E 20ac // LATIN SMALL LETTER E, LATIN CAPITAL LETTER E, EURO SIGN
21 U 0 u U 0060 // LATIN SMALL LETTER U, LATIN CAPITAL LETTER U, GRAVE ACCENT (GRAVE)
22 I 0 i I -1 // LATIN SMALL LETTER I, LATIN CAPITAL LETTER I, <none>
23 D 0 d D 003a // LATIN SMALL LETTER D, LATIN CAPITAL LETTER D, COLON
24 H 0 h H 4 // LATIN SMALL LETTER H, LATIN CAPITAL LETTER H, DIGIT FOUR
25 T 0 t T 5 // LATIN SMALL LETTER T, LATIN CAPITAL LETTER T, DIGIT FIVE
26 N 0 n N 6 // LATIN SMALL LETTER N, LATIN CAPITAL LETTER N, DIGIT SIX
27 S 0 s S 003d // LATIN SMALL LETTER S, LATIN CAPITAL LETTER S, EQUALS SIGN
// pomlcka (= minus = dash)
28 OEM_MINUS 0 002d 005f 005c // HYPHEN-MINUS (FIXME is it the plain minus?), LOW LINE (UNDERSCORE), REVERSE SOLIDUS (BACKSLASH)
//1c ???? 0 ???? ???? ???? // enter/return, enter/return, enter/return
// bottom row
//2a ???? 0 ???? ???? ???? // left shift, left shift, left shift
// left bottom key, right from <LFSH>, which doesn't follow the kbd standard
// FIXME wtf is this key? is it really <LSGT>?
56 OEM_102 0 -1 -1 -1 // <none>, <none>, <none>
2c OEM_1 0 003b 003a -1 // SEMICOLON, COLON, <none>
2d Q 0 q Q -1 // LATIN SMALL LETTER Q, LATIN CAPITAL LETTER Q, <none>
2e J 0 j J -1 // LATIN SMALL LETTER J, LATIN CAPITAL LETTER J, <none>
2f K 0 k K -1 // LATIN SMALL LETTER K, LATIN CAPITAL LETTER K, <none>
30 X 0 x X -1 // LATIN SMALL LETTER X, LATIN CAPITAL LETTER X, <none>
31 B 0 b B 0 // LATIN SMALL LETTER B, LATIN CAPITAL LETTER B, DIGIT ZERO
32 M 0 m M 1 // LATIN SMALL LETTER M, LATIN CAPITAL LETTER M, DIGIT ONE
33 W 0 w W 2 // LATIN SMALL LETTER W, LATIN CAPITAL LETTER W, DIGIT TWO
34 V 0 v V 3 // LATIN SMALL LETTER V, LATIN CAPITAL LETTER V, DIGIT THREE
35 Z 0 z Z 002e // LATIN SMALL LETTER Z, LATIN CAPITAL LETTER Z, FULL STOP (PERIOD)
// numpad dot
53 DECIMAL 0 002e 002e 002e // FULL STOP (PERIOD), FULL STOP (PERIOD), FULL STOP (PERIOD)
//36 ???? 0 ???? ???? ???? // right shift, right shift, right shift
// bottom-most row
//?? ???? 0 ???? ???? ???? // left ctrl, left ctrl, left ctrl
//5b ???? 0 ???? ???? ???? // left super (win), left super (win), left super (win)
//?? ???? 0 ???? ???? ???? // left alt (meta), left alt (meta), left alt (meta)
39 SPACE 0 0020 00a0 00a0 // SPACE, NO-BREAK SPACE, NO-BREAK SPACE
//38 ???? 0 ???? ???? ???? // right alt (meta), right alt (meta), right alt (meta)
//5c ???? 0 ???? ???? ???? // right super (win), right super (win), right super (win)
//?? ???? 0 ???? ???? ???? // menu, menu, menu
//5d ???? 0 ???? ???? ???? // menu, menu, menu
//56 ???? 0 ???? ???? ???? // menu, menu, menu
//1d ???? 0 ???? ???? ???? // right ctrl, right ctrl, right ctrl
//46 ???? 0 ???? ???? ???? // scroll lock, scroll lock, scroll lock
//LIGATURE
//
//// LigatureRow( a: string, mod: byte = SHIFTSTATE[?], tuple<b:string, c:string > )
//// LigatureRow( a: string, mod: byte = SHIFTSTATE[?], tuple<b:string, c:string, d:string > )
//// LigatureRow( a: string, mod: byte = SHIFTSTATE[?], tuple<b:string, c:string, d:string, e:string> )
//// a mod b c
//KEYNAME
//
//01 Esc
//0e Backspace
//0f Tab
//1c Enter
//1d Ctrl
////2a Shift
//2a "Left Shift"
//36 "Right Shift"
//37 "Num *"
//38 Alt
//39 Space
//3a "Caps Lock"
//3b F1
//3c F2
//3d F3
//3e F4
//3f F5
//40 F6
//41 F7
//42 F8
//43 F9
//44 F10
//45 Pause
//46 "Scroll Lock"
//47 "Num 7"
//48 "Num 8"
//49 "Num 9"
//4a "Num -"
//4b "Num 4"
//4c "Num 5"
//4d "Num 6"
//4e "Num +"
//4f "Num 1"
//50 "Num 2"
//51 "Num 3"
//52 "Num 0"
//53 "Num Del"
//54 "Sys Req"
//57 F11
//58 F12
//7c F13
//7d F14
//7e F15
//7f F16
//80 F17
//81 F18
//82 F19
//83 F20
//84 F21
//85 F22
//86 F23
//87 F24
//
//KEYNAME_EXT
//
//1c "Num Enter"
//1d "Right Ctrl"
//35 "Num /"
//37 "Prnt Scrn"
//38 "Right Alt"
//45 "Num Lock"
//46 Break
//47 Home
//48 Up
//49 "Page Up"
//4b Left
//4d Right
//4f End
//50 Down
//51 "Page Down"
//52 Insert
//53 Delete
//54 <00>
//54 "Sys Req"
//56 Help
//5b "Left Windows"
//5c "Right Windows"
//5d Application
DESCRIPTIONS
// Don't ask me why the parser doesn't strip double quotes here (
// even though they're stripped for the KBD command/section above).
0409 German Dvorak ltgt (useful for text with lots of <>)
//0409 German Dvorak writer (useful for text with lower/upper UTF-8 double quotes)
LANGUAGENAMES
// Don't ask me why the parser doesn't strip double quotes here (
// even though they're stripped for the KBD command/section above).
0409 German or related (all locations world-wide)
ENDKBD
// vim: set ft=javascript: