ReactOS 0.4.16-dev-1946-g52006dd
kbdgre1.c
Go to the documentation of this file.
1/*
2 * ReactOS German Extended (E1) Keyboard layout
3 * Copyright (C) 2025 ReactOS
4 * License: LGPL, see: LGPL.txt
5 *
6 * Thanks to: http://www.barcodeman.com/altek/mule/scandoc.php
7 * and http://win.tue.nl/~aeb/linux/kbd/scancodes-1.html
8 */
9
10/*
11 * This keyboard layout is Work In Progress!
12 *
13 * Most dead key translations are still missing.
14 */
15
16#define WIN32_NO_STATUS
17#include <stdarg.h>
18#include <windef.h>
19#include <winuser.h>
20#include <ndk/kbd.h>
21
22#ifdef _M_IA64
23#define ROSDATA static __declspec(allocate(".data"))
24#else
25#ifdef _MSC_VER
26#pragma data_seg(".data")
27#define ROSDATA static
28#else
29#define ROSDATA static __attribute__((section(".data")))
30#endif
31#endif
32
33#define VK_EMPTY 0xff /* The non-existent VK */
34
35#define KNUMS KBDNUMPAD|KBDSPECIAL /* Special + number pad */
36#define KMEXT KBDEXT|KBDMULTIVK /* Multi + ext */
37
39 /* Numbers Row */
40 /* - 00 - */
41 /* 1 ... 2 ... 3 ... 4 ... */
42 VK_EMPTY, VK_ESCAPE, '1', '2',
43 '3', '4', '5', '6',
44 '7', '8', '9', '0',
46 /* - 0f - */
47 /* First Letters Row */
48 VK_TAB, 'Q', 'W', 'E',
49 'R', 'T', 'Z', 'U',
50 'I', 'O', 'P',
51 VK_OEM_1, VK_OEM_PLUS, VK_RETURN,
52 /* - 1d - */
53 /* Second Letters Row */
55 'A', 'S', 'D', 'F',
56 'G', 'H', 'J', 'K',
59 /* - 2c - */
60 /* Third letters row */
61 'Y', 'X', 'C', 'V',
62 'B', 'N', 'M', VK_OEM_COMMA,
63 VK_OEM_PERIOD,VK_OEM_MINUS, VK_RSHIFT,
64 /* - 37 - */
65 /* Bottom Row */
67
68 /* - 3b - */
69 /* F-Keys */
72 /* - 45 - */
73 /* Locks */
76 /* - 47 - */
77 /* Number-Pad */
82 /* - 54 - */
83 /* Presumably PrtSc */
85 /* - 55 - */
86 /* Oddities, and the remaining standard F-Keys */
87 VK_EMPTY, VK_OEM_102, VK_F11, VK_F12,
88 /* - 59 - */
91 VK_HELP,
92 /* - 64 - */
93 /* Even more F-Keys (for example, NCR keyboards from the early 90's) */
96 /* - 6f - */
97 /* Not sure who uses these codes */
99 /* - 72 - */
101 /* - 76 - */
102 /* One more f-key */
103 VK_F24,
104 /* - 77 - */
106 VK_EMPTY, VK_EMPTY, VK_EMPTY, VK_EMPTY, /* PA1 */
107};
108
110 { 0x10, VK_MEDIA_PREV_TRACK | KBDEXT },
111 { 0x19, VK_MEDIA_NEXT_TRACK | KBDEXT },
112 { 0x1D, VK_RCONTROL | KBDEXT },
113 { 0x20, VK_VOLUME_MUTE | KBDEXT },
114 { 0x21, VK_LAUNCH_APP2 | KBDEXT },
115 { 0x22, VK_MEDIA_PLAY_PAUSE | KBDEXT },
116 { 0x24, VK_MEDIA_STOP | KBDEXT },
117 { 0x2E, VK_VOLUME_DOWN | KBDEXT },
118 { 0x30, VK_VOLUME_UP | KBDEXT },
119 { 0x32, VK_BROWSER_HOME | KBDEXT },
120 { 0x35, VK_DIVIDE | KBDEXT },
121 { 0x37, VK_SNAPSHOT | KBDEXT },
122 { 0x38, VK_RMENU | KBDEXT },
123 { 0x47, VK_HOME | KBDEXT },
124 { 0x48, VK_UP | KBDEXT },
125 { 0x49, VK_PRIOR | KBDEXT },
126 { 0x4B, VK_LEFT | KBDEXT },
127 { 0x4D, VK_RIGHT | KBDEXT },
128 { 0x4F, VK_END | KBDEXT },
129 { 0x50, VK_DOWN | KBDEXT },
130 { 0x51, VK_NEXT | KBDEXT },
131 { 0x52, VK_INSERT | KBDEXT },
132 { 0x53, VK_DELETE | KBDEXT },
133 { 0x5B, VK_LWIN | KBDEXT },
134 { 0x5C, VK_RWIN | KBDEXT },
135 { 0x5D, VK_APPS | KBDEXT },
136 { 0x5F, VK_SLEEP | KBDEXT },
137 { 0x65, VK_BROWSER_SEARCH | KBDEXT },
138 { 0x66, VK_BROWSER_FAVORITES | KBDEXT },
139 { 0x67, VK_BROWSER_REFRESH | KBDEXT },
140 { 0x68, VK_BROWSER_STOP | KBDEXT },
141 { 0x69, VK_BROWSER_FORWARD | KBDEXT },
142 { 0x6A, VK_BROWSER_BACK | KBDEXT },
143 { 0x6B, VK_LAUNCH_APP1 | KBDEXT },
144 { 0x6C, VK_LAUNCH_MAIL | KBDEXT },
145 { 0x6D, VK_LAUNCH_MEDIA_SELECT | KBDEXT },
146 { 0x1C, VK_RETURN | KBDEXT },
147 { 0x46, VK_CANCEL | KBDEXT },
148 { 0, 0 },
149};
150
152 { 0x1d, VK_PAUSE},
153 { 0, 0 },
154};
155
157 { VK_SHIFT, KBDSHIFT },
158 { VK_CONTROL, KBDCTRL },
159 { VK_MENU, KBDALT },
160 { 0, 0 }
161};
162
165 8,
166 /* Modifier bit order, NONE, SHIFT, CTRL, SHIFT+CTRL, ALT, SHIFT+ALT, CTRL+ALT, SHIFT+CTRL+ALT */
167 { 0, 1, 4, 5, SHFT_INVALID, SHFT_INVALID, 2, 3 }
168};
169
170ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[] = {
171 /* Normal, Shift */
172 { VK_DECIMAL, 0, {',', ',' } },
173 { VK_TAB, 0, {'\t', '\t'} },
174 { VK_ADD, 0, {'+', '+'} },
175 { VK_DIVIDE, 0, {'/', '/'} },
176 { VK_MULTIPLY, 0, {'*', '*'} },
177 { VK_SUBTRACT, 0, {'-', '-'} },
178 { 0, 0 }
179};
180
181ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {
182 /* Normal, Shift, Ctrl+Alt */
183 { VK_OEM_5, 0, {WCH_DEAD, 0x00b0, 0x00d7 } },
184 { 0xff, 0, {'^', WCH_NONE, WCH_NONE} },
185 { '1', CAPLOK, {'1', '!', 0x2019 } },
186 { '3', CAPLOK, {'3', 0x00a7, 0x00b3 } },
187 { '4', CAPLOK, {'4', '$', 0x2014 } },
188 { '5', CAPLOK, {'5', '%', 0x00a1 } },
189 { '7', CAPLOK, {'7', '/', '{' } },
190 { '8', CAPLOK, {'8', '(', '[' } },
191 { '9', CAPLOK, {'9', ')', ']' } },
192 { '0', CAPLOK, {'0', '=', '}' } },
194 { 0xff, 0, {0x00b4, '`', 0x02d9 } },
195 { 'Q', CAPLOK, {'q', 'Q', '@' } },
196 { 'W', CAPLOK, {'w', 'W', WCH_DEAD} },
197 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x00af } },
198 { 'E', CAPLOK, {'e', 'E', 0x20ac } },
199 { 'R', CAPLOK, {'r', 'R', WCH_DEAD} },
200 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x02dd } },
201 { 'T', CAPLOK, {'t', 'T', WCH_DEAD} },
202 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x02c7 } },
203 { 'Z', CAPLOK, {'z', 'Z', WCH_DEAD} },
204 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x00a8 } },
205 { 'U', CAPLOK, {'u', 'U', WCH_DEAD} },
206 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x02d8 } },
207 { 'I', CAPLOK, {'i', 'I', WCH_DEAD} },
208 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x02dc } },
209 { 'O', CAPLOK, {'o', 'O', WCH_DEAD} },
210 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x02da } },
211 { 'P', CAPLOK, {'p', 'P', WCH_DEAD} },
212 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x02c0 } },
213 { 'A', CAPLOK, {'a', 'A', 0x263a } },
214 { 'S', CAPLOK, {'s', 'S', 0x2033 } },
215 { 'D', CAPLOK, {'d', 'D', 0x2032 } },
216 { 'F', CAPLOK, {'f', 'F', WCH_DEAD} },
217 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x02df } },
218 { 'G', CAPLOK, {'g', 'G', 0x1e9e } },
219 { 'H', CAPLOK, {'h', 'H', WCH_DEAD} },
220 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x02cd } },
221 { 'J', CAPLOK, {'j', 'J', WCH_DEAD} },
222 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x00b8 } },
223 { 'K', CAPLOK, {'k', 'K', WCH_DEAD} },
224 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x02cf } },
225 { 'L', CAPLOK, {'l', 'L', WCH_DEAD} },
226 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x02db } },
227 { VK_OEM_3, CAPLOK, {0x00f6, 0x00d6, WCH_DEAD} },
228 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x02cc } },
229 { VK_OEM_7, CAPLOK, {0x00e4, 0x00c4, WCH_DEAD} },
230 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x02d7 } },
231 { VK_OEM_102, 0, {'<', '>', '|' } },
232 { 'Y', CAPLOK, {'y', 'Y', 0x203a } },
233 { 'X', CAPLOK, {'x', 'X', 0x00bb } },
234 { 'C', CAPLOK, {'c', 'C', 0x202f } },
235 { 'V', CAPLOK, {'v', 'V', 0x20ab } },
236 { 'B', CAPLOK, {'b', 'B', 0x2039 } },
237 { 'N', CAPLOK, {'n', 'N', 0x2013 } },
238 { 'M', CAPLOK, {'m', 'M', 0x00b5 } },
239 { VK_OEM_COMMA, CAPLOK, {',', ';', 0x2011 } },
240 { VK_OEM_PERIOD, CAPLOK, {'.', ':', 0x00b7 } },
241 { VK_SPACE, 0, {' ', ' ', 0x00a0 } },
242 { 0,0 }
243};
244
245ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
246 /* Normal, Shift, Ctrl+Alt, Shift+Ctrl+Alt */
247 { VK_OEM_4, CAPLOK, {0x00df, '?', '\\', 0x1e9e } },
248 { 0, 0 }
249};
250
251ROSDATA VK_TO_WCHARS5 key_to_chars_5mod[] = {
252 /* Normal, Shift, Ctrl+Alt, Shift+Ctrl+Alt, Ctrl */
253 { '2', CAPLOK, {'2', '\"', 0x00b2, WCH_NONE, 0x0000 } },
254 { '6', CAPLOK, {'6', '&', 0x00bf, WCH_NONE, 0x001e } },
255 { VK_OEM_1, CAPLOK, {0x00fc, 0x00dc, WCH_DEAD, WCH_NONE, 0x001b } },
256 { 0xff, 0, {WCH_NONE, WCH_NONE, 0x02bc, WCH_NONE, WCH_NONE} },
257 { VK_OEM_PLUS, CAPLOK, {'+', '*', '~', WCH_NONE, 0x001d } },
258 { VK_OEM_2, CAPLOK, {'#', '\'', 0x2212, WCH_NONE, 0x001c } },
259
260 { VK_BACK, 0, {'\b', '\b', WCH_NONE, WCH_NONE, 0x007f } },
261 { VK_ESCAPE, 0, {0x001b, 0x001b, WCH_NONE, WCH_NONE, 0x001b } },
262 { VK_RETURN, 0, {'\r', '\r', WCH_NONE, WCH_NONE, '\n' } },
263 { VK_CANCEL, 0, {0x0003, 0x0003, WCH_NONE, WCH_NONE, 0x0003 } },
264 { 0, 0 }
265};
266
267ROSDATA VK_TO_WCHARS6 key_to_chars_6mod[] = {
268 /* Normal, Shift, Ctrl+Alt, Shift+Ctrl+Alt, Ctrl, Shift+Ctrl */
269 { VK_OEM_MINUS, 0, {'-', '_', 0x00ad, WCH_NONE, WCH_NONE, 0x001f } },
270 { 0, 0 }
271};
272
273ROSDATA VK_TO_WCHARS1 keypad_numbers[] = {
274 { VK_DECIMAL, 0, {'.'} },
275 { VK_NUMPAD0, 0, {'0'} },
276 { VK_NUMPAD1, 0, {'1'} },
277 { VK_NUMPAD2, 0, {'2'} },
278 { VK_NUMPAD3, 0, {'3'} },
279 { VK_NUMPAD4, 0, {'4'} },
280 { VK_NUMPAD5, 0, {'5'} },
281 { VK_NUMPAD6, 0, {'6'} },
282 { VK_NUMPAD7, 0, {'7'} },
283 { VK_NUMPAD8, 0, {'8'} },
284 { VK_NUMPAD9, 0, {'9'} },
285// { VK_BACK, 0, '\010' },
286 { 0,0 }
287};
288
289#define vk_master(n,x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) }
290
298 { 0,0,0 }
299};
300
302 { 0x00, L"" },
303 { 0x01, L"Esc" },
304 { 0x0e, L"R\x00fc" L"ck" },
305 { 0x0f, L"Tabulator" },
306 { 0x1c, L"Eingabe" },
307 { 0x1d, L"Strg" },
308 { 0x2a, L"Umschalt" },
309 { 0x36, L"Umschalt Rechts" },
310 { 0x37, L" (Zehnertastatur)" },
311 { 0x38, L"Alt" },
312 { 0x39, L"Leer" },
313 { 0x3a, L"Feststell" },
314 { 0x3b, L"F1" },
315 { 0x3c, L"F2" },
316 { 0x3d, L"F3" },
317 { 0x3e, L"F4" },
318 { 0x3f, L"F5" },
319 { 0x40, L"F6" },
320 { 0x41, L"F7" },
321 { 0x42, L"F8" },
322 { 0x43, L"F9" },
323 { 0x44, L"F10" },
324 { 0x45, L"Pause" },
325 { 0x46, L"Rollen-Feststell" },
326 { 0x47, L"7 (Zehnertastatur)" },
327 { 0x48, L"8 (Zehnertastatur)" },
328 { 0x49, L"9 (Zehnertastatur)" },
329 { 0x4a, L"- (Zehnertastatur)" },
330 { 0x4b, L"4 (Zehnertastatur)" },
331 { 0x4c, L"5 (Zehnertastatur)" },
332 { 0x4d, L"6 (Zehnertastatur)" },
333 { 0x4e, L"+ (Zehnertastatur)" },
334 { 0x4f, L"1 (Zehnertastatur)" },
335 { 0x50, L"2 (Zehnertastatur)" },
336 { 0x51, L"3 (Zehnertastatur)" },
337 { 0x52, L"0 (Zehnertastatur)" },
338 { 0x53, L"Komma (Zehnertastatur)" },
339 { 0x54, L"Sys Req" },
340 { 0x57, L"F11" },
341 { 0x58, L"F12" },
342 { 0x7c, L"F13" },
343 { 0x7d, L"F14" },
344 { 0x7e, L"F15" },
345 { 0x7f, L"F16" },
346 { 0x80, L"F17" },
347 { 0x81, L"F18" },
348 { 0x82, L"F19" },
349 { 0x83, L"F20" },
350 { 0x84, L"F21" },
351 { 0x85, L"F22" },
352 { 0x86, L"F23" },
353 { 0x87, L"F24" },
354 { 0, NULL },
355};
356
358 { 0x1c, L"Eingabe (Zehnertastatur" },
359 { 0x1d, L"Strg-Rechts" },
360 { 0x35, L" (Zehnertastatur)" },
361 { 0x37, L"Druck" },
362 { 0x38, L"Alt Gr" },
363 { 0x45, L"Num-Feststell" },
364 { 0x46, L"Untbr" },
365 { 0x47, L"Pos1" },
366 { 0x48, L"Nach-Oben" },
367 { 0x49, L"Bild-Nach-Oben" },
368 { 0x4b, L"Nach-Links" },
369//{ 0x4c, L"Center" },
370 { 0x4d, L"Nach-Rechts" },
371 { 0x4f, L"Ende" },
372 { 0x50, L"Nach-Unten" },
373 { 0x51, L"Bild-Nach-Unten" },
374 { 0x52, L"Einfg" },
375 { 0x53, L"Entf" },
376 { 0x54, L"<ReactOS>" },
377 { 0x55, L"Hilfe" },
378 { 0x56, L"Linke <ReactOS>" },
379 { 0x5b, L"Rechte <ReactOS>" },
380 { 0, NULL },
381};
382
384 L"\x00b4" L"AKUT",
385 L"`" L"GRAVIS",
386 L"\x00af" L"MAKRON",
387 L"\x02d9" L"\x00dcBERPUNKT",
388 L"^" L"ZIRKUMFLEX",
389 L"\x02dd" L"DOPPELAKUT",
390 L"\x02c7" L"HATSCHEK",
391 L"\x00a8" L"TREMA",
392 L"\x02d8" L"BREVE",
393 L"\x02dc" L"TILDE",
394 L"\x02da" L"RING",
395 L"\x02c0" L"HORN",
396 L"\x02bc" L"HAKEN",
397 L"\x02df" L"EXTRA-WAHLTASTE",
398 L"\x02cd" L"UNTERSTRICH",
399 L"\x00b8" L"CEDILLA",
400 L"\x02cf" L"UNTERKOMMA",
401 L"\x02db" L"OGONEK",
402 L"\x02cc" L"UNTERPUNKT",
403 L"\x02d7" L"QUERSTRICHAKZENT",
404 NULL
405};
406
407#define DEADTRANS(ch, accent, comp, flags) MAKELONG(ch, accent), comp, flags
408
410 { DEADTRANS(L' ', L'^', L'^', 0x0000) }, /* ZIRKUMFLEX */
411 { DEADTRANS(L'(', L'^', 0x207d, 0x0000) },
412 { DEADTRANS(L')', L'^', 0x207e, 0x0000) },
413 { DEADTRANS(L'+', L'^', 0x207a, 0x0000) },
414 { DEADTRANS(L'-', L'^', 0x207b, 0x0000) },
415 { DEADTRANS(L'=', L'^', 0x2259, 0x0000) },
416 { DEADTRANS(L'0', L'^', 0x2070, 0x0000) },
417 { DEADTRANS(L'1', L'^', 0x00b9, 0x0000) },
418 { DEADTRANS(L'2', L'^', 0x00b2, 0x0000) },
419 { DEADTRANS(L'3', L'^', 0x00b3, 0x0000) },
420 { DEADTRANS(L'4', L'^', 0x2074, 0x0000) },
421 { DEADTRANS(L'5', L'^', 0x2075, 0x0000) },
422 { DEADTRANS(L'6', L'^', 0x2076, 0x0000) },
423 { DEADTRANS(L'7', L'^', 0x2077, 0x0000) },
424 { DEADTRANS(L'8', L'^', 0x2078, 0x0000) },
425 { DEADTRANS(L'9', L'^', 0x2079, 0x0000) },
426 { DEADTRANS(L'A', L'^', 0x00c2, 0x0000) },
427 { DEADTRANS(L'C', L'^', 0x0108, 0x0000) },
428 { DEADTRANS(L'E', L'^', 0x00ca, 0x0000) },
429 { DEADTRANS(L'G', L'^', 0x011c, 0x0000) },
430 { DEADTRANS(L'H', L'^', 0x0124, 0x0000) },
431 { DEADTRANS(L'I', L'^', 0x00ce, 0x0000) },
432 { DEADTRANS(L'J', L'^', 0x0134, 0x0000) },
433 { DEADTRANS(L'O', L'^', 0x00d4, 0x0000) },
434 { DEADTRANS(L'S', L'^', 0x015c, 0x0000) },
435 { DEADTRANS(L'U', L'^', 0x00db, 0x0000) },
436 { DEADTRANS(L'W', L'^', 0x0174, 0x0000) },
437 { DEADTRANS(L'Y', L'^', 0x0176, 0x0000) },
438 { DEADTRANS(L'Z', L'^', 0x1e90, 0x0000) },
439 { DEADTRANS(L'^', L'^', 0x0302, 0x0000) },
440 { DEADTRANS(L'a', L'^', 0x00e2, 0x0000) },
441 { DEADTRANS(L'c', L'^', 0x0109, 0x0000) },
442 { DEADTRANS(L'e', L'^', 0x00ea, 0x0000) },
443 { DEADTRANS(L'g', L'^', 0x011d, 0x0000) },
444 { DEADTRANS(L'h', L'^', 0x0125, 0x0000) },
445 { DEADTRANS(L'i', L'^', 0x00ee, 0x0000) },
446 { DEADTRANS(L'j', L'^', 0x0135, 0x0000) },
447 { DEADTRANS(L'o', L'^', 0x00f4, 0x0000) },
448 { DEADTRANS(L's', L'^', 0x015d, 0x0000) },
449 { DEADTRANS(L'u', L'^', 0x00fb, 0x0000) },
450 { DEADTRANS(L'w', L'^', 0x0175, 0x0000) },
451 { DEADTRANS(L'y', L'^', 0x0177, 0x0000) },
452 { DEADTRANS(L'z', L'^', 0x1e91, 0x0000) },
453
454 { DEADTRANS(L' ', 0x00b4, 0x00b4, 0x0000) }, /* AKUT */
455 { DEADTRANS(L'A', 0x00b4, 0x00c1, 0x0000) },
456 { DEADTRANS(L'C', 0x00b4, 0x0106, 0x0000) },
457 { DEADTRANS(L'E', 0x00b4, 0x00c9, 0x0000) },
458 { DEADTRANS(L'G', 0x00b4, 0x01f4, 0x0000) },
459 { DEADTRANS(L'I', 0x00b4, 0x00cd, 0x0000) },
460 { DEADTRANS(L'K', 0x00b4, 0x1e30, 0x0000) },
461 { DEADTRANS(L'L', 0x00b4, 0x0139, 0x0000) },
462 { DEADTRANS(L'M', 0x00b4, 0x1e3e, 0x0000) },
463 { DEADTRANS(L'N', 0x00b4, 0x0143, 0x0000) },
464 { DEADTRANS(L'O', 0x00b4, 0x00d3, 0x0000) },
465 { DEADTRANS(L'P', 0x00b4, 0x1e54, 0x0000) },
466 { DEADTRANS(L'R', 0x00b4, 0x0154, 0x0000) },
467 { DEADTRANS(L'S', 0x00b4, 0x015a, 0x0000) },
468 { DEADTRANS(L'U', 0x00b4, 0x00da, 0x0000) },
469 { DEADTRANS(L'W', 0x00b4, 0x1e82, 0x0000) },
470 { DEADTRANS(L'Y', 0x00b4, 0x00dd, 0x0000) },
471 { DEADTRANS(L'Z', 0x00b4, 0x0179, 0x0000) },
472 { DEADTRANS(L'a', 0x00b4, 0x00e1, 0x0000) },
473 { DEADTRANS(L'c', 0x00b4, 0x0107, 0x0000) },
474 { DEADTRANS(L'e', 0x00b4, 0x00e9, 0x0000) },
475 { DEADTRANS(L'g', 0x00b4, 0x01f5, 0x0000) },
476 { DEADTRANS(L'i', 0x00b4, 0x00ed, 0x0000) },
477 { DEADTRANS(L'k', 0x00b4, 0x1e31, 0x0000) },
478 { DEADTRANS(L'l', 0x00b4, 0x013a, 0x0000) },
479 { DEADTRANS(L'm', 0x00b4, 0x1e3f, 0x0000) },
480 { DEADTRANS(L'n', 0x00b4, 0x0144, 0x0000) },
481 { DEADTRANS(L'o', 0x00b4, 0x00f3, 0x0000) },
482 { DEADTRANS(L'p', 0x00b4, 0x1e55, 0x0000) },
483 { DEADTRANS(L'r', 0x00b4, 0x0155, 0x0000) },
484 { DEADTRANS(L's', 0x00b4, 0x015b, 0x0000) },
485 { DEADTRANS(L'u', 0x00b4, 0x00fa, 0x0000) },
486 { DEADTRANS(L'w', 0x00b4, 0x1e83, 0x0000) },
487 { DEADTRANS(L'y', 0x00b4, 0x00fd, 0x0000) },
488 { DEADTRANS(L'z', 0x00b4, 0x017a, 0x0000) },
489 { DEADTRANS(0x00dc, 0x00b4, 0x01d7, 0x0000) },
490 { DEADTRANS(0x00fc, 0x00b4, 0x01d8, 0x0000) },
491 { DEADTRANS(0x00b4, 0x00b4, 0x0301, 0x0000) },
492
493 { DEADTRANS(L' ', L'`', L'`', 0x0000) }, /* GRAVIS */
494 { DEADTRANS(L'A', L'`', 0x00c0, 0x0000) },
495 { DEADTRANS(L'E', L'`', 0x00c8, 0x0000) },
496 { DEADTRANS(L'I', L'`', 0x00cc, 0x0000) },
497 { DEADTRANS(L'N', L'`', 0x01f8, 0x0000) },
498 { DEADTRANS(L'O', L'`', 0x00d2, 0x0000) },
499 { DEADTRANS(L'U', L'`', 0x00d9, 0x0000) },
500 { DEADTRANS(L'W', L'`', 0x1e80, 0x0000) },
501 { DEADTRANS(L'Y', L'`', 0x1ef2, 0x0000) },
502 { DEADTRANS(L'a', L'`', 0x00e0, 0x0000) },
503 { DEADTRANS(L'e', L'`', 0x00e8, 0x0000) },
504 { DEADTRANS(L'i', L'`', 0x00ec, 0x0000) },
505 { DEADTRANS(L'n', L'`', 0x01f9, 0x0000) },
506 { DEADTRANS(L'o', L'`', 0x00f2, 0x0000) },
507 { DEADTRANS(L'u', L'`', 0x00f9, 0x0000) },
508 { DEADTRANS(L'w', L'`', 0x1e81, 0x0000) },
509 { DEADTRANS(L'y', L'`', 0x1ef3, 0x0000) },
510 { DEADTRANS(0x00dc, L'`', 0x01db, 0x0000) },
511 { DEADTRANS(0x00fc, L'`', 0x01dc, 0x0000) },
512 { DEADTRANS(L'`', L'`', 0x0300, 0x0000) },
513
514 { DEADTRANS(L' ', 0x02d9, 0x02d9, 0x0000) }, /* ÜBERPUNKT */
515 { DEADTRANS(L'A', 0x02d9, 0x0226, 0x0000) },
516 { DEADTRANS(L'B', 0x02d9, 0x1e02, 0x0000) },
517 { DEADTRANS(L'C', 0x02d9, 0x010a, 0x0000) },
518 { DEADTRANS(L'D', 0x02d9, 0x1e0a, 0x0000) },
519 { DEADTRANS(L'E', 0x02d9, 0x0116, 0x0000) },
520 { DEADTRANS(L'F', 0x02d9, 0x1e1e, 0x0000) },
521 { DEADTRANS(L'G', 0x02d9, 0x0120, 0x0000) },
522 { DEADTRANS(L'H', 0x02d9, 0x1e22, 0x0000) },
523 { DEADTRANS(L'I', 0x02d9, 0x0130, 0x0000) },
524 { DEADTRANS(L'L', 0x02d9, 0x013f, 0x0000) },
525 { DEADTRANS(L'M', 0x02d9, 0x1e40, 0x0000) },
526 { DEADTRANS(L'N', 0x02d9, 0x1e44, 0x0000) },
527 { DEADTRANS(L'O', 0x02d9, 0x022e, 0x0000) },
528 { DEADTRANS(L'P', 0x02d9, 0x1e56, 0x0000) },
529 { DEADTRANS(L'R', 0x02d9, 0x1e58, 0x0000) },
530 { DEADTRANS(L'S', 0x02d9, 0x1e60, 0x0000) },
531 { DEADTRANS(L'T', 0x02d9, 0x1e6a, 0x0000) },
532 { DEADTRANS(L'W', 0x02d9, 0x1e86, 0x0000) },
533 { DEADTRANS(L'X', 0x02d9, 0x1e8a, 0x0000) },
534 { DEADTRANS(L'Z', 0x02d9, 0x017b, 0x0000) },
535 { DEADTRANS(L'a', 0x02d9, 0x0227, 0x0000) },
536 { DEADTRANS(L'b', 0x02d9, 0x1e03, 0x0000) },
537 { DEADTRANS(L'c', 0x02d9, 0x010b, 0x0000) },
538 { DEADTRANS(L'd', 0x02d9, 0x1e0b, 0x0000) },
539 { DEADTRANS(L'e', 0x02d9, 0x0117, 0x0000) },
540 { DEADTRANS(L'f', 0x02d9, 0x1e1f, 0x0000) },
541 { DEADTRANS(L'g', 0x02d9, 0x0121, 0x0000) },
542 { DEADTRANS(L'h', 0x02d9, 0x1e23, 0x0000) },
543 { DEADTRANS(L'l', 0x02d9, 0x0140, 0x0000) },
544 { DEADTRANS(L'm', 0x02d9, 0x1e41, 0x0000) },
545 { DEADTRANS(L'n', 0x02d9, 0x1e45, 0x0000) },
546 { DEADTRANS(L'o', 0x02d9, 0x022f, 0x0000) },
547 { DEADTRANS(L'p', 0x02d9, 0x1e57, 0x0000) },
548 { DEADTRANS(L'r', 0x02d9, 0x1e59, 0x0000) },
549 { DEADTRANS(L's', 0x02d9, 0x1e61, 0x0000) },
550 { DEADTRANS(L't', 0x02d9, 0x1e6b, 0x0000) },
551 { DEADTRANS(L'w', 0x02d9, 0x1e87, 0x0000) },
552 { DEADTRANS(L'x', 0x02d9, 0x1e8b, 0x0000) },
553 { DEADTRANS(L'z', 0x02d9, 0x017c, 0x0000) },
554 { DEADTRANS(L'~', 0x02d9, 0x2e1e, 0x0000) },
555 { DEADTRANS(L'°', 0x02d9, 0x0310, 0x0000) },
556 { DEADTRANS(0x02d9, 0x02d9, 0x0307, 0x0000) },
557
558 { DEADTRANS(L' ', 0x00af, 0x00af, 0x0000) }, /* MAKRON */
559 { DEADTRANS(L'-', 0x00af, 0x2e40, 0x0000) },
560 { DEADTRANS(L'A', 0x00af, 0x0100, 0x0000) },
561 { DEADTRANS(L'E', 0x00af, 0x0112, 0x0000) },
562 { DEADTRANS(L'G', 0x00af, 0x1e20, 0x0000) },
563 { DEADTRANS(L'I', 0x00af, 0x012a, 0x0000) },
564 { DEADTRANS(L'O', 0x00af, 0x014c, 0x0000) },
565 { DEADTRANS(L'U', 0x00af, 0x016a, 0x0000) },
566 { DEADTRANS(L'Y', 0x00af, 0x0232, 0x0000) },
567 { DEADTRANS(L'=', 0x00af, 0x2261, 0x0000) },
568 { DEADTRANS(L'a', 0x00af, 0x0101, 0x0000) },
569 { DEADTRANS(L'e', 0x00af, 0x0113, 0x0000) },
570 { DEADTRANS(L'g', 0x00af, 0x1e21, 0x0000) },
571 { DEADTRANS(L'i', 0x00af, 0x012b, 0x0000) },
572 { DEADTRANS(L'o', 0x00af, 0x014d, 0x0000) },
573 { DEADTRANS(L'u', 0x00af, 0x016b, 0x0000) },
574 { DEADTRANS(L'y', 0x00af, 0x0233, 0x0000) },
575 { DEADTRANS(0x00c4, 0x00af, 0x01de, 0x0000) },
576 { DEADTRANS(0x00d6, 0x00af, 0x022a, 0x0000) },
577 { DEADTRANS(0x00dc, 0x00af, 0x01d5, 0x0000) },
578 { DEADTRANS(0x00e4, 0x00af, 0x01df, 0x0000) },
579 { DEADTRANS(0x00f6, 0x00af, 0x022b, 0x0000) },
580 { DEADTRANS(0x00fc, 0x00af, 0x01d6, 0x0000) },
581
582 { DEADTRANS(L' ', 0x02dd, 0x02dd, 0x0000) }, /* DOPPELAKUT */
583 { DEADTRANS(L'#', 0x02dd, 0x2016, 0x0000) },
584 { DEADTRANS(L'+', 0x02dd, 0x02c8, 0x0000) },
585 { DEADTRANS(L',', 0x02dd, 0x02d1, 0x0000) },
586 { DEADTRANS(L'-', 0x02dd, 0x02cc, 0x0000) },
587 { DEADTRANS(L'.', 0x02dd, 0x02d0, 0x0000) },
588 { DEADTRANS(L':', 0x02dd, 0x02d0, 0x0000) },
589 { DEADTRANS(L'O', 0x02dd, 0x0150, 0x0000) },
590 { DEADTRANS(L'U', 0x02dd, 0x0170, 0x0000) },
591 { DEADTRANS(L'o', 0x02dd, 0x0151, 0x0000) },
592 { DEADTRANS(L'u', 0x02dd, 0x0171, 0x0000) },
593 { DEADTRANS(0x02dd, 0x02dd, 0x030b, 0x0000) },
594
595 { DEADTRANS(L' ', 0x02c7, 0x02c7, 0x0000) }, /* HATCHEK */
596 { DEADTRANS(L'(', 0x02c7, 0x208d, 0x0000) },
597 { DEADTRANS(L')', 0x02c7, 0x208e, 0x0000) },
598 { DEADTRANS(L'+', 0x02c7, 0x208a, 0x0000) },
599 { DEADTRANS(L'-', 0x02c7, 0x208b, 0x0000) },
600 { DEADTRANS(L'0', 0x02c7, 0x2080, 0x0000) },
601 { DEADTRANS(L'1', 0x02c7, 0x2081, 0x0000) },
602 { DEADTRANS(L'2', 0x02c7, 0x2082, 0x0000) },
603 { DEADTRANS(L'3', 0x02c7, 0x2083, 0x0000) },
604 { DEADTRANS(L'4', 0x02c7, 0x2084, 0x0000) },
605 { DEADTRANS(L'5', 0x02c7, 0x2085, 0x0000) },
606 { DEADTRANS(L'6', 0x02c7, 0x2086, 0x0000) },
607 { DEADTRANS(L'7', 0x02c7, 0x2087, 0x0000) },
608 { DEADTRANS(L'8', 0x02c7, 0x2088, 0x0000) },
609 { DEADTRANS(L'9', 0x02c7, 0x2089, 0x0000) },
610 { DEADTRANS(L'A', 0x02c7, 0x01cd, 0x0000) },
611 { DEADTRANS(L'C', 0x02c7, 0x010c, 0x0000) },
612 { DEADTRANS(L'D', 0x02c7, 0x010d, 0x0000) },
613 { DEADTRANS(L'E', 0x02c7, 0x011a, 0x0000) },
614 { DEADTRANS(L'G', 0x02c7, 0x01e6, 0x0000) },
615 { DEADTRANS(L'H', 0x02c7, 0x021e, 0x0000) },
616 { DEADTRANS(L'I', 0x02c7, 0x01cf, 0x0000) },
617 { DEADTRANS(L'K', 0x02c7, 0x01e8, 0x0000) },
618 { DEADTRANS(L'L', 0x02c7, 0x013d, 0x0000) },
619 { DEADTRANS(L'N', 0x02c7, 0x0147, 0x0000) },
620 { DEADTRANS(L'O', 0x02c7, 0x01d1, 0x0000) },
621 { DEADTRANS(L'R', 0x02c7, 0x0158, 0x0000) },
622 { DEADTRANS(L'S', 0x02c7, 0x0160, 0x0000) },
623 { DEADTRANS(L'T', 0x02c7, 0x0164, 0x0000) },
624 { DEADTRANS(L'U', 0x02c7, 0x01d3, 0x0000) },
625 { DEADTRANS(L'Z', 0x02c7, 0x017d, 0x0000) },
626 { DEADTRANS(L'=', 0x02c7, 0x208c, 0x0000) },
627 { DEADTRANS(L'a', 0x02c7, 0x01ce, 0x0000) },
628 { DEADTRANS(L'c', 0x02c7, 0x010d, 0x0000) },
629 { DEADTRANS(L'd', 0x02c7, 0x010f, 0x0000) },
630 { DEADTRANS(L'e', 0x02c7, 0x011b, 0x0000) },
631 { DEADTRANS(L'g', 0x02c7, 0x01e7, 0x0000) },
632 { DEADTRANS(L'h', 0x02c7, 0x021f, 0x0000) },
633 { DEADTRANS(L'i', 0x02c7, 0x01d0, 0x0000) },
634 { DEADTRANS(L'j', 0x02c7, 0x01f0, 0x0000) },
635 { DEADTRANS(L'k', 0x02c7, 0x01e9, 0x0000) },
636 { DEADTRANS(L'l', 0x02c7, 0x013e, 0x0000) },
637 { DEADTRANS(L'n', 0x02c7, 0x0148, 0x0000) },
638 { DEADTRANS(L'o', 0x02c7, 0x01d2, 0x0000) },
639 { DEADTRANS(L'r', 0x02c7, 0x0159, 0x0000) },
640 { DEADTRANS(L's', 0x02c7, 0x0161, 0x0000) },
641 { DEADTRANS(L't', 0x02c7, 0x0165, 0x0000) },
642 { DEADTRANS(L'u', 0x02c7, 0x01d4, 0x0000) },
643 { DEADTRANS(L'z', 0x02c7, 0x017e, 0x0000) },
644 { DEADTRANS(0x00dc, 0x02c7, 0x01d9, 0x0000) },
645 { DEADTRANS(0x00fc, 0x02c7, 0x01da, 0x0000) },
646 { DEADTRANS(0x02c7, 0x02c7, 0x030c, 0x0000) },
647
648 { DEADTRANS(L' ', 0x00a8, 0x00a8, 0x0000) }, /* TREMA */
649 { DEADTRANS(L'-', 0x00a8, 0x2e1a, 0x0000) },
650 { DEADTRANS(L'A', 0x00a8, 0x00c4, 0x0000) },
651 { DEADTRANS(L'E', 0x00a8, 0x00cb, 0x0000) },
652 { DEADTRANS(L'H', 0x00a8, 0x1e26, 0x0000) },
653 { DEADTRANS(L'I', 0x00a8, 0x00cf, 0x0000) },
654 { DEADTRANS(L'O', 0x00a8, 0x00d6, 0x0000) },
655 { DEADTRANS(L'U', 0x00a8, 0x00dc, 0x0000) },
656 { DEADTRANS(L'W', 0x00a8, 0x1e84, 0x0000) },
657 { DEADTRANS(L'X', 0x00a8, 0x1e8c, 0x0000) },
658 { DEADTRANS(L'Y', 0x00a8, 0x0178, 0x0000) },
659 { DEADTRANS(L'a', 0x00a8, 0x00e4, 0x0000) },
660 { DEADTRANS(L'e', 0x00a8, 0x00eb, 0x0000) },
661 { DEADTRANS(L'h', 0x00a8, 0x1e27, 0x0000) },
662 { DEADTRANS(L'i', 0x00a8, 0x00ef, 0x0000) },
663 { DEADTRANS(L'o', 0x00a8, 0x00f6, 0x0000) },
664 { DEADTRANS(L't', 0x00a8, 0x1e97, 0x0000) },
665 { DEADTRANS(L'u', 0x00a8, 0x00fc, 0x0000) },
666 { DEADTRANS(L'w', 0x00a8, 0x1e85, 0x0000) },
667 { DEADTRANS(L'x', 0x00a8, 0x1e8d, 0x0000) },
668 { DEADTRANS(L'y', 0x00a8, 0x00ff, 0x0000) },
669 { DEADTRANS(0x00a8, 0x00a8, 0x0308, 0x0000) },
670
671 { DEADTRANS(L' ', 0x02d8, 0x02d8, 0x0000) }, /* BREVE */
672 { DEADTRANS(L'1', 0x02d8, 0x2153, 0x0000) },
673 { DEADTRANS(L'2', 0x02d8, 0x2154, 0x0000) },
674 { DEADTRANS(L'A', 0x02d8, 0x0102, 0x0000) },
675 { DEADTRANS(L'C', 0x02d8, 0x0187, 0x0000) },
676 { DEADTRANS(L'E', 0x02d8, 0x0114, 0x0000) },
677 { DEADTRANS(L'G', 0x02d8, 0x011e, 0x0000) },
678 { DEADTRANS(L'H', 0x02d8, 0x1e2a, 0x0000) },
679 { DEADTRANS(L'I', 0x02d8, 0x012c, 0x0000) },
680 { DEADTRANS(L'J', 0x02d8, 0x0132, 0x0000) },
681 { DEADTRANS(L'O', 0x02d8, 0x014e, 0x0000) },
682 { DEADTRANS(L'R', 0x02d8, 0x0212, 0x0000) },
683 { DEADTRANS(L'U', 0x02d8, 0x016c, 0x0000) },
684 { DEADTRANS(L'a', 0x02d8, 0x0103, 0x0000) },
685 { DEADTRANS(L'c', 0x02d8, 0x0188, 0x0000) },
686 { DEADTRANS(L'e', 0x02d8, 0x0115, 0x0000) },
687 { DEADTRANS(L'g', 0x02d8, 0x011f, 0x0000) },
688 { DEADTRANS(L'h', 0x02d8, 0x1e2b, 0x0000) },
689 { DEADTRANS(L'i', 0x02d8, 0x012d, 0x0000) },
690 { DEADTRANS(L'j', 0x02d8, 0x0133, 0x0000) },
691 { DEADTRANS(L'k', 0x02d8, 0x0138, 0x0000) },
692 { DEADTRANS(L'n', 0x02d8, 0x0149, 0x0000) },
693 { DEADTRANS(L'o', 0x02d8, 0x014f, 0x0000) },
694 { DEADTRANS(L'r', 0x02d8, 0x0213, 0x0000) },
695 { DEADTRANS(L'u', 0x02d8, 0x016d, 0x0000) },
696 { DEADTRANS(0x02d8, 0x02d8, 0x0306, 0x0000) },
697
698 { DEADTRANS(L' ', 0x02dc, 0x02dc, 0x0000) }, /* TILDE */
699 { DEADTRANS(L'-', 0x02dc, 0x2243, 0x0000) },
700 { DEADTRANS(L'=', 0x02dc, 0x2245, 0x0000) },
701 { DEADTRANS(L'A', 0x02dc, 0x00c3, 0x0000) },
702 { DEADTRANS(L'E', 0x02dc, 0x1ebc, 0x0000) },
703 { DEADTRANS(L'I', 0x02dc, 0x0128, 0x0000) },
704 { DEADTRANS(L'N', 0x02dc, 0x00d1, 0x0000) },
705 { DEADTRANS(L'O', 0x02dc, 0x00d5, 0x0000) },
706 { DEADTRANS(L'U', 0x02dc, 0x0168, 0x0000) },
707 { DEADTRANS(L'V', 0x02dc, 0x1e7c, 0x0000) },
708 { DEADTRANS(L'Y', 0x02dc, 0x1ef8, 0x0000) },
709 { DEADTRANS(L'a', 0x02dc, 0x00e3, 0x0000) },
710 { DEADTRANS(L'e', 0x02dc, 0x1ebd, 0x0000) },
711 { DEADTRANS(L'i', 0x02dc, 0x0129, 0x0000) },
712 { DEADTRANS(L'n', 0x02dc, 0x00f1, 0x0000) },
713 { DEADTRANS(L'o', 0x02dc, 0x00f5, 0x0000) },
714 { DEADTRANS(L'u', 0x02dc, 0x0169, 0x0000) },
715 { DEADTRANS(L'v', 0x02dc, 0x1e7d, 0x0000) },
716 { DEADTRANS(L'y', 0x02dc, 0x1ef9, 0x0000) },
717 { DEADTRANS(L'~', 0x02dc, 0x2248, 0x0000) },
718 { DEADTRANS(0x02dc, 0x02dc, 0x0303, 0x0000) },
719
720 { DEADTRANS(L' ', 0x02da, 0x02da, 0x0000) }, /* RING */
721 { DEADTRANS(L'#', 0x02da, 0x220e, 0x0000) },
722 { DEADTRANS(L'(', 0x02da, 0x2772, 0x0000) },
723 { DEADTRANS(L')', 0x02da, 0x2773, 0x0000) },
724 { DEADTRANS(L'*', 0x02da, 0x2217, 0x0000) },
725 { DEADTRANS(L'+', 0x02da, 0x2295, 0x0000) },
726 { DEADTRANS(L'-', 0x02da, 0x2296, 0x0000) },
727 { DEADTRANS(L'.', 0x02da, 0x22c5, 0x0000) },
728 { DEADTRANS(L'/', 0x02da, 0x2215, 0x0000) },
729 { DEADTRANS(L'0', 0x02da, 0x24ea, 0x0000) },
730 { DEADTRANS(L'1', 0x02da, 0x2460, 0x0000) },
731 { DEADTRANS(L'2', 0x02da, 0x2461, 0x0000) },
732 { DEADTRANS(L'3', 0x02da, 0x2462, 0x0000) },
733 { DEADTRANS(L'4', 0x02da, 0x2463, 0x0000) },
734 { DEADTRANS(L'5', 0x02da, 0x2464, 0x0000) },
735 { DEADTRANS(L'6', 0x02da, 0x2465, 0x0000) },
736 { DEADTRANS(L'7', 0x02da, 0x2466, 0x0000) },
737 { DEADTRANS(L'8', 0x02da, 0x2467, 0x0000) },
738 { DEADTRANS(L'9', 0x02da, 0x2468, 0x0000) },
739 { DEADTRANS(L':', 0x02da, 0x2236, 0x0000) },
740 { DEADTRANS(L';', 0x02da, 0x21cc, 0x0000) },
741 { DEADTRANS(L'<', 0x02da, 0x226a, 0x0000) },
742 { DEADTRANS(L'=', 0x02da, 0x225d, 0x0000) },
743 { DEADTRANS(L'>', 0x02da, 0x226b, 0x0000) },
744 { DEADTRANS(L'A', 0x02da, 0x00c5, 0x0000) },
745 { DEADTRANS(L'B', 0x02da, 0x21ce, 0x0000) },
746 { DEADTRANS(L'C', 0x02da, 0x2102, 0x0000) },
747 { DEADTRANS(L'D', 0x02da, 0x2206, 0x0000) },
748 { DEADTRANS(L'E', 0x02da, 0x2204, 0x0000) },
749 { DEADTRANS(L'F', 0x02da, 0x2234, 0x0000) },
750 { DEADTRANS(L'G', 0x02da, 0x2284, 0x0000) },
751 { DEADTRANS(L'H', 0x02da, 0x210f, 0x0000) },
752 { DEADTRANS(L'I', 0x02da, 0x221d, 0x0000) },
753 { DEADTRANS(L'J', 0x02da, 0x2285, 0x0000) },
754 { DEADTRANS(L'K', 0x02da, 0x2287, 0x0000) },
755 { DEADTRANS(L'L', 0x02da, 0x2229, 0x0000) },
756 { DEADTRANS(L'M', 0x02da, 0x21cf, 0x0000) },
757 { DEADTRANS(L'N', 0x02da, 0x2115, 0x0000) },
758 { DEADTRANS(L'O', 0x02da, 0x2220, 0x0000) },
759 { DEADTRANS(L'P', 0x02da, 0x2117, 0x0000) },
760 { DEADTRANS(L'Q', 0x02da, 0x211a, 0x0000) },
761 { DEADTRANS(L'R', 0x02da, 0x211d, 0x0000) },
762 { DEADTRANS(L'S', 0x02da, 0x2207, 0x0000) },
763 { DEADTRANS(L'T', 0x02da, 0x221f, 0x0000) },
764 { DEADTRANS(L'U', 0x02da, 0x016e, 0x0000) },
765 { DEADTRANS(L'V', 0x02da, 0x2227, 0x0000) },
766 { DEADTRANS(L'W', 0x02da, 0x02ac, 0x0000) },
767 { DEADTRANS(L'X', 0x02da, 0x2135, 0x0000) },
768 { DEADTRANS(L'Y', 0x02da, 0x2222, 0x0000) },
769 { DEADTRANS(L'Z', 0x02da, 0x2124, 0x0000) },
770 { DEADTRANS(L'[', 0x02da, 0x27e6, 0x0000) },
771 { DEADTRANS(L']', 0x02da, 0x27e7, 0x0000) },
772 { DEADTRANS(L'a', 0x02da, 0x00e5, 0x0000) },
773 { DEADTRANS(L'b', 0x02da, 0x21d4, 0x0000) },
774 { DEADTRANS(L'c', 0x02da, 0x221b, 0x0000) },
775 { DEADTRANS(L'd', 0x02da, 0x2202, 0x0000) },
776 { DEADTRANS(L'e', 0x02da, 0x2203, 0x0000) },
777 { DEADTRANS(L'f', 0x02da, 0x2235, 0x0000) },
778 { DEADTRANS(L'g', 0x02da, 0x2282, 0x0000) },
779 { DEADTRANS(L'h', 0x02da, 0x210e, 0x0000) },
780 { DEADTRANS(L'i', 0x02da, 0x221e, 0x0000) },
781 { DEADTRANS(L'j', 0x02da, 0x2283, 0x0000) },
782 { DEADTRANS(L'k', 0x02da, 0x2286, 0x0000) },
783 { DEADTRANS(L'l', 0x02da, 0x222a, 0x0000) },
784 { DEADTRANS(L'm', 0x02da, 0x21d2, 0x0000) },
785 { DEADTRANS(L'n', 0x02da, 0x21d0, 0x0000) },
786 { DEADTRANS(L'o', 0x02da, 0x2221, 0x0000) },
787 { DEADTRANS(L'p', 0x02da, 0x220f, 0x0000) },
788 { DEADTRANS(L'q', 0x02da, 0x2200, 0x0000) },
789 { DEADTRANS(L'r', 0x02da, 0x221a, 0x0000) },
790 { DEADTRANS(L's', 0x02da, 0x2194, 0x0000) },
791 { DEADTRANS(L't', 0x02da, 0x22a5, 0x0000) },
792 { DEADTRANS(L'u', 0x02da, 0x016f, 0x0000) },
793 { DEADTRANS(L'v', 0x02da, 0x2228, 0x0000) },
794 { DEADTRANS(L'w', 0x02da, 0x1e98, 0x0000) },
795 { DEADTRANS(L'x', 0x02da, 0x2715, 0x0000) },
796 { DEADTRANS(L'y', 0x02da, 0x1e99, 0x0000) },
797 { DEADTRANS(L'z', 0x02da, 0x26a1, 0x0000) },
798 { DEADTRANS(L'~', 0x02da, 0x2e1b, 0x0000) },
799 { DEADTRANS(0x00b7, 0x02da, 0x2219, 0x0000) },
800 { DEADTRANS(0x00c4, 0x02da, 0x220c, 0x0000) },
801 { DEADTRANS(0x00d6, 0x02da, 0x2209, 0x0000) },
802 { DEADTRANS(0x00d7, 0x02da, 0x2297, 0x0000) },
803 { DEADTRANS(0x00dc, 0x02da, 0x2226, 0x0000) },
804 { DEADTRANS(L'ß', 0x02da, 0x222b, 0x0000) },
805 { DEADTRANS(0x00e4, 0x02da, 0x220b, 0x0000) },
806 { DEADTRANS(0x00f6, 0x02da, 0x2208, 0x0000) },
807 { DEADTRANS(0x00fc, 0x02da, 0x2225, 0x0000) },
808 { DEADTRANS(0x02da, 0x02da, 0x030a, 0x0000) },
809
810 { DEADTRANS(L' ', 0x02c0, 0x02c0, 0x0000) }, /* HORN */
811 { DEADTRANS(L'A', 0x02c0, 0x1ea2, 0x0000) },
812 { DEADTRANS(L'E', 0x02c0, 0x1eba, 0x0000) },
813 { DEADTRANS(L'I', 0x02c0, 0x1ec8, 0x0000) },
814 { DEADTRANS(L'O', 0x02c0, 0x1ece, 0x0000) },
815 { DEADTRANS(L'U', 0x02c0, 0x1ee6, 0x0000) },
816 { DEADTRANS(L'Y', 0x02c0, 0x1ef6, 0x0000) },
817 { DEADTRANS(L'a', 0x02c0, 0x1ea3, 0x0000) },
818 { DEADTRANS(L'e', 0x02c0, 0x1ebb, 0x0000) },
819 { DEADTRANS(L'i', 0x02c0, 0x1ec9, 0x0000) },
820 { DEADTRANS(L'o', 0x02c0, 0x1ecf, 0x0000) },
821 { DEADTRANS(L'u', 0x02c0, 0x1ee7, 0x0000) },
822 { DEADTRANS(L'y', 0x02c0, 0x1ef7, 0x0000) },
823 { DEADTRANS(0x02c0, 0x02c0, 0x0309, 0x0000) },
824
825 { DEADTRANS(L' ', 0x02bc, 0x02bc, 0x0000) }, /* HAKEN */
826 { DEADTRANS(L'1', 0x02bc, 0x215b, 0x0000) },
827 { DEADTRANS(L'3', 0x02bc, 0x215c, 0x0000) },
828 { DEADTRANS(L'5', 0x02bc, 0x215d, 0x0000) },
829 { DEADTRANS(L'7', 0x02bc, 0x215e, 0x0000) },
830 { DEADTRANS(L'A', 0x02bc, 0x0391, 0x0000) },
831 { DEADTRANS(L'B', 0x02bc, 0x0392, 0x0000) },
832 { DEADTRANS(L'C', 0x02bc, 0x02a8, 0x0000) },
833 { DEADTRANS(L'D', 0x02bc, 0x0394, 0x0000) },
834 { DEADTRANS(L'E', 0x02bc, 0x0395, 0x0000) },
835 { DEADTRANS(L'F', 0x02bc, 0x03a6, 0x0000) },
836 { DEADTRANS(L'G', 0x02bc, 0x0393, 0x0000) },
837 { DEADTRANS(L'H', 0x02bc, 0x0397, 0x0000) },
838 { DEADTRANS(L'I', 0x02bc, 0x0399, 0x0000) },
839 { DEADTRANS(L'J', 0x02bc, 0x039e, 0x0000) },
840 { DEADTRANS(L'K', 0x02bc, 0x039a, 0x0000) },
841 { DEADTRANS(L'L', 0x02bc, 0x039b, 0x0000) },
842 { DEADTRANS(L'M', 0x02bc, 0x039c, 0x0000) },
843 { DEADTRANS(L'N', 0x02bc, 0x039d, 0x0000) },
844 { DEADTRANS(L'O', 0x02bc, 0x01a0, 0x0000) },
845 { DEADTRANS(L'P', 0x02bc, 0x03a0, 0x0000) },
846 { DEADTRANS(L'Q', 0x02bc, 0x0342, 0x0000) },
847 { DEADTRANS(L'R', 0x02bc, 0x03a1, 0x0000) },
848 { DEADTRANS(L'S', 0x02bc, 0x03a3, 0x0000) },
849 { DEADTRANS(L'T', 0x02bc, 0x03a4, 0x0000) },
850 { DEADTRANS(L'U', 0x02bc, 0x01af, 0x0000) },
851 { DEADTRANS(L'V', 0x02bc, 0x03a9, 0x0000) },
852 { DEADTRANS(L'W', 0x02bc, 0x0314, 0x0000) },
853 { DEADTRANS(L'X', 0x02bc, 0x03a7, 0x0000) },
854 { DEADTRANS(L'Y', 0x02bc, 0x03a5, 0x0000) },
855 { DEADTRANS(L'Z', 0x02bc, 0x0396, 0x0000) },
856 { DEADTRANS(L'a', 0x02bc, 0x03b1, 0x0000) },
857 { DEADTRANS(L'b', 0x02bc, 0x03b2, 0x0000) },
858 { DEADTRANS(L'c', 0x02bc, 0x03c8, 0x0000) },
859 { DEADTRANS(L'd', 0x02bc, 0x03b4, 0x0000) },
860 { DEADTRANS(L'e', 0x02bc, 0x03b5, 0x0000) },
861 { DEADTRANS(L'f', 0x02bc, 0x03c6, 0x0000) },
862 { DEADTRANS(L'g', 0x02bc, 0x03b3, 0x0000) },
863 { DEADTRANS(L'h', 0x02bc, 0x03b7, 0x0000) },
864 { DEADTRANS(L'i', 0x02bc, 0x03b9, 0x0000) },
865 { DEADTRANS(L'j', 0x02bc, 0x03be, 0x0000) },
866 { DEADTRANS(L'k', 0x02bc, 0x03ba, 0x0000) },
867 { DEADTRANS(L'l', 0x02bc, 0x03bb, 0x0000) },
868 { DEADTRANS(L'm', 0x02bc, 0x03bc, 0x0000) },
869 { DEADTRANS(L'n', 0x02bc, 0x03bd, 0x0000) },
870 { DEADTRANS(L'o', 0x02bc, 0x01a1, 0x0000) },
871 { DEADTRANS(L'p', 0x02bc, 0x03c0, 0x0000) },
872 { DEADTRANS(L'q', 0x02bc, 0x0345, 0x0000) },
873 { DEADTRANS(L'r', 0x02bc, 0x03c1, 0x0000) },
874 { DEADTRANS(L's', 0x02bc, 0x03c3, 0x0000) },
875 { DEADTRANS(L't', 0x02bc, 0x03c4, 0x0000) },
876 { DEADTRANS(L'u', 0x02bc, 0x01b0, 0x0000) },
877 { DEADTRANS(L'v', 0x02bc, 0x03c9, 0x0000) },
878 { DEADTRANS(L'w', 0x02bc, 0x03c2, 0x0000) },
879 { DEADTRANS(L'x', 0x02bc, 0x03c7, 0x0000) },
880 { DEADTRANS(L'y', 0x02bc, 0x03c5, 0x0000) },
881 { DEADTRANS(L'z', 0x02bc, 0x03b6, 0x0000) },
882 { DEADTRANS(0x00c4, 0x02bc, 0x0391, 0x0000) },
883 { DEADTRANS(0x00d6, 0x02bc, 0x039f, 0x0000) },
884 { DEADTRANS(0x00dc, 0x02bc, 0x0398, 0x0000) },
885 { DEADTRANS(L'ß', 0x02bc, 0x0313, 0x0000) },
886 { DEADTRANS(0x00e4, 0x02bc, 0x03b1, 0x0000) },
887 { DEADTRANS(0x00f6, 0x02bc, 0x03bf, 0x0000) },
888 { DEADTRANS(0x00fc, 0x02bc, 0x03b8, 0x0000) },
889 { DEADTRANS(0x02bc, 0x02bc, 0x031b, 0x0000) },
890
891 { DEADTRANS(L' ', 0x02df, 0x200a, 0x0000) }, /* EXTRA-WAHLTASTE incomplete */
892 { DEADTRANS(L'!', 0x02df, 0x25ca, 0x0000) },
893 { DEADTRANS(L'\"', 0x02df, 0x00a6, 0x0000) },
894 { DEADTRANS(L'#', 0x02df, 0x2020, 0x0000) },
895 { DEADTRANS(L'$', 0x02df, 0x2133, 0x0000) },
896 { DEADTRANS(L'%', 0x02df, 0x20b0, 0x0000) },
897 { DEADTRANS(L'&', 0x02df, 0x204a, 0x0000) },
898 { DEADTRANS(L'\'', 0x02df, 0x2021, 0x0000) },
899 { DEADTRANS(L'(', 0x02df, 0x27ea, 0x0000) },
900 { DEADTRANS(L')', 0x02df, 0x27eb, 0x0000) },
901 { DEADTRANS(L'*', 0x02df, 0x2052, 0x0000) },
902 { DEADTRANS(L'+', 0x00b1, 0x204a, 0x0000) },
903 { DEADTRANS(L',', 0x02bb, 0x204a, 0x0000) },
904 { DEADTRANS(L'-', 0x2022, 0x204a, 0x0000) },
905 { DEADTRANS(L'.', 0x2026, 0x204a, 0x0000) },
906 { DEADTRANS(L'/', 0x2116, 0x204a, 0x0000) },
907 { DEADTRANS(L'0', 0x00b1, 0x00f7, 0x0000) },
908 { DEADTRANS(L'1', 0x00b1, 0x00bc, 0x0000) },
909 { DEADTRANS(L'2', 0x00b1, 0x00bd, 0x0000) },
910 { DEADTRANS(L'3', 0x00b1, 0x00be, 0x0000) },
911 { DEADTRANS(L'4', 0x00b1, 0x00a4, 0x0000) },
912 { DEADTRANS(L'5', 0x00b1, 0x2030, 0x0000) },
913 { DEADTRANS(L'6', 0x00b1, 0x2044, 0x0000) },
914 { DEADTRANS(L'7', 0x00b1, 0x2300, 0x0000) },
915 { DEADTRANS(L'8', 0x00b1, 0x27e8, 0x0000) },
916 { DEADTRANS(L'9', 0x00b1, 0x27e9, 0x0000) },
917 { DEADTRANS(L':', 0x00b1, 0x2713, 0x0000) },
918 { DEADTRANS(L';', 0x00b1, 0x2665, 0x0000) },
919 { DEADTRANS(L'<', 0x00b1, 0x2264, 0x0000) },
920 { DEADTRANS(L'=', 0x00b1, 0x2205, 0x0000) },
921 { DEADTRANS(L'>', 0x00b1, 0x2265, 0x0000) },
922 { DEADTRANS(L'?', 0x00b1, 0x00ac, 0x0000) },
923 { DEADTRANS(L'B', 0x00b1, 0x2019, 0x0000) },
924 { DEADTRANS(L'C', 0x00b1, 0x00a9, 0x0000) },
925 { DEADTRANS(L'D', 0x00b1, 0x00d0, 0x0000) },
926 { DEADTRANS(L'E', 0x00b1, 0x018f, 0x0000) },
927 { DEADTRANS(L'G', 0x00b1, 0x261b, 0x0000) },
928 { DEADTRANS(L'H', 0x00b1, 0x261a, 0x0000) },
929 { DEADTRANS(L'I', 0x00b1, 0x26a5, 0x0000) },
930 { DEADTRANS(L'J', 0x00b1, 0x02ba, 0x0000) },
931 { DEADTRANS(L'L', 0x00b1, 0x0141, 0x0000) },
932 { DEADTRANS(L'M', 0x00b1, 0x2217, 0x0000) },
933 { DEADTRANS(L'N', 0x00b1, 0x014a, 0x0000) },
934 { DEADTRANS(L'O', 0x00b1, 0x00d8, 0x0000) },
935 { DEADTRANS(L'P', 0x00b1, 0x2190, 0x0000) },
936 { DEADTRANS(L'Q', 0x00b1, 0x2642, 0x0000) },
937 { DEADTRANS(L'R', 0x00b1, 0x00ae, 0x0000) },
938 { DEADTRANS(L'S', 0x00b1, 0x2211, 0x0000) },
939 { DEADTRANS(L'T', 0x00b1, 0x00de, 0x0000) },
940 { DEADTRANS(L'U', 0x00b1, 0x2191, 0x0000) },
941 { DEADTRANS(L'V', 0x00b1, 0x2018, 0x0000) },
942 { DEADTRANS(L'W', 0x00b1, 0x2640, 0x0000) },
943 { DEADTRANS(L'X', 0x00b1, 0x201a, 0x0000) },
944 { DEADTRANS(L'Y', 0x00b1, 0x23d1, 0x0000) },
945 { DEADTRANS(L'Z', 0x00b1, 0x01b7, 0x0000) },
946 { DEADTRANS(L'_', 0x00b1, 0x25e6, 0x0000) },
947 { DEADTRANS(L'`', 0x00b1, 0x00a5, 0x0000) },
948 { DEADTRANS(L'b', 0x00b1, 0x201d, 0x0000) },
949 { DEADTRANS(L'c', 0x00b1, 0x00a2, 0x0000) },
950 { DEADTRANS(L'd', 0x00b1, 0x00f0, 0x0000) },
951 { DEADTRANS(L'e', 0x00b1, 0x0259, 0x0000) },
952 { DEADTRANS(L'g', 0x00b1, 0x02bf, 0x0000) },
953 { DEADTRANS(L'h', 0x00b1, 0x02be, 0x0000) },
954 { DEADTRANS(L'i', 0x00b1, 0x0131, 0x0000) },
955 { DEADTRANS(L'j', 0x00b1, 0x02b9, 0x0000) },
956 { DEADTRANS(L'l', 0x00b1, 0x0142, 0x0000) },
957 { DEADTRANS(L'm', 0x00b1, 0x200c, 0x0000) },
958 { DEADTRANS(L'n', 0x00b1, 0x014b, 0x0000) },
959 { DEADTRANS(L'o', 0x00b1, 0x00f8, 0x0000) },
960 { DEADTRANS(L'p', 0x00b1, 0x2192, 0x0000) },
961 { DEADTRANS(L'q', 0x00b1, 0x00ba, 0x0000) },
962 { DEADTRANS(L'r', 0x00b1, 0x2122, 0x0000) },
963 { DEADTRANS(L's', 0x00b1, 0x017f, 0x0000) },
964 { DEADTRANS(L't', 0x00b1, 0x00fe, 0x0000) },
965 { DEADTRANS(L'u', 0x00b1, 0x2193, 0x0000) },
966 { DEADTRANS(L'v', 0x00b1, 0x201c, 0x0000) },
967 { DEADTRANS(L'w', 0x00b1, 0x00aa, 0x0000) },
968 { DEADTRANS(L'x', 0x00b1, 0x201e, 0x0000) },
969 { DEADTRANS(L'y', 0x00b1, 0x2423, 0x0000) },
970 { DEADTRANS(L'z', 0x00b1, 0x0292, 0x0000) },
971 { DEADTRANS(L'§', 0x00b1, 0x00b6, 0x0000) },
972 { DEADTRANS(0x00b4, 0x00b1, 0x00a3, 0x0000) },
973 { DEADTRANS(0x00c4, 0x00b1, 0x00c6, 0x0000) },
974 { DEADTRANS(0x00d6, 0x00b1, 0x0152, 0x0000) },
975 { DEADTRANS(0x00dc, 0x00b1, 0x2197, 0x0000) },
976 { DEADTRANS(0x00df, 0x00b1, 0x2260, 0x0000) },
977 { DEADTRANS(0x00e4, 0x00b1, 0x00e6, 0x0000) },
978 { DEADTRANS(0x00f6, 0x00b1, 0x0153, 0x0000) },
979 { DEADTRANS(0x00fc, 0x00b1, 0x2198, 0x0000) },
980
981 { DEADTRANS(L' ', 0x02cd, 0x02cd, 0x0000) }, /* UNTERSTRICH */
982 { DEADTRANS(L'+', 0x02cd, 0x00b1, 0x0000) },
983 { DEADTRANS(L'-', 0x02cd, 0x2e40, 0x0000) },
984 { DEADTRANS(L'<', 0x02cd, 0x2264, 0x0000) },
985 { DEADTRANS(L'=', 0x02cd, 0x2261, 0x0000) },
986 { DEADTRANS(L'>', 0x02cd, 0x2265, 0x0000) },
987 { DEADTRANS(L'B', 0x02cd, 0x1e06, 0x0000) },
988 { DEADTRANS(L'D', 0x02cd, 0x1e0e, 0x0000) },
989 { DEADTRANS(L'K', 0x02cd, 0x1e34, 0x0000) },
990 { DEADTRANS(L'L', 0x02cd, 0x1e3a, 0x0000) },
991 { DEADTRANS(L'N', 0x02cd, 0x1e48, 0x0000) },
992 { DEADTRANS(L'R', 0x02cd, 0x1e5e, 0x0000) },
993 { DEADTRANS(L'T', 0x02cd, 0x1e6e, 0x0000) },
994 { DEADTRANS(L'Z', 0x02cd, 0x1e94, 0x0000) },
995 { DEADTRANS(L'_', 0x02cd, 0x2017, 0x0000) },
996 { DEADTRANS(L'b', 0x02cd, 0x1e07, 0x0000) },
997 { DEADTRANS(L'd', 0x02cd, 0x1e0f, 0x0000) },
998 { DEADTRANS(L'h', 0x02cd, 0x1e96, 0x0000) },
999 { DEADTRANS(L'k', 0x02cd, 0x1e35, 0x0000) },
1000 { DEADTRANS(L'l', 0x02cd, 0x1e3b, 0x0000) },
1001 { DEADTRANS(L'n', 0x02cd, 0x1e49, 0x0000) },
1002 { DEADTRANS(L'r', 0x02cd, 0x1e5f, 0x0000) },
1003 { DEADTRANS(L't', 0x02cd, 0x1e6f, 0x0000) },
1004 { DEADTRANS(L'z', 0x02cd, 0x1e95, 0x0000) },
1005 { DEADTRANS(0x02cd, 0x02cd, 0x0331, 0x0000) },
1006
1007 { DEADTRANS(L' ', 0x00b8, 0x00b8, 0x0000) }, /* CEDILLA */
1008 { DEADTRANS(L'C', 0x00b8, 0x00c7, 0x0000) },
1009 { DEADTRANS(L'D', 0x00b8, 0x1e10, 0x0000) },
1010 { DEADTRANS(L'E', 0x00b8, 0x0228, 0x0000) },
1011 { DEADTRANS(L'G', 0x00b8, 0x0122, 0x0000) },
1012 { DEADTRANS(L'H', 0x00b8, 0x1e28, 0x0000) },
1013 { DEADTRANS(L'K', 0x00b8, 0x0136, 0x0000) },
1014 { DEADTRANS(L'L', 0x00b8, 0x013b, 0x0000) },
1015 { DEADTRANS(L'N', 0x00b8, 0x0145, 0x0000) },
1016 { DEADTRANS(L'R', 0x00b8, 0x0156, 0x0000) },
1017 { DEADTRANS(L'S', 0x00b8, 0x015e, 0x0000) },
1018 { DEADTRANS(L'T', 0x00b8, 0x0162, 0x0000) },
1019 { DEADTRANS(L'c', 0x00b8, 0x00e7, 0x0000) },
1020 { DEADTRANS(L'd', 0x00b8, 0x1e11, 0x0000) },
1021 { DEADTRANS(L'e', 0x00b8, 0x0229, 0x0000) },
1022 { DEADTRANS(L'g', 0x00b8, 0x0123, 0x0000) },
1023 { DEADTRANS(L'h', 0x00b8, 0x1e29, 0x0000) },
1024 { DEADTRANS(L'k', 0x00b8, 0x0137, 0x0000) },
1025 { DEADTRANS(L'l', 0x00b8, 0x013c, 0x0000) },
1026 { DEADTRANS(L'n', 0x00b8, 0x0146, 0x0000) },
1027 { DEADTRANS(L'r', 0x00b8, 0x0157, 0x0000) },
1028 { DEADTRANS(L's', 0x00b8, 0x015f, 0x0000) },
1029 { DEADTRANS(L't', 0x00b8, 0x0163, 0x0000) },
1030 { DEADTRANS(0x00b8, 0x00b8, 0x0327, 0x0000) },
1031
1032 { DEADTRANS(L' ', 0x02cf, 0x2e34, 0x0000) }, /* UNTERKOMMA */
1033 { DEADTRANS(L'!', 0x02cf, 0x01c3, 0x0000) },
1034 { DEADTRANS(L'\"', 0x02cf, 0x01c1, 0x0000) },
1035 { DEADTRANS(L'#', 0x02cf, 0x01c2, 0x0000) },
1036 { DEADTRANS(L'\'', 0x02cf, 0x01c0, 0x0000) },
1037 { DEADTRANS(L'(', 0x02cf, 0x2e24, 0x0000) },
1038 { DEADTRANS(L')', 0x02cf, 0x2e25, 0x0000) },
1039 { DEADTRANS(L'1', 0x02cf, 0x01c0, 0x0000) },
1040 { DEADTRANS(L'2', 0x02cf, 0x01c1, 0x0000) },
1041 { DEADTRANS(L'3', 0x02cf, 0x01c2, 0x0000) },
1042 { DEADTRANS(L'4', 0x02cf, 0x01c3, 0x0000) },
1043 { DEADTRANS(L'=', 0x02cf, 0x2e17, 0x0000) },
1044 { DEADTRANS(L'?', 0x02cf, 0x1e2e, 0x0000) },
1045 { DEADTRANS(L'B', 0x02cf, 0xa722, 0x0000) },
1046 { DEADTRANS(L'C', 0x02cf, 0xa724, 0x0000) },
1047 { DEADTRANS(L'F', 0x02cf, 0x0191, 0x0000) },
1048 { DEADTRANS(L'G', 0x02cf, 0x0122, 0x0000) },
1049 { DEADTRANS(L'H', 0x02cf, 0x01f6, 0x0000) },
1050 { DEADTRANS(L'I', 0x02cf, 0xa7bc, 0x0000) },
1051 { DEADTRANS(L'K', 0x02cf, 0x0136, 0x0000) },
1052 { DEADTRANS(L'L', 0x02cf, 0x013b, 0x0000) },
1053 { DEADTRANS(L'N', 0x02cf, 0x0145, 0x0000) },
1054 { DEADTRANS(L'Q', 0x02cf, 0x0241, 0x0000) },
1055 { DEADTRANS(L'R', 0x02cf, 0x211e, 0x0000) },
1056 { DEADTRANS(L'S', 0x02cf, 0x0218, 0x0000) },
1057 { DEADTRANS(L'T', 0x02cf, 0x021a, 0x0000) },
1058 { DEADTRANS(L'W', 0x02cf, 0x01f7, 0x0000) },
1059 { DEADTRANS(L'Y', 0x02cf, 0x021c, 0x0000) },
1060 { DEADTRANS(L'Z', 0x02cf, 0x0224, 0x0000) },
1061 { DEADTRANS(L'[', 0x02cf, 0x2e22, 0x0000) },
1062 { DEADTRANS(L']', 0x02cf, 0x2e23, 0x0000) },
1063 { DEADTRANS(L'^', 0x02cf, 0x032d, 0x0000) },
1064 { DEADTRANS(L'`', 0x02cf, 0x030f, 0x0000) },
1065 { DEADTRANS(L'b', 0x02cf, 0xa723, 0x0000) },
1066 { DEADTRANS(L'c', 0x02cf, 0xa725, 0x0000) },
1067 { DEADTRANS(L'f', 0x02cf, 0x0192, 0x0000) },
1068 { DEADTRANS(L'g', 0x02cf, 0x0123, 0x0000) },
1069 { DEADTRANS(L'h', 0x02cf, 0x0195, 0x0000) },
1070 { DEADTRANS(L'i', 0x02cf, 0xa7bd, 0x0000) },
1071 { DEADTRANS(L'k', 0x02cf, 0x0137, 0x0000) },
1072 { DEADTRANS(L'l', 0x02cf, 0x013c, 0x0000) },
1073 { DEADTRANS(L'n', 0x02cf, 0x0146, 0x0000) },
1074 { DEADTRANS(L'q', 0x02cf, 0x0242, 0x0000) },
1075 { DEADTRANS(L'r', 0x02cf, 0x027c, 0x0000) },
1076 { DEADTRANS(L's', 0x02cf, 0x0219, 0x0000) },
1077 { DEADTRANS(L't', 0x02cf, 0x021b, 0x0000) },
1078 { DEADTRANS(L'w', 0x02cf, 0x01bf, 0x0000) },
1079 { DEADTRANS(L'y', 0x02cf, 0x021d, 0x0000) },
1080 { DEADTRANS(L'z', 0x02cf, 0x021d, 0x0000) },
1081 { DEADTRANS(0x007c, 0x02cf, 0x2980, 0x0000) },
1082 { DEADTRANS(0x00af, 0x02cf, 0x0305, 0x0000) },
1083 { DEADTRANS(0x00b4, 0x02cf, 0x030d, 0x0000) },
1084 { DEADTRANS(0x02bc, 0x02cf, 0x0315, 0x0000) },
1085 { DEADTRANS(0x02c0, 0x02cf, 0x0312, 0x0000) },
1086 { DEADTRANS(0x02cd, 0x02cf, 0x0332, 0x0000) },
1087 { DEADTRANS(0x02cf, 0x02cf, 0x0326, 0x0000) },
1088 { DEADTRANS(0x02d8, 0x02cf, 0x032f, 0x0000) },
1089 { DEADTRANS(0x02d9, 0x02cf, 0x0358, 0x0000) },
1090 { DEADTRANS(0x02db, 0x02cf, 0x1ab7, 0x0000) },
1091 { DEADTRANS(0x2032, 0x02cf, 0x2035, 0x0000) },
1092 { DEADTRANS(0x2033, 0x02cf, 0x2036, 0x0000) },
1093
1094 { DEADTRANS(L' ', 0x02db, 0x02db, 0x0000) }, /* OGONEK */
1095 { DEADTRANS(L'A', 0x02db, 0x0104, 0x0000) },
1096 { DEADTRANS(L'E', 0x02db, 0x0118, 0x0000) },
1097 { DEADTRANS(L'I', 0x02db, 0x012e, 0x0000) },
1098 { DEADTRANS(L'O', 0x02db, 0x01ea, 0x0000) },
1099 { DEADTRANS(L'U', 0x02db, 0x0172, 0x0000) },
1100 { DEADTRANS(L'a', 0x02db, 0x0105, 0x0000) },
1101 { DEADTRANS(L'e', 0x02db, 0x0119, 0x0000) },
1102 { DEADTRANS(L'i', 0x02db, 0x012f, 0x0000) },
1103 { DEADTRANS(L'o', 0x02db, 0x01eb, 0x0000) },
1104 { DEADTRANS(L'u', 0x02db, 0x0173, 0x0000) },
1105 { DEADTRANS(0x02db, 0x02db, 0x0328, 0x0000) },
1106
1107 { DEADTRANS(L' ', 0x02cc, 0x2e33, 0x0000) }, /* UNTERPUNKT */
1108 { DEADTRANS(L'A', 0x02cc, 0x1ea0, 0x0000) },
1109 { DEADTRANS(L'B', 0x02cc, 0x1e04, 0x0000) },
1110 { DEADTRANS(L'D', 0x02cc, 0x1e0c, 0x0000) },
1111 { DEADTRANS(L'E', 0x02cc, 0x1eb8, 0x0000) },
1112 { DEADTRANS(L'H', 0x02cc, 0x1e24, 0x0000) },
1113 { DEADTRANS(L'I', 0x02cc, 0x1eca, 0x0000) },
1114 { DEADTRANS(L'K', 0x02cc, 0x1e32, 0x0000) },
1115 { DEADTRANS(L'L', 0x02cc, 0x1e36, 0x0000) },
1116 { DEADTRANS(L'M', 0x02cc, 0x1e42, 0x0000) },
1117 { DEADTRANS(L'N', 0x02cc, 0x1e46, 0x0000) },
1118 { DEADTRANS(L'O', 0x02cc, 0x1ecc, 0x0000) },
1119 { DEADTRANS(L'R', 0x02cc, 0x1e5a, 0x0000) },
1120 { DEADTRANS(L'S', 0x02cc, 0x1e62, 0x0000) },
1121 { DEADTRANS(L'T', 0x02cc, 0x1e6c, 0x0000) },
1122 { DEADTRANS(L'U', 0x02cc, 0x1ee4, 0x0000) },
1123 { DEADTRANS(L'V', 0x02cc, 0x1e7e, 0x0000) },
1124 { DEADTRANS(L'W', 0x02cc, 0x1e88, 0x0000) },
1125 { DEADTRANS(L'Y', 0x02cc, 0x1ef4, 0x0000) },
1126 { DEADTRANS(L'Z', 0x02cc, 0x1e92, 0x0000) },
1127 { DEADTRANS(L'a', 0x02cc, 0x1ea1, 0x0000) },
1128 { DEADTRANS(L'b', 0x02cc, 0x1e05, 0x0000) },
1129 { DEADTRANS(L'd', 0x02cc, 0x1e0d, 0x0000) },
1130 { DEADTRANS(L'e', 0x02cc, 0x1eb9, 0x0000) },
1131 { DEADTRANS(L'h', 0x02cc, 0x1e25, 0x0000) },
1132 { DEADTRANS(L'i', 0x02cc, 0x1ecb, 0x0000) },
1133 { DEADTRANS(L'k', 0x02cc, 0x1e33, 0x0000) },
1134 { DEADTRANS(L'l', 0x02cc, 0x1e37, 0x0000) },
1135 { DEADTRANS(L'm', 0x02cc, 0x1e43, 0x0000) },
1136 { DEADTRANS(L'n', 0x02cc, 0x1e47, 0x0000) },
1137 { DEADTRANS(L'o', 0x02cc, 0x1ecd, 0x0000) },
1138 { DEADTRANS(L'r', 0x02cc, 0x1e5b, 0x0000) },
1139 { DEADTRANS(L's', 0x02cc, 0x1e63, 0x0000) },
1140 { DEADTRANS(L't', 0x02cc, 0x1e6d, 0x0000) },
1141 { DEADTRANS(L'u', 0x02cc, 0x1ee5, 0x0000) },
1142 { DEADTRANS(L'v', 0x02cc, 0x1e7f, 0x0000) },
1143 { DEADTRANS(L'w', 0x02cc, 0x1e89, 0x0000) },
1144 { DEADTRANS(L'y', 0x02cc, 0x1ef5, 0x0000) },
1145 { DEADTRANS(L'z', 0x02cc, 0x1e93, 0x0000) },
1146 { DEADTRANS(L'~', 0x02cc, 0x2e1f, 0x0000) },
1147 { DEADTRANS(0x02cc, 0x02cc, 0x0323, 0x0000) },
1148
1149 { DEADTRANS(L' ', 0x02d7, 0x2012, 0x0000) }, /* QUERSTRICHAKZENT */
1150 { DEADTRANS(L'#', 0x02d7, 0x203b, 0x0000) },
1151 { DEADTRANS(L'%', 0x02d7, 0x2114, 0x0000) },
1152 { DEADTRANS(L'\'', 0x02d7, 0x266a, 0x0000) },
1153 { DEADTRANS(L'(', 0x02d7, 0xfd3e, 0x0000) },
1154 { DEADTRANS(L')', 0x02d7, 0xfd3f, 0x0000) },
1155 { DEADTRANS(L'*', 0x02d7, 0x2042, 0x0000) },
1156 { DEADTRANS(L'+', 0x02d7, 0x2318, 0x0000) },
1157 { DEADTRANS(L',', 0x02d7, 0x25c1, 0x0000) },
1158 { DEADTRANS(L'-', 0x02d7, 0x2e3a, 0x0000) },
1159 { DEADTRANS(L'.', 0x02d7, 0x25cf, 0x0000) },
1160 { DEADTRANS(L'/', 0x02d7, 0x2105, 0x0000) },
1161 { DEADTRANS(L'0', 0x02d7, 0x2714, 0x0000) },
1162 { DEADTRANS(L'1', 0x02d7, 0x25fe, 0x0000) },
1163 { DEADTRANS(L'2', 0x02d7, 0x25fd, 0x0000) },
1164 { DEADTRANS(L'3', 0x02d7, 0x2751, 0x0000) },
1165 { DEADTRANS(L'4', 0x02d7, 0x2756, 0x0000) },
1166 { DEADTRANS(L'5', 0x02d7, 0x2023, 0x0000) },
1167 { DEADTRANS(L'6', 0x02d7, 0x27a4, 0x0000) },
1168 { DEADTRANS(L'7', 0x02d7, 0x2b9a, 0x0000) },
1169 { DEADTRANS(L'8', 0x02d7, 0x2717, 0x0000) },
1170 { DEADTRANS(L'9', 0x02d7, 0x2718, 0x0000) },
1171 { DEADTRANS(L':', 0x02d7, 0x00f7, 0x0000) },
1172 { DEADTRANS(L';', 0x02d7, 0x25a1, 0x0000) },
1173 { DEADTRANS(L'<', 0x02d7, 0x2619, 0x0000) },
1174 { DEADTRANS(L'=', 0x02d7, 0x2766, 0x0000) },
1175 { DEADTRANS(L'>', 0x02d7, 0x2767, 0x0000) },
1176 { DEADTRANS(L'?', 0x02d7, 0xfffd, 0x0000) },
1177 { DEADTRANS(L'B', 0x02d7, 0x0243, 0x0000) },
1178 { DEADTRANS(L'C', 0x02d7, 0xa792, 0x0000) },
1179 { DEADTRANS(L'D', 0x02d7, 0x0110, 0x0000) },
1180 { DEADTRANS(L'F', 0x02d7, 0xa798, 0x0000) },
1181 { DEADTRANS(L'G', 0x02d7, 0x01e4, 0x0000) },
1182 { DEADTRANS(L'H', 0x02d7, 0x0126, 0x0000) },
1183 { DEADTRANS(L'I', 0x02d7, 0x0197, 0x0000) },
1184 { DEADTRANS(L'J', 0x02d7, 0x0248, 0x0000) },
1185 { DEADTRANS(L'K', 0x02d7, 0xa740, 0x0000) },
1186 { DEADTRANS(L'L', 0x02d7, 0x023d, 0x0000) },
1187 { DEADTRANS(L'O', 0x02d7, 0x019f, 0x0000) },
1188 { DEADTRANS(L'P', 0x02d7, 0x2c63, 0x0000) },
1189 { DEADTRANS(L'R', 0x02d7, 0x024c, 0x0000) },
1190 { DEADTRANS(L'S', 0x02d7, 0xa7c9, 0x0000) },
1191 { DEADTRANS(L'T', 0x02d7, 0x0166, 0x0000) },
1192 { DEADTRANS(L'U', 0x02d7, 0x0244, 0x0000) },
1193 { DEADTRANS(L'Y', 0x02d7, 0x024e, 0x0000) },
1194 { DEADTRANS(L'Z', 0x02d7, 0x01b5, 0x0000) },
1195 { DEADTRANS(L'[', 0x02d7, 0x2045, 0x0000) },
1196 { DEADTRANS(L']', 0x02d7, 0x2046, 0x0000) },
1197 { DEADTRANS(L'^', 0x02d7, 0x02c6, 0x0000) },
1198 { DEADTRANS(L'b', 0x02d7, 0x0180, 0x0000) },
1199 { DEADTRANS(L'c', 0x02d7, 0xa793, 0x0000) },
1200 { DEADTRANS(L'd', 0x02d7, 0x0111, 0x0000) },
1201 { DEADTRANS(L'e', 0x02d7, 0xab33, 0x0000) },
1202 { DEADTRANS(L'f', 0x02d7, 0xa799, 0x0000) },
1203 { DEADTRANS(L'g', 0x02d7, 0x01e5, 0x0000) },
1204 { DEADTRANS(L'h', 0x02d7, 0x0127, 0x0000) },
1205 { DEADTRANS(L'i', 0x02d7, 0x0268, 0x0000) },
1206 { DEADTRANS(L'j', 0x02d7, 0x0249, 0x0000) },
1207 { DEADTRANS(L'k', 0x02d7, 0xa741, 0x0000) },
1208 { DEADTRANS(L'l', 0x02d7, 0x019a, 0x0000) },
1209 { DEADTRANS(L'o', 0x02d7, 0x0275, 0x0000) },
1210 { DEADTRANS(L'p', 0x02d7, 0x1d7d, 0x0000) },
1211 { DEADTRANS(L'r', 0x02d7, 0x024d, 0x0000) },
1212 { DEADTRANS(L's', 0x02d7, 0xa7ca, 0x0000) },
1213 { DEADTRANS(L't', 0x02d7, 0x0167, 0x0000) },
1214 { DEADTRANS(L'u', 0x02d7, 0x0289, 0x0000) },
1215 { DEADTRANS(L'y', 0x02d7, 0x024f, 0x0000) },
1216 { DEADTRANS(L'z', 0x02d7, 0x01b6, 0x0000) },
1217 { DEADTRANS(L'|', 0x02d7, 0x271d, 0x0000) },
1218 { DEADTRANS(L'~', 0x02d7, 0x2053, 0x0000) },
1219 { DEADTRANS(L'°', 0x02d7, 0x25cc, 0x0000) },
1220 { DEADTRANS(0x00b7, 0x02d7, 0x25c9, 0x0000) },
1221 { DEADTRANS(0x00d6, 0x02d7, 0x200d, 0x0000) },
1222 { DEADTRANS(0x00dc, 0x02d7, 0x2003, 0x0000) },
1223 { DEADTRANS(0x00df, 0x02d7, 0x2007, 0x0000) },
1224 { DEADTRANS(0x00f6, 0x02d7, 0x200b, 0x0000) },
1225 { DEADTRANS(0x00fc, 0x02d7, 0x2009, 0x0000) },
1226 { DEADTRANS(0x02d7, 0x02d7, 0x0335, 0x0000) },
1227
1228 { 0, 0 }
1229};
1230
1231/* Finally, the master table */
1233 /* modifier assignments */
1235
1236 /* character from vk tables */
1238
1239 /* diacritical marks -- currently implemented by wine code */
1240 dead_key,
1241
1242 /* Key names */
1245 dead_key_names, /* Dead key names */
1246
1247 /* scan code to virtual key maps */
1252
1253 MAKELONG(KLLF_ALTGR, 1), /* Version 1.0 */
1254
1255 /* Ligatures -- German doesn't have any */
1256 0,
1257 0,
1258 NULL
1259};
1260
1262 return &keyboard_layout_table;
1263}
1264
#define RTL_NUMBER_OF(x)
Definition: RtlRegistry.c:12
#define NULL
Definition: types.h:112
#define L(x)
Definition: resources.c:13
#define WCH_DEAD
Definition: kbd.h:114
#define CAPLOK
Definition: kbd.h:118
#define KBDALT
Definition: kbd.h:16
#define WCH_NONE
Definition: kbd.h:113
#define SHFT_INVALID
Definition: kbd.h:19
#define KBDCTRL
Definition: kbd.h:15
#define KBDEXT
Definition: kbd.h:8
#define KLLF_ALTGR
Definition: kbd.h:91
WCHAR * DEADKEY_LPWSTR
Definition: kbd.h:62
#define KBDSHIFT
Definition: kbd.h:14
#define KBDMULTIVK
Definition: kbd.h:9
#define DEADTRANS(ch, accent, comp, flags)
Definition: kbdgre1.c:407
ROSDATA DEADKEY dead_key[]
Definition: kbdgre1.c:409
#define KNUMS
Definition: kbdgre1.c:35
ROSDATA VSC_LPWSTR extended_key_names[]
Definition: kbdgre1.c:357
#define KMEXT
Definition: kbdgre1.c:36
ROSDATA USHORT scancode_to_vk[]
Definition: kbdgre1.c:38
ROSDATA VK_TO_WCHARS1 keypad_numbers[]
Definition: kbdgre1.c:273
ROSDATA MODIFIERS modifier_bits
Definition: kbdgre1.c:163
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[]
Definition: kbdgre1.c:245
ROSDATA VSC_LPWSTR key_names[]
Definition: kbdgre1.c:301
#define vk_master(n, x)
Definition: kbdgre1.c:289
ROSDATA VSC_VK extcode0_to_vk[]
Definition: kbdgre1.c:109
ROSDATA VK_TO_WCHAR_TABLE vk_to_wchar_master_table[]
Definition: kbdgre1.c:291
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[]
Definition: kbdgre1.c:181
ROSDATA VK_TO_WCHARS5 key_to_chars_5mod[]
Definition: kbdgre1.c:251
#define ROSDATA
Definition: kbdgre1.c:29
ROSDATA VK_TO_WCHARS2 key_to_chars_2mod[]
Definition: kbdgre1.c:170
ROSDATA DEADKEY_LPWSTR dead_key_names[]
Definition: kbdgre1.c:383
ROSDATA VK_TO_WCHARS6 key_to_chars_6mod[]
Definition: kbdgre1.c:267
#define VK_EMPTY
Definition: kbdgre1.c:33
ROSDATA VK_TO_BIT modifier_keys[]
Definition: kbdgre1.c:156
ROSDATA VSC_VK extcode1_to_vk[]
Definition: kbdgre1.c:151
ROSDATA KBDTABLES keyboard_layout_table
Definition: kbdgre1.c:1232
PKBDTABLES WINAPI KbdLayerDescriptor()
Definition: kbdjpn.c:390
unsigned short USHORT
Definition: pedump.c:61
Definition: kbd.h:56
Definition: kbd.h:95
Definition: kbd.h:26
Definition: kbd.h:21
Definition: kbd.h:71
#define MAKELONG(a, b)
Definition: typedefs.h:249
#define WINAPI
Definition: msvc.h:6
#define VK_CLEAR
Definition: winuser.h:2236
#define VK_OEM_5
Definition: winuser.h:2354
#define VK_NUMPAD3
Definition: winuser.h:2278
#define VK_SNAPSHOT
Definition: winuser.h:2267
#define VK_F12
Definition: winuser.h:2302
#define VK_TAB
Definition: winuser.h:2235
#define VK_F9
Definition: winuser.h:2299
#define VK_APPS
Definition: winuser.h:2273
#define VK_MULTIPLY
Definition: winuser.h:2285
#define VK_NUMPAD1
Definition: winuser.h:2276
#define VK_F10
Definition: winuser.h:2300
#define VK_OEM_7
Definition: winuser.h:2356
#define VK_F15
Definition: winuser.h:2305
#define VK_NUMPAD2
Definition: winuser.h:2277
#define VK_SPACE
Definition: winuser.h:2255
#define VK_CAPITAL
Definition: winuser.h:2242
#define VK_OEM_4
Definition: winuser.h:2353
#define VK_NUMPAD4
Definition: winuser.h:2279
#define VK_SCROLL
Definition: winuser.h:2316
#define VK_F23
Definition: winuser.h:2313
#define VK_CONTROL
Definition: winuser.h:2239
#define VK_F22
Definition: winuser.h:2312
#define VK_RSHIFT
Definition: winuser.h:2319
#define VK_CANCEL
Definition: winuser.h:2228
#define VK_UP
Definition: winuser.h:2261
#define VK_F18
Definition: winuser.h:2308
#define VK_F16
Definition: winuser.h:2306
#define VK_LSHIFT
Definition: winuser.h:2318
#define VK_LCONTROL
Definition: winuser.h:2320
#define VK_NUMPAD0
Definition: winuser.h:2275
#define VK_F1
Definition: winuser.h:2291
#define VK_F6
Definition: winuser.h:2296
#define VK_F24
Definition: winuser.h:2314
#define VK_PAUSE
Definition: winuser.h:2241
#define VK_NUMPAD6
Definition: winuser.h:2281
#define VK_F21
Definition: winuser.h:2311
#define VK_NEXT
Definition: winuser.h:2257
#define VK_RCONTROL
Definition: winuser.h:2321
#define VK_F14
Definition: winuser.h:2304
#define VK_F20
Definition: winuser.h:2310
#define VK_RETURN
Definition: winuser.h:2237
#define VK_OEM_6
Definition: winuser.h:2355
#define VK_SLEEP
Definition: winuser.h:2274
#define VK_F5
Definition: winuser.h:2295
#define VK_F11
Definition: winuser.h:2301
#define VK_F8
Definition: winuser.h:2298
#define VK_RMENU
Definition: winuser.h:2323
#define VK_NUMPAD9
Definition: winuser.h:2284
#define VK_END
Definition: winuser.h:2258
#define VK_HOME
Definition: winuser.h:2259
#define VK_ADD
Definition: winuser.h:2286
#define VK_OEM_2
Definition: winuser.h:2351
#define VK_BACK
Definition: winuser.h:2234
#define VK_F3
Definition: winuser.h:2293
#define VK_LWIN
Definition: winuser.h:2271
#define VK_F4
Definition: winuser.h:2294
#define VK_NUMPAD5
Definition: winuser.h:2280
#define VK_LEFT
Definition: winuser.h:2260
#define VK_F17
Definition: winuser.h:2307
#define VK_NUMPAD7
Definition: winuser.h:2282
#define VK_RIGHT
Definition: winuser.h:2262
#define VK_OEM_1
Definition: winuser.h:2344
#define VK_DOWN
Definition: winuser.h:2263
#define VK_NUMLOCK
Definition: winuser.h:2315
#define VK_SHIFT
Definition: winuser.h:2238
#define VK_PRIOR
Definition: winuser.h:2256
#define VK_F19
Definition: winuser.h:2309
#define VK_DELETE
Definition: winuser.h:2269
#define VK_DIVIDE
Definition: winuser.h:2290
#define VK_NUMPAD8
Definition: winuser.h:2283
#define VK_F13
Definition: winuser.h:2303
#define VK_DECIMAL
Definition: winuser.h:2289
#define VK_ESCAPE
Definition: winuser.h:2250
#define VK_OEM_3
Definition: winuser.h:2352
#define VK_HELP
Definition: winuser.h:2270
#define VK_F7
Definition: winuser.h:2297
#define VK_INSERT
Definition: winuser.h:2268
#define VK_RWIN
Definition: winuser.h:2272
#define VK_SUBTRACT
Definition: winuser.h:2288
#define VK_LMENU
Definition: winuser.h:2322
#define VK_MENU
Definition: winuser.h:2240
#define VK_F2
Definition: winuser.h:2292