Sunshine
v2025.118.151840
Self-hosted game stream host for Moonlight.
keylayout.h
Go to the documentation of this file.
1
5
#pragma once
6
7
#include <array>
8
#include <cstdint>
9
10
namespace
platf {
11
// Virtual Key to Scan Code mapping for the US English layout (00000409).
12
// GameStream uses this as the canonical key layout for scancode conversion.
13
constexpr
std::array<std::uint8_t, std::numeric_limits<std::uint8_t>::max() + 1> VK_TO_SCANCODE_MAP {
14
0,
/* 0x00 */
15
0,
/* 0x01 */
16
0,
/* 0x02 */
17
70,
/* 0x03 */
18
0,
/* 0x04 */
19
0,
/* 0x05 */
20
0,
/* 0x06 */
21
0,
/* 0x07 */
22
14,
/* 0x08 */
23
15,
/* 0x09 */
24
0,
/* 0x0a */
25
0,
/* 0x0b */
26
76,
/* 0x0c */
27
28,
/* 0x0d */
28
0,
/* 0x0e */
29
0,
/* 0x0f */
30
42,
/* 0x10 */
31
29,
/* 0x11 */
32
56,
/* 0x12 */
33
0,
/* 0x13 */
34
58,
/* 0x14 */
35
0,
/* 0x15 */
36
0,
/* 0x16 */
37
0,
/* 0x17 */
38
0,
/* 0x18 */
39
0,
/* 0x19 */
40
0,
/* 0x1a */
41
1,
/* 0x1b */
42
0,
/* 0x1c */
43
0,
/* 0x1d */
44
0,
/* 0x1e */
45
0,
/* 0x1f */
46
57,
/* 0x20 */
47
73,
/* 0x21 */
48
81,
/* 0x22 */
49
79,
/* 0x23 */
50
71,
/* 0x24 */
51
75,
/* 0x25 */
52
72,
/* 0x26 */
53
77,
/* 0x27 */
54
80,
/* 0x28 */
55
0,
/* 0x29 */
56
0,
/* 0x2a */
57
0,
/* 0x2b */
58
84,
/* 0x2c */
59
82,
/* 0x2d */
60
83,
/* 0x2e */
61
99,
/* 0x2f */
62
11,
/* 0x30 */
63
2,
/* 0x31 */
64
3,
/* 0x32 */
65
4,
/* 0x33 */
66
5,
/* 0x34 */
67
6,
/* 0x35 */
68
7,
/* 0x36 */
69
8,
/* 0x37 */
70
9,
/* 0x38 */
71
10,
/* 0x39 */
72
0,
/* 0x3a */
73
0,
/* 0x3b */
74
0,
/* 0x3c */
75
0,
/* 0x3d */
76
0,
/* 0x3e */
77
0,
/* 0x3f */
78
0,
/* 0x40 */
79
30,
/* 0x41 */
80
48,
/* 0x42 */
81
46,
/* 0x43 */
82
32,
/* 0x44 */
83
18,
/* 0x45 */
84
33,
/* 0x46 */
85
34,
/* 0x47 */
86
35,
/* 0x48 */
87
23,
/* 0x49 */
88
36,
/* 0x4a */
89
37,
/* 0x4b */
90
38,
/* 0x4c */
91
50,
/* 0x4d */
92
49,
/* 0x4e */
93
24,
/* 0x4f */
94
25,
/* 0x50 */
95
16,
/* 0x51 */
96
19,
/* 0x52 */
97
31,
/* 0x53 */
98
20,
/* 0x54 */
99
22,
/* 0x55 */
100
47,
/* 0x56 */
101
17,
/* 0x57 */
102
45,
/* 0x58 */
103
21,
/* 0x59 */
104
44,
/* 0x5a */
105
91,
/* 0x5b */
106
92,
/* 0x5c */
107
93,
/* 0x5d */
108
0,
/* 0x5e */
109
95,
/* 0x5f */
110
82,
/* 0x60 */
111
79,
/* 0x61 */
112
80,
/* 0x62 */
113
81,
/* 0x63 */
114
75,
/* 0x64 */
115
76,
/* 0x65 */
116
77,
/* 0x66 */
117
71,
/* 0x67 */
118
72,
/* 0x68 */
119
73,
/* 0x69 */
120
55,
/* 0x6a */
121
78,
/* 0x6b */
122
0,
/* 0x6c */
123
74,
/* 0x6d */
124
83,
/* 0x6e */
125
53,
/* 0x6f */
126
59,
/* 0x70 */
127
60,
/* 0x71 */
128
61,
/* 0x72 */
129
62,
/* 0x73 */
130
63,
/* 0x74 */
131
64,
/* 0x75 */
132
65,
/* 0x76 */
133
66,
/* 0x77 */
134
67,
/* 0x78 */
135
68,
/* 0x79 */
136
87,
/* 0x7a */
137
88,
/* 0x7b */
138
100,
/* 0x7c */
139
101,
/* 0x7d */
140
102,
/* 0x7e */
141
103,
/* 0x7f */
142
104,
/* 0x80 */
143
105,
/* 0x81 */
144
106,
/* 0x82 */
145
107,
/* 0x83 */
146
108,
/* 0x84 */
147
109,
/* 0x85 */
148
110,
/* 0x86 */
149
118,
/* 0x87 */
150
0,
/* 0x88 */
151
0,
/* 0x89 */
152
0,
/* 0x8a */
153
0,
/* 0x8b */
154
0,
/* 0x8c */
155
0,
/* 0x8d */
156
0,
/* 0x8e */
157
0,
/* 0x8f */
158
69,
/* 0x90 */
159
70,
/* 0x91 */
160
0,
/* 0x92 */
161
0,
/* 0x93 */
162
0,
/* 0x94 */
163
0,
/* 0x95 */
164
0,
/* 0x96 */
165
0,
/* 0x97 */
166
0,
/* 0x98 */
167
0,
/* 0x99 */
168
0,
/* 0x9a */
169
0,
/* 0x9b */
170
0,
/* 0x9c */
171
0,
/* 0x9d */
172
0,
/* 0x9e */
173
0,
/* 0x9f */
174
42,
/* 0xa0 */
175
54,
/* 0xa1 */
176
29,
/* 0xa2 */
177
29,
/* 0xa3 */
178
56,
/* 0xa4 */
179
56,
/* 0xa5 */
180
106,
/* 0xa6 */
181
105,
/* 0xa7 */
182
103,
/* 0xa8 */
183
104,
/* 0xa9 */
184
101,
/* 0xaa */
185
102,
/* 0xab */
186
50,
/* 0xac */
187
32,
/* 0xad */
188
46,
/* 0xae */
189
48,
/* 0xaf */
190
25,
/* 0xb0 */
191
16,
/* 0xb1 */
192
36,
/* 0xb2 */
193
34,
/* 0xb3 */
194
108,
/* 0xb4 */
195
109,
/* 0xb5 */
196
107,
/* 0xb6 */
197
33,
/* 0xb7 */
198
0,
/* 0xb8 */
199
0,
/* 0xb9 */
200
39,
/* 0xba */
201
13,
/* 0xbb */
202
51,
/* 0xbc */
203
12,
/* 0xbd */
204
52,
/* 0xbe */
205
53,
/* 0xbf */
206
41,
/* 0xc0 */
207
115,
/* 0xc1 */
208
126,
/* 0xc2 */
209
0,
/* 0xc3 */
210
0,
/* 0xc4 */
211
0,
/* 0xc5 */
212
0,
/* 0xc6 */
213
0,
/* 0xc7 */
214
0,
/* 0xc8 */
215
0,
/* 0xc9 */
216
0,
/* 0xca */
217
0,
/* 0xcb */
218
0,
/* 0xcc */
219
0,
/* 0xcd */
220
0,
/* 0xce */
221
0,
/* 0xcf */
222
0,
/* 0xd0 */
223
0,
/* 0xd1 */
224
0,
/* 0xd2 */
225
0,
/* 0xd3 */
226
0,
/* 0xd4 */
227
0,
/* 0xd5 */
228
0,
/* 0xd6 */
229
0,
/* 0xd7 */
230
0,
/* 0xd8 */
231
0,
/* 0xd9 */
232
0,
/* 0xda */
233
26,
/* 0xdb */
234
43,
/* 0xdc */
235
27,
/* 0xdd */
236
40,
/* 0xde */
237
0,
/* 0xdf */
238
0,
/* 0xe0 */
239
0,
/* 0xe1 */
240
86,
/* 0xe2 */
241
0,
/* 0xe3 */
242
0,
/* 0xe4 */
243
0,
/* 0xe5 */
244
0,
/* 0xe6 */
245
0,
/* 0xe7 */
246
0,
/* 0xe8 */
247
113,
/* 0xe9 */
248
92,
/* 0xea */
249
123,
/* 0xeb */
250
0,
/* 0xec */
251
111,
/* 0xed */
252
90,
/* 0xee */
253
0,
/* 0xef */
254
0,
/* 0xf0 */
255
91,
/* 0xf1 */
256
0,
/* 0xf2 */
257
95,
/* 0xf3 */
258
0,
/* 0xf4 */
259
94,
/* 0xf5 */
260
0,
/* 0xf6 */
261
0,
/* 0xf7 */
262
0,
/* 0xf8 */
263
93,
/* 0xf9 */
264
0,
/* 0xfa */
265
98,
/* 0xfb */
266
0,
/* 0xfc */
267
0,
/* 0xfd */
268
0,
/* 0xfe */
269
0,
/* 0xff */
270
};
271
}
// namespace platf
src
platform
windows
keylayout.h
Generated by
1.10.0