ReactOS 0.4.17-dev-1190-g4c812f4
kbdnec95.c
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Keyboard Layouts
3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4 * PURPOSE: NEC PC-9801 Windows 95 Japanese keyboard layout
5 * COPYRIGHT: Copyright 2026 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
6 */
7
8#define WIN32_NO_STATUS
9#include <windef.h>
10#include <winuser.h>
11#include <ndk/kbd.h>
12
13/* See also: https://kbdlayout.info/kbdnec95 */
14
15#ifdef _M_IA64
16 #define ROSDATA static __declspec(allocate(".data"))
17#else
18 #ifdef _MSC_VER
19 #pragma data_seg(".data")
20 #define ROSDATA static
21 #else
22 #define ROSDATA static __attribute__((section(".data")))
23 #endif
24#endif
25
26#define VK_EMPTY 0xff /* The non-existent VK */
27#define KNUMS (KBDNUMPAD | KBDSPECIAL) /* Special + number pad */
28
29#ifndef VK_OEM_NEC_EQUAL
30 #define VK_OEM_NEC_EQUAL 0x92
31#endif
32
33/* Extra modifier: the KANA key (VK_KANA 0x15) is modifier bit 0x08 */
34#define KBDKANA 0x08
35
36/* PC-98 scan code -> VK (0x00 .. 0x7f) */
38 /* 00 */ VK_ESCAPE,
39 /* 01 */ '1',
40 /* 02 */ '2',
41 /* 03 */ '3',
42 /* 04 */ '4',
43 /* 05 */ '5',
44 /* 06 */ '6',
45 /* 07 */ '7',
46 /* 08 */ '8',
47 /* 09 */ '9',
48 /* 0a */ '0',
49 /* 0b */ VK_OEM_MINUS,
50 /* 0c */ VK_OEM_7,
51 /* 0d */ VK_OEM_5,
52 /* 0e */ VK_BACK,
53 /* 0f */ VK_TAB,
54 /* 10 */ 'Q',
55 /* 11 */ 'W',
56 /* 12 */ 'E',
57 /* 13 */ 'R',
58 /* 14 */ 'T',
59 /* 15 */ 'Y',
60 /* 16 */ 'U',
61 /* 17 */ 'I',
62 /* 18 */ 'O',
63 /* 19 */ 'P',
64 /* 1a */ VK_OEM_3,
65 /* 1b */ VK_OEM_4,
66 /* 1c */ VK_RETURN,
67 /* 1d */ 'A',
68 /* 1e */ 'S',
69 /* 1f */ 'D',
70 /* 20 */ 'F',
71 /* 21 */ 'G',
72 /* 22 */ 'H',
73 /* 23 */ 'J',
74 /* 24 */ 'K',
75 /* 25 */ 'L',
76 /* 26 */ VK_OEM_PLUS,
77 /* 27 */ VK_OEM_1,
78 /* 28 */ VK_OEM_6,
79 /* 29 */ 'Z',
80 /* 2a */ 'X',
81 /* 2b */ 'C',
82 /* 2c */ 'V',
83 /* 2d */ 'B',
84 /* 2e */ 'N',
85 /* 2f */ 'M',
86 /* 30 */ VK_OEM_COMMA,
87 /* 31 */ VK_OEM_PERIOD,
88 /* 32 */ VK_OEM_2,
89 /* 33 */ VK_OEM_8,
90 /* 34 */ VK_SPACE,
91 /* 35 */ VK_CONVERT | KBDSPECIAL,
92 /* 36 */ VK_NEXT,
93 /* 37 */ VK_PRIOR,
94 /* 38 */ VK_INSERT,
95 /* 39 */ VK_DELETE,
96 /* 3a */ VK_UP,
97 /* 3b */ VK_LEFT,
98 /* 3c */ VK_RIGHT,
99 /* 3d */ VK_DOWN,
100 /* 3e */ VK_HOME,
101 /* 3f */ VK_END,
102 /* 40 */ VK_SUBTRACT,
103 /* 41 */ VK_DIVIDE,
104 /* 42 */ VK_NUMPAD7 | KNUMS,
105 /* 43 */ VK_NUMPAD8 | KNUMS,
106 /* 44 */ VK_NUMPAD9 | KNUMS,
107 /* 45 */ VK_MULTIPLY,
108 /* 46 */ VK_NUMPAD4 | KNUMS,
109 /* 47 */ VK_NUMPAD5 | KNUMS,
110 /* 48 */ VK_NUMPAD6 | KNUMS,
111 /* 49 */ VK_ADD,
112 /* 4a */ VK_NUMPAD1 | KNUMS,
113 /* 4b */ VK_NUMPAD2 | KNUMS,
114 /* 4c */ VK_NUMPAD3 | KNUMS,
115 /* 4d */ VK_OEM_NEC_EQUAL | KNUMS,
116 /* 4e */ VK_NUMPAD0 | KNUMS,
117 /* 4f */ VK_SEPARATOR,
118 /* 50 */ VK_DECIMAL | KNUMS,
119 /* 51 */ VK_NONCONVERT | KBDSPECIAL,
120 /* 52 */ VK_F11,
121 /* 53 */ VK_F12,
122 /* 54 */ VK_F13,
123 /* 55 */ VK_F14,
124 /* 56 */ VK_F15,
125 /* 57 */ VK_EMPTY,
126 /* 58 */ VK_EMPTY,
127 /* 59 */ VK_EMPTY,
128 /* 5a */ VK_EMPTY,
129 /* 5b */ VK_EMPTY,
130 /* 5c */ VK_RETURN,
131 /* 5d */ VK_EMPTY,
132 /* 5e */ VK_EMPTY,
133 /* 5f */ VK_EMPTY,
134 /* 60 */ VK_CANCEL,
135 /* 61 */ VK_SNAPSHOT,
136 /* 62 */ VK_F1,
137 /* 63 */ VK_F2,
138 /* 64 */ VK_F3,
139 /* 65 */ VK_F4,
140 /* 66 */ VK_F5,
141 /* 67 */ VK_F6,
142 /* 68 */ VK_F7,
143 /* 69 */ VK_F8,
144 /* 6a */ VK_F9,
145 /* 6b */ VK_F10,
146 /* 6c */ VK_EMPTY,
147 /* 6d */ VK_EMPTY,
148 /* 6e */ VK_EMPTY,
149 /* 6f */ VK_EMPTY,
150 /* 70 */ VK_LSHIFT,
151 /* 71 */ VK_CAPITAL,
152 /* 72 */ VK_KANA,
153 /* 73 */ VK_LMENU,
154 /* 74 */ VK_LCONTROL,
155 /* 75 */ VK_EMPTY,
156 /* 76 */ VK_EMPTY,
157 /* 77 */ VK_LWIN,
158 /* 78 */ VK_RWIN,
159 /* 79 */ VK_APPS,
160 /* 7a */ VK_EMPTY,
161 /* 7b */ VK_EMPTY,
162 /* 7c */ VK_EMPTY,
163 /* 7d */ VK_RSHIFT,
164 /* 7e */ VK_ABNT_C2,
165 /* 7f */ 0xEC,
166};
167
168/* No E0 / E1 prefixed scan codes on the PC-98 keyboard: empty tables */
170 { 0, 0 },
171};
172
174 { 0, 0 },
175};
176
178 { VK_SHIFT, KBDSHIFT },
179 { VK_CONTROL, KBDCTRL },
180 { VK_MENU, KBDALT },
181 { VK_KANA, KBDKANA },
182 { 0, 0 }
183};
184
187 11,
188 {
189 0, /* NONE */
190 1, /* SHIFT */
191 4, /* CTRL */
192 6, /* SHIFT+CTRL */
193 SHFT_INVALID, /* ALT */
194 SHFT_INVALID, /* SHIFT+ALT */
195 SHFT_INVALID, /* CTRL+ALT */
196 SHFT_INVALID, /* SHIFT+CTRL+ALT */
197 2, /* KANA */
198 3, /* SHIFT+KANA */
199 5, /* CTRL+KANA */
200 7, /* SHIFT+CTRL+KANA */
201 }
202};
203
204ROSDATA VK_TO_WCHARS6 key_to_chars_6mod[] = {
205 /* Normal, Shift, Kana, Kana+Shift, Ctrl, Ctrl+Kana */
206 { VK_BACK, 0, {0x0008, 0x0008, 0x0008, 0x0008, 0x007f, 0x007f} },
207 { VK_CANCEL, 0, {0x0003, 0x0003, 0x0003, 0x0003, 0x0003, 0x0003} },
208 { VK_ESCAPE, 0, {0x001b, 0x001b, 0x001b, 0x001b, 0x001b, 0x001b} },
209 { VK_OEM_3, KANALOK, {'@', '~', 0xff9e, 0xff9e, 0x0000, 0x0000} },
210 { VK_OEM_4, KANALOK, {'[', '{', 0xff9f, 0xff62, 0x001b, 0x001b} },
211 { VK_OEM_5, KANALOK, {'\\', '|', 0xff70, 0xff70, 0x001c, 0x001c} },
212 { VK_OEM_6, KANALOK, {']', '}', 0xff91, 0xff63, 0x001d, 0x001d} },
213 { VK_OEM_7, KANALOK, {'^', '`', 0xff8d, 0xff8d, 0x001e, 0x001e} },
214 { VK_OEM_8, KANALOK, {WCH_NONE, '_', 0xff9b, 0xff9b, 0x001f, 0x001f} },
215 { VK_RETURN, 0, {0x000d, 0x000d, 0x000d, 0x000d, 0x000a, 0x000a} },
216 { VK_SPACE, 0, {0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020} },
217 { 0, 0 }
218};
219
220ROSDATA VK_TO_WCHARS8 key_to_chars_8mod[] = {
221 /* Normal, Shift, Kana, Kana+Shift, Ctrl, Ctrl+Kana, Ctrl+Shift, Ctrl+Shift+Kana */
222 { '2', KANALOK, {'2', '"', 0xff8c, 0xff8c, WCH_NONE, WCH_NONE, 0x0000, 0x0000} },
223 { '6', KANALOK, {'6', '&', 0xff75, 0xff6b, WCH_NONE, WCH_NONE, 0x001e, 0x001e} },
224 { VK_OEM_MINUS, KANALOK, {'-', '=', 0xff8e, 0xff8e, WCH_NONE, WCH_NONE, 0x001f, 0x001f} },
225 { 0, 0 }
226};
227
228ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[] = {
229 /* Normal, Shift, Kana, Kana+Shift */
230 { '0', KANALOK, {'0', '0', 0xff9c, 0xff66} },
231 { '1', KANALOK, {'1', '!', 0xff87, 0xff87} },
232 { '3', KANALOK, {'3', '#', 0xff71, 0xff67} },
233 { '4', KANALOK, {'4', '$', 0xff73, 0xff69} },
234 { '5', KANALOK, {'5', '%', 0xff74, 0xff6a} },
235 { '7', KANALOK, {'7', '\'', 0xff94, 0xff6c} },
236 { '8', KANALOK, {'8', '(', 0xff95, 0xff6d} },
237 { '9', KANALOK, {'9', ')', 0xff96, 0xff6e} },
238 { 'A', CAPLOK|KANALOK, {'a', 'A', 0xff81, 0xff81} },
239 { 'B', CAPLOK|KANALOK, {'b', 'B', 0xff7a, 0xff7a} },
240 { 'C', CAPLOK|KANALOK, {'c', 'C', 0xff7f, 0xff7f} },
241 { 'D', CAPLOK|KANALOK, {'d', 'D', 0xff7c, 0xff7c} },
242 { 'E', CAPLOK|KANALOK, {'e', 'E', 0xff72, 0xff68} },
243 { 'F', CAPLOK|KANALOK, {'f', 'F', 0xff8a, 0xff8a} },
244 { 'G', CAPLOK|KANALOK, {'g', 'G', 0xff77, 0xff77} },
245 { 'H', CAPLOK|KANALOK, {'h', 'H', 0xff78, 0xff78} },
246 { 'I', CAPLOK|KANALOK, {'i', 'I', 0xff86, 0xff86} },
247 { 'J', CAPLOK|KANALOK, {'j', 'J', 0xff8f, 0xff8f} },
248 { 'K', CAPLOK|KANALOK, {'k', 'K', 0xff89, 0xff89} },
249 { 'L', CAPLOK|KANALOK, {'l', 'L', 0xff98, 0xff98} },
250 { 'M', CAPLOK|KANALOK, {'m', 'M', 0xff93, 0xff93} },
251 { 'N', CAPLOK|KANALOK, {'n', 'N', 0xff90, 0xff90} },
252 { 'O', CAPLOK|KANALOK, {'o', 'O', 0xff97, 0xff97} },
253 { 'P', CAPLOK|KANALOK, {'p', 'P', 0xff7e, 0xff7e} },
254 { 'Q', CAPLOK|KANALOK, {'q', 'Q', 0xff80, 0xff80} },
255 { 'R', CAPLOK|KANALOK, {'r', 'R', 0xff7d, 0xff7d} },
256 { 'S', CAPLOK|KANALOK, {'s', 'S', 0xff84, 0xff84} },
257 { 'T', CAPLOK|KANALOK, {'t', 'T', 0xff76, 0xff76} },
258 { 'U', CAPLOK|KANALOK, {'u', 'U', 0xff85, 0xff85} },
259 { 'V', CAPLOK|KANALOK, {'v', 'V', 0xff8b, 0xff8b} },
260 { 'W', CAPLOK|KANALOK, {'w', 'W', 0xff83, 0xff83} },
261 { 'X', CAPLOK|KANALOK, {'x', 'X', 0xff7b, 0xff7b} },
262 { 'Y', CAPLOK|KANALOK, {'y', 'Y', 0xff9d, 0xff9d} },
263 { 'Z', CAPLOK|KANALOK, {'z', 'Z', 0xff82, 0xff6f} },
264 { VK_OEM_1, KANALOK, {':', '*', 0xff79, 0xff79} },
265 { VK_OEM_2, KANALOK, {'/', '?', 0xff92, 0xff65} },
266 { VK_OEM_COMMA, KANALOK, {',', '<', 0xff88, 0xff64} },
267 { VK_OEM_PERIOD, KANALOK, {'.', '>', 0xff99, 0xff61} },
268 { VK_OEM_PLUS, KANALOK, {';', '+', 0xff9a, 0xff9a} },
269 { VK_TAB, 0, {0x0009, 0x0009, 0x0009, 0x0009} },
270 { VK_ADD, 0, {'+', '+', '+', '+'} },
271 { VK_DECIMAL, 0, {'.', '.', '.', '.'} },
272 { VK_DIVIDE, 0, {'/', '/', '/', '/'} },
273 { VK_MULTIPLY, 0, {'*', '*', '*', '*'} },
274 { VK_SUBTRACT, 0, {'-', '-', '-', '-'} },
275 { VK_SEPARATOR, 0, {',', ',', ',', ','} },
276 { VK_OEM_NEC_EQUAL, 0, {'=', '=', '=', '='} },
277 { 0, 0 }
278};
279
280ROSDATA VK_TO_WCHARS4 keypad_numbers[] = {
281 /* Normal, Shift, Kana, Kana+Shift */
282 { VK_NUMPAD0, 0, {'0', WCH_NONE, '0', WCH_NONE} },
283 { VK_NUMPAD1, 0, {'1', WCH_NONE, '1', WCH_NONE} },
284 { VK_NUMPAD2, 0, {'2', WCH_NONE, '2', WCH_NONE} },
285 { VK_NUMPAD3, 0, {'3', WCH_NONE, '3', WCH_NONE} },
286 { VK_NUMPAD4, 0, {'4', WCH_NONE, '4', WCH_NONE} },
287 { VK_NUMPAD5, 0, {'5', WCH_NONE, '5', WCH_NONE} },
288 { VK_NUMPAD6, 0, {'6', WCH_NONE, '6', WCH_NONE} },
289 { VK_NUMPAD7, 0, {'7', WCH_NONE, '7', WCH_NONE} },
290 { VK_NUMPAD8, 0, {'8', WCH_NONE, '8', WCH_NONE} },
291 { VK_NUMPAD9, 0, {'9', WCH_NONE, '9', WCH_NONE} },
292 { 0, 0 }
293};
294
295#define vk_master(n, x) { (PVK_TO_WCHARS1)x, n, sizeof(x[0]) }
296
302 { 0, 0, 0 }
303};
304
306 { 0x0e, L"BS" },
307 { 0x0f, L"TAB" },
308 { 0x1c, L"RETURN" },
309 { 0x34, L"SPACE" },
310 { 0x35, L"XFER" },
311 { 0x36, L"ROLL UP" },
312 { 0x37, L"ROLL DOWN" },
313 { 0x38, L"INS" },
314 { 0x39, L"DEL" },
315 { 0x3a, L"UP" },
316 { 0x3b, L"LEFT" },
317 { 0x3c, L"RIGHT" },
318 { 0x3d, L"DOWN" },
319 { 0x3e, L"CLR" },
320 { 0x3f, L"HELP" },
321 { 0x40, L"Num -" },
322 { 0x41, L"Num /" },
323 { 0x42, L"Num 7" },
324 { 0x43, L"Num 8" },
325 { 0x44, L"Num 9" },
326 { 0x45, L"Num *" },
327 { 0x46, L"Num 4" },
328 { 0x47, L"Num 5" },
329 { 0x48, L"Num 6" },
330 { 0x49, L"Num +" },
331 { 0x4a, L"Num 1" },
332 { 0x4b, L"Num 2" },
333 { 0x4c, L"Num 3" },
334 { 0x4d, L"Num =" },
335 { 0x4e, L"Num 0" },
336 { 0x4f, L"Num ," },
337 { 0x50, L"Num ." },
338 { 0x51, L"NFER" },
339 { 0x52, L"f\uff6511" },
340 { 0x53, L"f\uff6512" },
341 { 0x54, L"f\uff6513" },
342 { 0x55, L"f\uff6514" },
343 { 0x56, L"f\uff6515" },
344 { 0x60, L"STOP" },
345 { 0x61, L"COPY" },
346 { 0x62, L"f\uff651" },
347 { 0x63, L"f\uff652" },
348 { 0x64, L"f\uff653" },
349 { 0x65, L"f\uff654" },
350 { 0x66, L"f\uff655" },
351 { 0x67, L"f\uff656" },
352 { 0x68, L"f\uff657" },
353 { 0x69, L"f\uff658" },
354 { 0x6a, L"f\uff659" },
355 { 0x6b, L"f\uff6510" },
356 { 0x70, L"SHIFT" },
357 { 0x71, L"CAPS" },
358 { 0x72, L"\uff76\uff85" },
359 { 0x73, L"GRPH" },
360 { 0x74, L"CTRL" },
361 { 0x77, L"Left Windows" },
362 { 0x78, L"Right Windows" },
363 { 0x79, L"Application" },
364 { 0x7d, L"SHIFT" },
365 { 0, NULL },
366};
367
369 { 0, NULL },
370};
371
372/* Finally, the master table (KBDTABLES + FE trailer, cf. KBDTABLES_FE in kbd.h) */
374 {
375 &modifier_bits, /* modifier assignments */
376 vk_to_wchar_master_table, /* character from vk tables */
377 NULL, /* no dead keys */
378 (VSC_LPWSTR *)key_names, /* key names */
380 NULL, /* dead key names */
381 scancode_to_vk, /* scan code to virtual key maps */
382 RTL_NUMBER_OF(scancode_to_vk), /* 0x80 */
385 0, /* fLocaleFlags (binary has 0, i.e. version word 0) */
386 0, 0, /* no ligatures */
387 NULL
388 },
389 7, /* dwType : Japanese keyboard */
390 0x0d02 /* dwSubType : OEM id 0x0d / layout 2 (NEC PC-98) */
391};
392
394{
396}
397
398/* ------------------------------------------------------------------ */
399/* NLS (Far-East) function tables */
400
401#define NLS(i,p) { (i), (p) }
402#define NLS_NONE NLS(0,0)
403
405 { 0xF3 /*0xF3*/, 1, 1, 0,
406 { NLS(8, 0), NLS(8, 0), NLS(8, 0), NLS(8, 0), NLS(8, 0), NLS(8, 0), NLS(3, 248), NLS(3, 248) },
407 { NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0) } },
408 { 0x1D /*VK_NONCONVERT*/, 1, 1, 0,
409 { NLS(2, 0), NLS(2, 0), NLS(3, 240), NLS(8, 0), NLS(3, 241), NLS(3, 247), NLS(3, 251), NLS(3, 249) },
410 { NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0) } },
411 { 0x1C /*VK_CONVERT*/, 1, 1, 0,
412 { NLS(2, 0), NLS(2, 0), NLS(3, 25), NLS(2, 0), NLS(9, 0), NLS(3, 248), NLS(3, 250), NLS(3, 242) },
413 { NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0) } },
414 { 0x92 /*VK_OEM_NEC_EQUAL*/, 1, 1, 0,
415 { NLS(2, 0), NLS(2, 0), NLS(3, 145), NLS(2, 0), NLS(2, 0), NLS(2, 0), NLS(2, 0), NLS(2, 0) },
416 { NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0) } },
417 { 0x24 /*VK_HOME*/, 1, 1, 0,
418 { NLS(12, 0), NLS(2, 0), NLS(12, 0), NLS(12, 0), NLS(12, 0), NLS(12, 0), NLS(12, 0), NLS(12, 0) },
419 { NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0) } },
420 { 0x23 /*VK_END*/, 1, 1, 0,
421 { NLS(11, 0), NLS(11, 0), NLS(11, 0), NLS(11, 0), NLS(11, 0), NLS(11, 0), NLS(11, 0), NLS(11, 0) },
422 { NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0), NLS(0, 0) } },
423};
424
426 0x65, 0x69, 0x63, 0x61, 0x67, 0x64, 0x68, 0x66, 0x62, 0x60, 0x6e, 0x6a, 0x6b, 0x6d, 0x16f, 0x124
427};
428
430 0x0d, /* OEMIdentifier */
431 2, /* LayoutInformation */
436};
437
439{
440 return &nls_layer;
441}
#define RTL_NUMBER_OF(x)
Definition: RtlRegistry.c:12
#define NULL
Definition: types.h:112
#define L(x)
Definition: resources.c:13
#define VK_ABNT_C2
Definition: kbd.h:127
#define CAPLOK
Definition: kbd.h:120
#define KBDALT
Definition: kbd.h:18
#define WCH_NONE
Definition: kbd.h:115
#define SHFT_INVALID
Definition: kbd.h:21
#define KBDSPECIAL
Definition: kbd.h:12
#define KBDCTRL
Definition: kbd.h:17
#define KANALOK
Definition: kbd.h:123
#define KBDSHIFT
Definition: kbd.h:16
PKBDTABLES WINAPI KbdLayerDescriptor()
Definition: kbdjpn.c:390
PKBDNLSTABLES WINAPI KbdNlsLayerDescriptor(VOID)
Definition: kbdnec95.c:438
ROSDATA VK_TO_WCHARS4 keypad_numbers[]
Definition: kbdnec95.c:280
ROSDATA KBDNLSTABLES nls_layer
Definition: kbdnec95.c:429
#define KNUMS
Definition: kbdnec95.c:27
ROSDATA VSC_LPWSTR extended_key_names[]
Definition: kbdnec95.c:368
ROSDATA USHORT scancode_to_vk[]
Definition: kbdnec95.c:37
#define VK_OEM_NEC_EQUAL
Definition: kbdnec95.c:30
ROSDATA MODIFIERS modifier_bits
Definition: kbdnec95.c:185
ROSDATA VK_TO_WCHARS4 key_to_chars_4mod[]
Definition: kbdnec95.c:228
ROSDATA VSC_LPWSTR key_names[]
Definition: kbdnec95.c:305
ROSDATA VK_F vk_to_function_table[]
Definition: kbdnec95.c:404
#define vk_master(n, x)
Definition: kbdnec95.c:295
#define KBDKANA
Definition: kbdnec95.c:34
ROSDATA VSC_VK extcode0_to_vk[]
Definition: kbdnec95.c:169
ROSDATA VK_TO_WCHAR_TABLE vk_to_wchar_master_table[]
Definition: kbdnec95.c:297
ROSDATA VK_TO_WCHARS8 key_to_chars_8mod[]
Definition: kbdnec95.c:220
#define ROSDATA
Definition: kbdnec95.c:22
ROSDATA USHORT mouse_vkeys[]
Definition: kbdnec95.c:425
ROSDATA VK_TO_WCHARS6 key_to_chars_6mod[]
Definition: kbdnec95.c:204
#define VK_EMPTY
Definition: kbdnec95.c:26
ROSDATA VK_TO_BIT modifier_keys[]
Definition: kbdnec95.c:177
ROSDATA VSC_VK extcode1_to_vk[]
Definition: kbdnec95.c:173
ROSDATA KBDTABLES_FE keyboard_layout_table
Definition: kbdnec95.c:373
#define NLS(i, p)
Definition: kbdnec95.c:401
unsigned short USHORT
Definition: pedump.c:61
#define VK_OEM_5
Definition: winuser.h:2354
#define VK_NUMPAD3
Definition: winuser.h:2278
#define VK_KANA
Definition: winuser.h:2243
#define VK_SNAPSHOT
Definition: winuser.h:2267
#define VK_CONVERT
Definition: winuser.h:2251
#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_CONTROL
Definition: winuser.h:2239
#define VK_RSHIFT
Definition: winuser.h:2319
#define VK_CANCEL
Definition: winuser.h:2228
#define VK_UP
Definition: winuser.h:2261
#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_OEM_8
Definition: winuser.h:2357
#define VK_NUMPAD6
Definition: winuser.h:2281
#define VK_NEXT
Definition: winuser.h:2257
#define VK_NONCONVERT
Definition: winuser.h:2252
#define VK_F14
Definition: winuser.h:2304
#define VK_RETURN
Definition: winuser.h:2237
#define VK_OEM_6
Definition: winuser.h:2355
#define VK_F5
Definition: winuser.h:2295
#define VK_F11
Definition: winuser.h:2301
#define VK_F8
Definition: winuser.h:2298
#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_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_SHIFT
Definition: winuser.h:2238
#define VK_PRIOR
Definition: winuser.h:2256
#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_SEPARATOR
Definition: winuser.h:2287
#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
Definition: kbd.h:97
Definition: kbd.h:28
Definition: kbd.h:23
Definition: kbd.h:73
KBDTABLES Base
Definition: kbd.h:210
#define WINAPI
Definition: msvc.h:6