5 #ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_KEY_MAP_H_
6 #define FLUTTER_SHELL_PLATFORM_WINDOWS_FLUTTER_KEY_MAP_H_
25 std::map<uint64_t, uint64_t> KeyboardKeyEmbedderHandler::windowsToPhysicalMap_ =
27 {0x00000001, 0x00070029},
28 {0x00000002, 0x0007001e},
29 {0x00000003, 0x0007001f},
30 {0x00000004, 0x00070020},
31 {0x00000005, 0x00070021},
32 {0x00000006, 0x00070022},
33 {0x00000007, 0x00070023},
34 {0x00000008, 0x00070024},
35 {0x00000009, 0x00070025},
36 {0x0000000a, 0x00070026},
37 {0x0000000b, 0x00070027},
38 {0x0000000c, 0x0007002d},
39 {0x0000000d, 0x0007002e},
40 {0x0000000e, 0x0007002a},
41 {0x0000000f, 0x0007002b},
42 {0x00000010, 0x00070014},
43 {0x00000011, 0x0007001a},
44 {0x00000012, 0x00070008},
45 {0x00000013, 0x00070015},
46 {0x00000014, 0x00070017},
47 {0x00000015, 0x0007001c},
48 {0x00000016, 0x00070018},
49 {0x00000017, 0x0007000c},
50 {0x00000018, 0x00070012},
51 {0x00000019, 0x00070013},
52 {0x0000001a, 0x0007002f},
53 {0x0000001b, 0x00070030},
54 {0x0000001c, 0x00070028},
55 {0x0000001d, 0x000700e0},
56 {0x0000001e, 0x00070004},
57 {0x0000001f, 0x00070016},
58 {0x00000020, 0x00070007},
59 {0x00000021, 0x00070009},
60 {0x00000022, 0x0007000a},
61 {0x00000023, 0x0007000b},
62 {0x00000024, 0x0007000d},
63 {0x00000025, 0x0007000e},
64 {0x00000026, 0x0007000f},
65 {0x00000027, 0x00070033},
66 {0x00000028, 0x00070034},
67 {0x00000029, 0x00070035},
68 {0x0000002a, 0x000700e1},
69 {0x0000002b, 0x00070031},
70 {0x0000002c, 0x0007001d},
71 {0x0000002d, 0x0007001b},
72 {0x0000002e, 0x00070006},
73 {0x0000002f, 0x00070019},
74 {0x00000030, 0x00070005},
75 {0x00000031, 0x00070011},
76 {0x00000032, 0x00070010},
77 {0x00000033, 0x00070036},
78 {0x00000034, 0x00070037},
79 {0x00000035, 0x00070038},
80 {0x00000036, 0x000700e5},
81 {0x00000037, 0x00070055},
82 {0x00000038, 0x000700e2},
83 {0x00000039, 0x0007002c},
84 {0x0000003a, 0x00070039},
85 {0x0000003b, 0x0007003a},
86 {0x0000003c, 0x0007003b},
87 {0x0000003d, 0x0007003c},
88 {0x0000003e, 0x0007003d},
89 {0x0000003f, 0x0007003e},
90 {0x00000040, 0x0007003f},
91 {0x00000041, 0x00070040},
92 {0x00000042, 0x00070041},
93 {0x00000043, 0x00070042},
94 {0x00000044, 0x00070043},
95 {0x00000045, 0x00070048},
96 {0x00000046, 0x00070047},
97 {0x00000047, 0x0007005f},
98 {0x00000048, 0x00070060},
99 {0x00000049, 0x00070061},
100 {0x0000004a, 0x00070056},
101 {0x0000004b, 0x0007005c},
102 {0x0000004c, 0x0007005d},
103 {0x0000004d, 0x0007005e},
104 {0x0000004e, 0x00070057},
105 {0x0000004f, 0x00070059},
106 {0x00000050, 0x0007005a},
107 {0x00000051, 0x0007005b},
108 {0x00000052, 0x00070062},
109 {0x00000053, 0x00070063},
110 {0x00000056, 0x00070064},
111 {0x00000057, 0x00070044},
112 {0x00000058, 0x00070045},
113 {0x00000059, 0x00070067},
114 {0x00000064, 0x00070068},
115 {0x00000065, 0x00070069},
116 {0x00000066, 0x0007006a},
117 {0x00000067, 0x0007006b},
118 {0x00000068, 0x0007006c},
119 {0x00000069, 0x0007006d},
120 {0x0000006a, 0x0007006e},
121 {0x0000006b, 0x0007006f},
122 {0x0000006c, 0x00070070},
123 {0x0000006d, 0x00070071},
124 {0x0000006e, 0x00070072},
125 {0x00000070, 0x00070088},
126 {0x00000071, 0x00070091},
127 {0x00000072, 0x00070090},
128 {0x00000073, 0x00070087},
129 {0x00000076, 0x00070073},
130 {0x00000077, 0x00070093},
131 {0x00000078, 0x00070092},
132 {0x00000079, 0x0007008a},
133 {0x0000007b, 0x0007008b},
134 {0x0000007d, 0x00070089},
135 {0x0000007e, 0x00070085},
136 {0x000000fc, 0x00070002},
137 {0x000000ff, 0x00070001},
138 {0x0000e008, 0x0007007a},
139 {0x0000e00a, 0x0007007d},
140 {0x0000e010, 0x000c00b6},
141 {0x0000e017, 0x0007007b},
142 {0x0000e018, 0x0007007c},
143 {0x0000e019, 0x000c00b5},
144 {0x0000e01c, 0x00070058},
145 {0x0000e01d, 0x000700e4},
146 {0x0000e020, 0x0007007f},
147 {0x0000e021, 0x000c0192},
148 {0x0000e022, 0x000c00cd},
149 {0x0000e024, 0x000c00b7},
150 {0x0000e02c, 0x000c00b8},
151 {0x0000e02e, 0x00070081},
152 {0x0000e030, 0x00070080},
153 {0x0000e032, 0x000c0223},
154 {0x0000e035, 0x00070054},
155 {0x0000e037, 0x00070046},
156 {0x0000e038, 0x000700e6},
157 {0x0000e03b, 0x00070075},
158 {0x0000e045, 0x00070053},
159 {0x0000e047, 0x0007004a},
160 {0x0000e048, 0x00070052},
161 {0x0000e049, 0x0007004b},
162 {0x0000e04b, 0x00070050},
163 {0x0000e04d, 0x0007004f},
164 {0x0000e04f, 0x0007004d},
165 {0x0000e050, 0x00070051},
166 {0x0000e051, 0x0007004e},
167 {0x0000e052, 0x00070049},
168 {0x0000e053, 0x0007004c},
169 {0x0000e05b, 0x000700e3},
170 {0x0000e05c, 0x000700e7},
171 {0x0000e05d, 0x00070065},
172 {0x0000e05e, 0x00070066},
173 {0x0000e05f, 0x00010082},
174 {0x0000e063, 0x00010083},
175 {0x0000e065, 0x000c0221},
176 {0x0000e066, 0x000c022a},
177 {0x0000e067, 0x000c0227},
178 {0x0000e068, 0x000c0226},
179 {0x0000e069, 0x000c0225},
180 {0x0000e06a, 0x000c0224},
181 {0x0000e06b, 0x000c0194},
182 {0x0000e06c, 0x000c018a},
183 {0x0000e06d, 0x000c0183},
186 std::map<uint64_t, uint64_t> KeyboardKeyEmbedderHandler::windowsToLogicalMap_ =
188 {0x00000003, 0x00100000504},
189 {0x00000008, 0x00100000008},
190 {0x00000009, 0x00100000009},
191 {0x0000000c, 0x00100000401},
192 {0x0000000d, 0x0010000000d},
193 {0x00000010, 0x00200000102},
194 {0x00000011, 0x00200000100},
195 {0x00000013, 0x00100000509},
196 {0x00000014, 0x00100000104},
197 {0x00000015, 0x00200000010},
198 {0x00000017, 0x00100000713},
199 {0x00000018, 0x00100000706},
200 {0x00000019, 0x00100000719},
201 {0x0000001b, 0x0010000001b},
202 {0x0000001c, 0x00100000705},
203 {0x0000001e, 0x00100000501},
204 {0x0000001f, 0x0010000070b},
205 {0x00000020, 0x00000000020},
206 {0x00000021, 0x00100000308},
207 {0x00000022, 0x00100000307},
208 {0x00000023, 0x00100000305},
209 {0x00000024, 0x00100000306},
210 {0x00000025, 0x00100000302},
211 {0x00000026, 0x00100000304},
212 {0x00000027, 0x00100000303},
213 {0x00000028, 0x00100000301},
214 {0x00000029, 0x0010000050c},
215 {0x0000002a, 0x00100000a0c},
216 {0x0000002b, 0x00100000506},
217 {0x0000002c, 0x00100000608},
218 {0x0000002d, 0x00100000407},
219 {0x0000002e, 0x0010000007f},
220 {0x0000002f, 0x00100000508},
221 {0x0000005b, 0x00200000106},
222 {0x0000005c, 0x00200000107},
223 {0x0000005d, 0x00100000505},
224 {0x0000005f, 0x00200000002},
225 {0x00000060, 0x00200000230},
226 {0x00000061, 0x00200000231},
227 {0x00000062, 0x00200000232},
228 {0x00000063, 0x00200000233},
229 {0x00000064, 0x00200000234},
230 {0x00000065, 0x00200000235},
231 {0x00000066, 0x00200000236},
232 {0x00000067, 0x00200000237},
233 {0x00000068, 0x00200000238},
234 {0x00000069, 0x00200000239},
235 {0x0000006a, 0x0020000022a},
236 {0x0000006b, 0x0020000022b},
237 {0x0000006c, 0x0020000022c},
238 {0x0000006d, 0x0020000022d},
239 {0x0000006e, 0x0020000022e},
240 {0x0000006f, 0x0020000022f},
241 {0x00000070, 0x00100000801},
242 {0x00000071, 0x00100000802},
243 {0x00000072, 0x00100000803},
244 {0x00000073, 0x00100000804},
245 {0x00000074, 0x00100000805},
246 {0x00000075, 0x00100000806},
247 {0x00000076, 0x00100000807},
248 {0x00000077, 0x00100000808},
249 {0x00000078, 0x00100000809},
250 {0x00000079, 0x0010000080a},
251 {0x0000007a, 0x0010000080b},
252 {0x0000007b, 0x0010000080c},
253 {0x0000007c, 0x0010000080d},
254 {0x0000007d, 0x0010000080e},
255 {0x0000007e, 0x0010000080f},
256 {0x0000007f, 0x00100000810},
257 {0x00000080, 0x00100000811},
258 {0x00000081, 0x00100000812},
259 {0x00000082, 0x00100000813},
260 {0x00000083, 0x00100000814},
261 {0x00000084, 0x00100000815},
262 {0x00000085, 0x00100000816},
263 {0x00000086, 0x00100000817},
264 {0x00000087, 0x00100000818},
265 {0x00000090, 0x0010000010a},
266 {0x00000091, 0x0010000010c},
267 {0x00000092, 0x0020000023d},
268 {0x000000a0, 0x00200000102},
269 {0x000000a1, 0x00200000103},
270 {0x000000a2, 0x00200000100},
271 {0x000000a3, 0x00200000101},
272 {0x000000a4, 0x00200000104},
273 {0x000000a5, 0x00200000105},
274 {0x000000a6, 0x00100000c01},
275 {0x000000a7, 0x00100000c03},
276 {0x000000a8, 0x00100000c05},
277 {0x000000a9, 0x00100000c07},
278 {0x000000aa, 0x00100000c06},
279 {0x000000ab, 0x00100000c02},
280 {0x000000ac, 0x00100000c04},
281 {0x000000ad, 0x00100000a11},
282 {0x000000ae, 0x00100000a0f},
283 {0x000000af, 0x00100000a10},
284 {0x000000b2, 0x00100000a07},
285 {0x000000b3, 0x00100000a05},
286 {0x000000b4, 0x00100000b03},
287 {0x000000ba, 0x0000000003b},
288 {0x000000bb, 0x0000000003d},
289 {0x000000bc, 0x0000000002c},
290 {0x000000bd, 0x0000000002d},
291 {0x000000be, 0x0000000002e},
292 {0x000000bf, 0x0000000002f},
293 {0x000000c0, 0x00000000060},
294 {0x000000c3, 0x00200000308},
295 {0x000000c4, 0x00200000309},
296 {0x000000c5, 0x0020000030a},
297 {0x000000c6, 0x0020000030b},
298 {0x000000c7, 0x0020000030c},
299 {0x000000c8, 0x0020000030d},
300 {0x000000c9, 0x0020000030e},
301 {0x000000ca, 0x0020000030f},
302 {0x000000cb, 0x00200000310},
303 {0x000000db, 0x0000000005b},
304 {0x000000dc, 0x0000000005c},
305 {0x000000dd, 0x0000000005d},
306 {0x000000de, 0x00000000022},
307 {0x000000f6, 0x00100000503},
308 {0x000000fa, 0x0010000050a},
311 std::map<uint64_t, uint64_t> KeyboardKeyEmbedderHandler::scanCodeToLogicalMap_ =
313 {0x00000037, 0x0020000022a},
314 {0x00000047, 0x00200000237},
315 {0x00000048, 0x00200000238},
316 {0x00000049, 0x00200000239},
317 {0x0000004a, 0x0020000022d},
318 {0x0000004b, 0x00200000234},
319 {0x0000004c, 0x00200000235},
320 {0x0000004d, 0x00200000236},
321 {0x0000004e, 0x0020000022b},
322 {0x0000004f, 0x00200000231},
323 {0x00000050, 0x00200000232},
324 {0x00000051, 0x00200000233},
325 {0x00000052, 0x00200000230},
326 {0x00000053, 0x0020000022e},
327 {0x00000059, 0x0020000023d},
328 {0x0000e01d, 0x00200000101},
329 {0x0000e035, 0x0020000022f},
330 {0x0000e038, 0x00200000105},
333 const uint64_t KeyboardKeyEmbedderHandler::valueMask = 0x000ffffffff;
334 const uint64_t KeyboardKeyEmbedderHandler::unicodePlane = 0x00000000000;
335 const uint64_t KeyboardKeyEmbedderHandler::windowsPlane = 0x01600000000;