xref: /reactos/base/applications/osk/keyboard.c (revision 1734f297)
1 /*
2  * PROJECT:         ReactOS On-Screen Keyboard
3  * LICENSE:         GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4  * PURPOSE:         Keyboard layout data.
5  * COPYRIGHT:       Baruch Rutman (peterooch at gmail dot com)
6  *
7  * This is partialy based on the original en-US dialog templates.
8  */
9 #include "precomp.h"
10 
11 KEY EnhancedKeyboardKeys[] =
12 {
13     {L"Esc", SCAN_CODE_110, 4, 4, 28, 28, 0, FALSE},
14     {L"F1", SCAN_CODE_112, 68, 4, 28, 28, 0, FALSE},
15     {L"F2", SCAN_CODE_113, 100, 4, 28, 28, 0, FALSE},
16     {L"F3", SCAN_CODE_114, 132, 4, 28, 28, 0, FALSE},
17     {L"F4", SCAN_CODE_115, 164, 4, 28, 28, 0, FALSE},
18     {L"F5", SCAN_CODE_116, 228, 4, 28, 28, 0, FALSE},
19     {L"F6", SCAN_CODE_117, 260, 4, 28, 28, 0, FALSE},
20     {L"F7", SCAN_CODE_118, 292, 4, 28, 28, 0, FALSE},
21     {L"F8", SCAN_CODE_119, 324, 4, 28, 28, 0, FALSE},
22     {L"F9", SCAN_CODE_120, 388, 4, 28, 28, 0, FALSE},
23     {L"F10", SCAN_CODE_121, 420, 4, 28, 28, 0, FALSE},
24     {L"F11", SCAN_CODE_122, 452, 4, 28, 28, 0, FALSE},
25     {L"F12", SCAN_CODE_123, 484, 4, 28, 28, 0, FALSE},
26     {L"Prn", SCAN_CODE_124, 516, 4, 28, 28, 0, FALSE},
27     {L"Stop", SCAN_CODE_125, 548, 4, 28, 28, 0, FALSE},
28     {L"Attn", SCAN_CODE_126, 580, 4, 28, 28, 0, FALSE},
29     {L"`", SCAN_CODE_1, 4, 35, 28, 28, 0, TRUE},
30     {L"1", SCAN_CODE_2, 36, 35, 28, 28, 0, TRUE},
31     {L"2", SCAN_CODE_3, 68, 35, 28, 28, 0, TRUE},
32     {L"3", SCAN_CODE_4, 100, 35, 28, 28, 0, TRUE},
33     {L"4", SCAN_CODE_5, 132, 35, 28, 28, 0, TRUE},
34     {L"5", SCAN_CODE_6, 164, 35, 28, 28, 0, TRUE},
35     {L"6", SCAN_CODE_7, 196, 35, 28, 28, 0, TRUE},
36     {L"7", SCAN_CODE_8, 228, 35, 28, 28, 0, TRUE},
37     {L"8", SCAN_CODE_9, 260, 35, 28, 28, 0, TRUE},
38     {L"9", SCAN_CODE_10, 292, 35, 28, 28, 0, TRUE},
39     {L"0", SCAN_CODE_11, 324, 35, 28, 28, 0, TRUE},
40     {L"-", SCAN_CODE_12, 356, 35, 28, 28, 0, TRUE},
41     {L"=", SCAN_CODE_13, 388, 35, 28, 28, 0, TRUE},
42     {L"<--", SCAN_CODE_15, 420, 35, 92, 28, BS_ICON, FALSE},
43     {L"Tab", SCAN_CODE_16, 4, 65, 60, 28, BS_ICON, FALSE},
44     {L"q", SCAN_CODE_17, 67, 65, 28, 28, 0, TRUE},
45     {L"w", SCAN_CODE_18, 97, 65, 28, 28, 0, TRUE},
46     {L"e", SCAN_CODE_19, 128, 65, 28, 28, 0, TRUE},
47     {L"r", SCAN_CODE_20, 158, 65, 28, 28, 0, TRUE},
48     {L"t", SCAN_CODE_21, 188, 65, 28, 28, 0, TRUE},
49     {L"y", SCAN_CODE_22, 219, 65, 28, 28, 0, TRUE},
50     {L"u", SCAN_CODE_23, 249, 65, 28, 28, 0, TRUE},
51     {L"i", SCAN_CODE_24, 280, 65, 28, 28, 0, TRUE},
52     {L"o", SCAN_CODE_25, 310, 65, 28, 28, 0, TRUE},
53     {L"p", SCAN_CODE_26, 340, 65, 28, 28, 0, TRUE},
54     {L"[", SCAN_CODE_27, 371, 65, 28, 28, 0, TRUE},
55     {L"]", SCAN_CODE_28, 401, 65, 28, 28, 0, TRUE},
56     {L"lock", SCAN_CODE_30, 4, 96, 78, 28, BS_ICON, FALSE},
57     {L"a", SCAN_CODE_31, 84, 96, 28, 28, 0, TRUE},
58     {L"s", SCAN_CODE_32, 115, 96, 28, 28, 0, TRUE},
59     {L"d", SCAN_CODE_33, 145, 96, 28, 28, 0, TRUE},
60     {L"f", SCAN_CODE_34, 176, 96, 28, 28, 0, TRUE},
61     {L"g", SCAN_CODE_35, 206, 96, 28, 28, 0, TRUE},
62     {L"h", SCAN_CODE_36, 236, 96, 28, 28, 0, TRUE},
63     {L"j", SCAN_CODE_37, 267, 96, 28, 28, 0, TRUE},
64     {L"k", SCAN_CODE_38, 297, 96, 28, 28, 0, TRUE},
65     {L"l", SCAN_CODE_39, 328, 96, 28, 28, 0, TRUE},
66     {L";", SCAN_CODE_40, 358, 96, 28, 28, 0, TRUE},
67     {L"'", SCAN_CODE_41, 388, 96, 28, 28, 0, TRUE},
68     {L"\\", SCAN_CODE_29, 432, 65, 80, 28, 0, TRUE},
69     {L"ret", SCAN_CODE_43, 419, 96, 93, 28, BS_ICON, FALSE},
70     {L"shift", SCAN_CODE_44, 4, 126, 95, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
71     {L"z", SCAN_CODE_46, 102, 126, 28, 28, 0, TRUE},
72     {L"x", SCAN_CODE_47, 132, 126, 28, 28, 0, TRUE},
73     {L"c", SCAN_CODE_48, 163, 126, 28, 28, 0, TRUE},
74     {L"v", SCAN_CODE_49, 193, 126, 28, 28, 0, TRUE},
75     {L"b", SCAN_CODE_50, 224, 126, 28, 28, 0, TRUE},
76     {L"n", SCAN_CODE_51, 254, 126, 28, 28, 0, TRUE},
77     {L"m", SCAN_CODE_52, 284, 126, 28, 28, 0, TRUE},
78     {L",", SCAN_CODE_53, 315, 126, 28, 28, 0, TRUE},
79     {L".", SCAN_CODE_54, 345, 126, 28, 28, 0, TRUE},
80     {L"/", SCAN_CODE_55, 376, 126, 28, 28, 0, TRUE},
81     {L"shift", SCAN_CODE_57, 406, 126, 106, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
82     {L"ctrl", SCAN_CODE_58, 4, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
83     {L"v", SCAN_CODE_84, 548, 156, 28, 28, BS_ICON, FALSE},
84     {L"ROS", SCAN_CODE_127, 48, 156, 43, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
85     {L"alt", SCAN_CODE_60, 91, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
86     {L"", SCAN_CODE_61, 134, 156, 204, 28, 0, FALSE},
87     {L"alt", SCAN_CODE_62, 340, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
88     {L"ROS", SCAN_CODE_128, 384, 156, 43, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
89     {L"menu", SCAN_CODE_129, 427, 156, 43, 28, BS_ICON, FALSE},
90     {L"ctrl", SCAN_CODE_64, 470, 156, 42, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
91     {L"ins", SCAN_CODE_75, 516, 35, 28, 28, 0, FALSE},
92     {L"del", SCAN_CODE_76, 516, 65, 28, 28, 0, FALSE},
93     {L"hm", SCAN_CODE_80, 548, 35, 28, 28, BS_ICON, FALSE},
94     {L"end", SCAN_CODE_81, 548, 65, 28, 28, 0, FALSE},
95     {L"pup", SCAN_CODE_85, 580, 35, 28, 28, BS_ICON, FALSE},
96     {L"pdn", SCAN_CODE_86, 580, 65, 28, 28, BS_ICON, FALSE},
97     {L"<-", SCAN_CODE_79, 516, 156, 28, 28, BS_ICON, FALSE},
98     {L"^", SCAN_CODE_83, 548, 126, 28, 28, BS_ICON, FALSE},
99     {L"->", SCAN_CODE_89, 580, 156, 28, 28, BS_ICON, FALSE},
100     {L"nlk", SCAN_CODE_90, 612, 35, 28, 28, 0, FALSE},
101     {L"7", SCAN_CODE_91, 612, 65, 28, 28, 0, FALSE},
102     {L"4", SCAN_CODE_92, 612, 96, 28, 28, 0, FALSE},
103     {L"1", SCAN_CODE_93, 612, 126, 28, 28, 0, FALSE},
104     {L"/", SCAN_CODE_95, 644, 35, 28, 28, 0, FALSE},
105     {L"8", SCAN_CODE_96, 644, 65, 28, 28, 0, FALSE},
106     {L"5", SCAN_CODE_97, 644, 96, 28, 28, 0, FALSE},
107     {L"2", SCAN_CODE_98, 644, 126, 28, 28, 0, FALSE},
108     {L"0", SCAN_CODE_99, 612, 156, 60, 28, 0, FALSE},
109     {L"*", SCAN_CODE_100, 676, 35, 28, 28, 0, FALSE},
110     {L"9", SCAN_CODE_101, 676, 65, 28, 28, 0, FALSE},
111     {L"6", SCAN_CODE_102, 676, 96, 28, 28, 0, FALSE},
112     {L"3", SCAN_CODE_103, 676, 126, 28, 28, 0, FALSE},
113     {L".", SCAN_CODE_104, 676, 156, 28, 28, 0, FALSE},
114     {L"-", SCAN_CODE_105, 708, 35, 28, 28, 0, FALSE},
115     {L"+", SCAN_CODE_106, 708, 65, 28, 59, 0, FALSE},
116     {L"ent", SCAN_CODE_108, 708, 126, 28, 58, 0, FALSE},
117 };
118 
119 KEY StandardKeyboardKeys[] =
120 {
121     {L"Esc", SCAN_CODE_110, 4, 4, 28, 28, 0, FALSE},
122     {L"F1", SCAN_CODE_112, 68, 4, 28, 28, 0, FALSE},
123     {L"F2", SCAN_CODE_113, 100, 4, 28, 28, 0, FALSE},
124     {L"F3", SCAN_CODE_114, 132, 4, 28, 28, 0, FALSE},
125     {L"F4", SCAN_CODE_115, 164, 4, 28, 28, 0, FALSE},
126     {L"F5", SCAN_CODE_116, 196, 4, 28, 28, 0, FALSE},
127     {L"F6", SCAN_CODE_117, 228, 4, 28, 28, 0, FALSE},
128     {L"F7", SCAN_CODE_118, 292, 4, 28, 28, 0, FALSE},
129     {L"F8", SCAN_CODE_119, 324, 4, 28, 28, 0, FALSE},
130     {L"F9", SCAN_CODE_120, 356, 4, 28, 28, 0, FALSE},
131     {L"F10", SCAN_CODE_121, 388, 4, 28, 28, 0, FALSE},
132     {L"F11", SCAN_CODE_122, 420, 4, 28, 28, 0, FALSE},
133     {L"F12", SCAN_CODE_123, 452, 4, 28, 28, 0, FALSE},
134     {L"Prn", SCAN_CODE_124, 486, 4, 28, 28, 0, FALSE},
135     {L"Stop", SCAN_CODE_125, 518, 4, 28, 28, 0, FALSE},
136     {L"Attn", SCAN_CODE_126, 550, 4, 28, 28, 0, FALSE},
137     {L"`", SCAN_CODE_1, 4, 35, 28, 28, 0, TRUE},
138     {L"1", SCAN_CODE_2, 36, 35, 28, 28, 0, TRUE},
139     {L"2", SCAN_CODE_3, 68, 35, 28, 28, 0, TRUE},
140     {L"3", SCAN_CODE_4, 100, 35, 28, 28, 0, TRUE},
141     {L"4", SCAN_CODE_5, 132, 35, 28, 28, 0, TRUE},
142     {L"5", SCAN_CODE_6, 164, 35, 28, 28, 0, TRUE},
143     {L"6", SCAN_CODE_7, 196, 35, 28, 28, 0, TRUE},
144     {L"7", SCAN_CODE_8, 228, 35, 28, 28, 0, TRUE},
145     {L"8", SCAN_CODE_9, 260, 35, 28, 28, 0, TRUE},
146     {L"9", SCAN_CODE_10, 292, 35, 28, 28, 0, TRUE},
147     {L"0", SCAN_CODE_11, 324, 35, 28, 28, 0, TRUE},
148     {L"-", SCAN_CODE_12, 356, 35, 28, 28, 0, TRUE},
149     {L"=", SCAN_CODE_13, 388, 35, 28, 28, 0, TRUE},
150     {L"<--", SCAN_CODE_15, 420, 35, 63, 28, BS_ICON, FALSE},
151     {L"Tab", SCAN_CODE_16, 4, 65, 60, 28, BS_ICON, FALSE},
152     {L"q", SCAN_CODE_17, 67, 65, 28, 28, 0, TRUE},
153     {L"w", SCAN_CODE_18, 97, 65, 28, 28, 0, TRUE},
154     {L"e", SCAN_CODE_19, 128, 65, 28, 28, 0, TRUE},
155     {L"r", SCAN_CODE_20, 158, 65, 28, 28, 0, TRUE},
156     {L"t", SCAN_CODE_21, 188, 65, 28, 28, 0, TRUE},
157     {L"y", SCAN_CODE_22, 219, 65, 28, 28, 0, TRUE},
158     {L"u", SCAN_CODE_23, 249, 65, 28, 28, 0, TRUE},
159     {L"i", SCAN_CODE_24, 280, 65, 28, 28, 0, TRUE},
160     {L"o", SCAN_CODE_25, 310, 65, 28, 28, 0, TRUE},
161     {L"p", SCAN_CODE_26, 340, 65, 28, 28, 0, TRUE},
162     {L"[", SCAN_CODE_27, 371, 65, 28, 28, 0, TRUE},
163     {L"]", SCAN_CODE_28, 401, 65, 28, 28, 0, TRUE},
164     {L"lock", SCAN_CODE_30, 4, 96, 78, 28, BS_ICON, FALSE},
165     {L"a", SCAN_CODE_31, 84, 96, 28, 28, 0, TRUE},
166     {L"s", SCAN_CODE_32, 115, 96, 28, 28, 0, TRUE},
167     {L"d", SCAN_CODE_33, 145, 96, 28, 28, 0, TRUE},
168     {L"f", SCAN_CODE_34, 176, 96, 28, 28, 0, TRUE},
169     {L"g", SCAN_CODE_35, 206, 96, 28, 28, 0, TRUE},
170     {L"h", SCAN_CODE_36, 236, 96, 28, 28, 0, TRUE},
171     {L"j", SCAN_CODE_37, 267, 96, 28, 28, 0, TRUE},
172     {L"k", SCAN_CODE_38, 297, 96, 28, 28, 0, TRUE},
173     {L"l", SCAN_CODE_39, 328, 96, 28, 28, 0, TRUE},
174     {L";", SCAN_CODE_40, 358, 96, 28, 28, 0, TRUE},
175     {L"'", SCAN_CODE_41, 388, 96, 28, 28, 0, TRUE},
176     {L"\\", SCAN_CODE_29, 432, 65, 51, 28, 0, TRUE},
177     {L"ret", SCAN_CODE_43, 419, 96, 64, 28, BS_ICON, FALSE},
178     {L"shift", SCAN_CODE_44, 4, 126, 96, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
179     {L"z", SCAN_CODE_46, 102, 126, 28, 28, 0, TRUE},
180     {L"x", SCAN_CODE_47, 132, 126, 28, 28, 0, TRUE},
181     {L"c", SCAN_CODE_48, 163, 126, 28, 28, 0, TRUE},
182     {L"v", SCAN_CODE_49, 193, 126, 28, 28, 0, TRUE},
183     {L"b", SCAN_CODE_50, 224, 126, 28, 28, 0, TRUE},
184     {L"n", SCAN_CODE_51, 254, 126, 28, 28, 0, TRUE},
185     {L"m", SCAN_CODE_52, 284, 126, 28, 28, 0, TRUE},
186     {L",", SCAN_CODE_53, 315, 126, 28, 28, 0, TRUE},
187     {L".", SCAN_CODE_54, 345, 126, 28, 28, 0, TRUE},
188     {L"/", SCAN_CODE_55, 376, 126, 28, 28, 0, TRUE},
189     {L"shift", SCAN_CODE_57, 406, 126, 77, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
190     {L"ctrl", SCAN_CODE_58, 4, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
191     {L"v", SCAN_CODE_84, 518, 156, 28, 28, BS_ICON, FALSE},
192     {L"ROS", SCAN_CODE_127, 48, 156, 43, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
193     {L"alt", SCAN_CODE_60, 91, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
194     {L"", SCAN_CODE_61, 134, 156, 174, 28, 0, FALSE},
195     {L"alt", SCAN_CODE_62, 310, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
196     {L"ROS", SCAN_CODE_128, 353, 156, 43, 28, BS_ICON|BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
197     {L"menu", SCAN_CODE_129, 396, 156, 43, 28, BS_ICON, FALSE},
198     {L"ctrl", SCAN_CODE_64, 440, 156, 43, 28, BS_PUSHLIKE|BS_AUTOCHECKBOX, FALSE},
199     {L"ins", SCAN_CODE_75, 486, 35, 28, 28, 0, FALSE},
200     {L"del", SCAN_CODE_76, 486, 65, 28, 28, 0, FALSE},
201     {L"hm", SCAN_CODE_80, 518, 35, 28, 28, BS_ICON, FALSE},
202     {L"end", SCAN_CODE_81, 518, 65, 28, 28, 0, FALSE},
203     {L"pup", SCAN_CODE_85, 550, 35, 28, 28, BS_ICON, FALSE},
204     {L"pdn", SCAN_CODE_86, 550, 65, 28, 28, BS_ICON, FALSE},
205     {L"<-", SCAN_CODE_79, 486, 156, 28, 28, BS_ICON, FALSE},
206     {L"^", SCAN_CODE_83, 518, 126, 28, 28, BS_ICON, FALSE},
207     {L"->", SCAN_CODE_89, 550, 156, 28, 28, BS_ICON, FALSE},
208     {L"nlk", SCAN_CODE_90, 582, 35, 28, 28, 0, FALSE},
209     {L"7", SCAN_CODE_91, 582, 65, 28, 28, 0, FALSE},
210     {L"4", SCAN_CODE_92, 582, 96, 28, 28, 0, FALSE},
211     {L"1", SCAN_CODE_93, 582, 126, 28, 28, 0, FALSE},
212     {L"/", SCAN_CODE_95, 614, 35, 28, 28, 0, FALSE},
213     {L"8", SCAN_CODE_96, 614, 65, 28, 28, 0, FALSE},
214     {L"5", SCAN_CODE_97, 614, 96, 28, 28, 0, FALSE},
215     {L"2", SCAN_CODE_98, 614, 126, 28, 28, 0, FALSE},
216     {L"0", SCAN_CODE_99, 582, 156, 60, 28, 0, FALSE},
217     {L"*", SCAN_CODE_100, 646, 35, 28, 28, 0, FALSE},
218     {L"9", SCAN_CODE_101, 646, 65, 28, 28, 0, FALSE},
219     {L"6", SCAN_CODE_102, 646, 96, 28, 28, 0, FALSE},
220     {L"3", SCAN_CODE_103, 646, 126, 28, 28, 0, FALSE},
221     {L".", SCAN_CODE_104, 646, 156, 28, 28, 0, FALSE},
222     {L"-", SCAN_CODE_105, 678, 35, 28, 28, 0, FALSE},
223     {L"+", SCAN_CODE_106, 678, 65, 28, 59, 0, FALSE},
224     {L"ent", SCAN_CODE_108, 678, 126, 28, 58, 0, FALSE},
225 };
226 
227 KEYBOARD_STRUCT EnhancedKeyboard =
228 {
229     EnhancedKeyboardKeys,
230     _countof(EnhancedKeyboardKeys),
231     { 746, 193 },
232     { 620, 6 },
233     { 40, 15 },
234     40,
235     { 628, 25 },
236     { 7, 5 },
237     40
238 };
239 
240 KEYBOARD_STRUCT StandardKeyboard =
241 {
242     StandardKeyboardKeys,
243     _countof(StandardKeyboardKeys),
244     { 586, 193 },
245     { 588, 6 },
246     { 40, 15 },
247     40,
248     { 596, 25 },
249     { 7, 5 },
250     40
251 };
252