1
+ /*
2
+ This software is licensed under the MIT License. See the license file for details.
3
+ Source: https://github.com/spacehuhntech/WiFiDuck
4
+ */
5
+
6
+ #pragma once
7
+
8
+ #include "usb_hid_keys.h"
9
+
10
+ // Modifier(s), Key
11
+ const uint8_t ascii_br [] PROGMEM = {
12
+ KEY_NONE , KEY_NONE , // NUL
13
+ KEY_NONE , KEY_NONE , // SOH
14
+ KEY_NONE , KEY_NONE , // STX
15
+ KEY_NONE , KEY_NONE , // ETX
16
+ KEY_NONE , KEY_NONE , // EOT
17
+ KEY_NONE , KEY_NONE , // ENQ
18
+ KEY_NONE , KEY_NONE , // ACK
19
+ KEY_NONE , KEY_NONE , // BEL
20
+
21
+ // 8, 0x08
22
+ KEY_NONE , KEY_BACKSPACE , // BS Backspace
23
+ KEY_NONE , KEY_TAB , // TAB Tab
24
+ KEY_NONE , KEY_ENTER , // LF Enter
25
+
26
+ KEY_NONE , KEY_NONE , // VT
27
+ KEY_NONE , KEY_NONE , // FF
28
+ KEY_NONE , KEY_NONE , // CR
29
+ KEY_NONE , KEY_NONE , // SO
30
+ KEY_NONE , KEY_NONE , // SI
31
+ KEY_NONE , KEY_NONE , // DEL
32
+ KEY_NONE , KEY_NONE , // DC1
33
+ KEY_NONE , KEY_NONE , // DC2
34
+ KEY_NONE , KEY_NONE , // DC3
35
+ KEY_NONE , KEY_NONE , // DC4
36
+ KEY_NONE , KEY_NONE , // NAK
37
+ KEY_NONE , KEY_NONE , // SYN
38
+ KEY_NONE , KEY_NONE , // ETB
39
+ KEY_NONE , KEY_NONE , // CAN
40
+ KEY_NONE , KEY_NONE , // EM
41
+ KEY_NONE , KEY_NONE , // SUB
42
+ KEY_NONE , KEY_NONE , // ESC
43
+ KEY_NONE , KEY_NONE , // FS
44
+ KEY_NONE , KEY_NONE , // GS
45
+ KEY_NONE , KEY_NONE , // RS
46
+ KEY_NONE , KEY_NONE , // US
47
+
48
+ // 32, 0x20
49
+ KEY_NONE , KEY_SPACE , // ' ' =
50
+ KEY_MOD_LSHIFT , KEY_1 , // ! =
51
+ KEY_MOD_LSHIFT , KEY_GRAVE , // " #
52
+ KEY_MOD_LSHIFT , KEY_3 , // #
53
+
54
+ // 36, 0x24
55
+ KEY_MOD_LSHIFT , KEY_4 , // $ =
56
+ KEY_MOD_LSHIFT , KEY_5 , // % =
57
+ KEY_MOD_LSHIFT , KEY_7 , // & #
58
+ KEY_NONE , KEY_GRAVE , // ' #
59
+
60
+ // 40, 0x28
61
+ KEY_MOD_LSHIFT , KEY_9 , // ( #
62
+ KEY_MOD_LSHIFT , KEY_0 , // ) #
63
+ KEY_MOD_LSHIFT , KEY_8 , // * #
64
+ KEY_MOD_LSHIFT , KEY_EQUAL , // + #
65
+
66
+ // 44, 0x2c
67
+ KEY_NONE , KEY_COMMA , // , #
68
+ KEY_NONE , KEY_MINUS , // - #
69
+ KEY_NONE , KEY_DOT , // . #
70
+ KEY_NONE , KEY_KPSLASH , // / #
71
+
72
+ // 48, 0x30
73
+ KEY_NONE , KEY_0 , // 0 =
74
+ KEY_NONE , KEY_1 , // 1 =
75
+ KEY_NONE , KEY_2 , // 2 =
76
+ KEY_NONE , KEY_3 , // 3 =
77
+
78
+ // 52, 0x34
79
+ KEY_NONE , KEY_4 , // 4 =
80
+ KEY_NONE , KEY_5 , // 5 =
81
+ KEY_NONE , KEY_6 , // 6 =
82
+ KEY_NONE , KEY_7 , // 7 =
83
+
84
+ // 56, 0x38
85
+ KEY_NONE , KEY_8 , // 8 =
86
+ KEY_NONE , KEY_9 , // 9 =
87
+ KEY_MOD_LSHIFT , KEY_SLASH , // : #
88
+ KEY_NONE , KEY_SLASH , // ; #
89
+
90
+ // 60, 0x3c
91
+ KEY_MOD_LSHIFT , KEY_COMMA , // < #
92
+ KEY_NONE , KEY_EQUAL , // = #
93
+ KEY_MOD_LSHIFT , KEY_DOT , // > #
94
+ KEY_MOD_RALT , KEY_W , // ? !
95
+
96
+ // 64, 0x40
97
+ KEY_MOD_LSHIFT , KEY_2 , // @ #
98
+ KEY_MOD_LSHIFT , KEY_A , // A =
99
+ KEY_MOD_LSHIFT , KEY_B , // B =
100
+ KEY_MOD_LSHIFT , KEY_C , // C =
101
+
102
+ // 68, 0x44
103
+ KEY_MOD_LSHIFT , KEY_D , // D =
104
+ KEY_MOD_LSHIFT , KEY_E , // E =
105
+ KEY_MOD_LSHIFT , KEY_F , // F =
106
+ KEY_MOD_LSHIFT , KEY_G , // G =
107
+
108
+ // 72, 0x48
109
+ KEY_MOD_LSHIFT , KEY_H , // H =
110
+ KEY_MOD_LSHIFT , KEY_I , // I =
111
+ KEY_MOD_LSHIFT , KEY_J , // J =
112
+ KEY_MOD_LSHIFT , KEY_K , // K =
113
+
114
+ // 76, 0x4c
115
+ KEY_MOD_LSHIFT , KEY_L , // L =
116
+ KEY_MOD_LSHIFT , KEY_M , // M =
117
+ KEY_MOD_LSHIFT , KEY_N , // N =
118
+ KEY_MOD_LSHIFT , KEY_O , // O =
119
+
120
+ // 80, 0x50
121
+ KEY_MOD_LSHIFT , KEY_P , // P =
122
+ KEY_MOD_LSHIFT , KEY_Q , // Q =
123
+ KEY_MOD_LSHIFT , KEY_R , // R =
124
+ KEY_MOD_LSHIFT , KEY_S , // S =
125
+
126
+ // 84, 0x54
127
+ KEY_MOD_LSHIFT , KEY_T , // T =
128
+ KEY_MOD_LSHIFT , KEY_U , // U =
129
+ KEY_MOD_LSHIFT , KEY_V , // V =
130
+ KEY_MOD_LSHIFT , KEY_W , // W =
131
+
132
+ // 88, 0x58
133
+ KEY_MOD_LSHIFT , KEY_X , // X =
134
+ KEY_MOD_LSHIFT , KEY_Y , // Y =
135
+ KEY_MOD_LSHIFT , KEY_Z , // Z =
136
+ KEY_NONE , KEY_RIGHTBRACE , // [ #
137
+
138
+ // 92, 0x5c
139
+ KEY_NONE , KEY_102ND , // bslash #
140
+ KEY_NONE , KEY_BACKSLASH , // ] #
141
+ KEY_MOD_LSHIFT , KEY_APOSTROPHE , // ^ #
142
+ KEY_MOD_LSHIFT , KEY_MINUS , // _ #
143
+
144
+ // 96, 0x60
145
+ KEY_MOD_LSHIFT , KEY_LEFTBRACE , // ` !
146
+ KEY_NONE , KEY_A , // a =
147
+ KEY_NONE , KEY_B , // b =
148
+ KEY_NONE , KEY_C , // c =
149
+
150
+ // 100, 0x64
151
+ KEY_NONE , KEY_D , // d =
152
+ KEY_NONE , KEY_E , // e =
153
+ KEY_NONE , KEY_F , // f =
154
+ KEY_NONE , KEY_G , // g =
155
+
156
+ // 104, 0x68
157
+ KEY_NONE , KEY_H , // h =
158
+ KEY_NONE , KEY_I , // i =
159
+ KEY_NONE , KEY_J , // j =
160
+ KEY_NONE , KEY_K , // k =
161
+
162
+ // 108, 0x6c
163
+ KEY_NONE , KEY_L , // l =
164
+ KEY_NONE , KEY_M , // m =
165
+ KEY_NONE , KEY_N , // n =
166
+ KEY_NONE , KEY_O , // o =
167
+
168
+ // 112, 0x70
169
+ KEY_NONE , KEY_P , // p =
170
+ KEY_NONE , KEY_Q , // q =
171
+ KEY_NONE , KEY_R , // r =
172
+ KEY_NONE , KEY_S , // s =
173
+
174
+ // 116, 0x74
175
+ KEY_NONE , KEY_T , // t =
176
+ KEY_NONE , KEY_U , // u =
177
+ KEY_NONE , KEY_V , // v =
178
+ KEY_NONE , KEY_W , // w =
179
+
180
+ // 120, 0x78
181
+ KEY_NONE , KEY_X , // x =
182
+ KEY_NONE , KEY_Y , // y =
183
+ KEY_NONE , KEY_Z , // z =
184
+ KEY_MOD_LSHIFT , KEY_RIGHTBRACE , // { #
185
+
186
+ // 124, 0x7c
187
+ KEY_MOD_LSHIFT , KEY_102ND , // | #
188
+ KEY_MOD_LSHIFT , KEY_BACKSLASH , // } #
189
+ KEY_NONE , KEY_APOSTROPHE , // ~ #
190
+ KEY_NONE , KEY_DELETE // DEL
191
+ };
192
+
193
+ const uint8_t utf8_br [] PROGMEM = {
194
+ 0xC2 , 0xA3 , 0x00 , 0x00 , KEY_MOD_RALT , KEY_4 , // £ !
195
+ 0xC2 , 0xA7 , 0x00 , 0x00 , KEY_MOD_RALT , KEY_4 , // § x
196
+ 0xC2 , 0xAA , 0x00 , 0x00 , KEY_MOD_RALT , KEY_RIGHTBRACE , // ª !
197
+ 0xC2 , 0xAB , 0x00 , 0x00 , KEY_NONE , KEY_EQUAL , // « x
198
+ 0xC2 , 0xBA , 0x00 , 0x00 , KEY_MOD_RALT , KEY_BACKSLASH , // º !
199
+ 0xC2 , 0xBB , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_EQUAL , // » x
200
+ 0xC3 , 0x87 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_SEMICOLON , // Ç =
201
+ 0xC3 , 0xA7 , 0x00 , 0x00 , KEY_NONE , KEY_SEMICOLON , // ç =
202
+ 0xE2 , 0x82 , 0xAC , 0x00 , KEY_MOD_RALT , KEY_5 , // € x
203
+ };
204
+
205
+ const uint8_t combinations_br [] PROGMEM = {
206
+ 0x60 , 0x00 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_LEFTBRACE , KEY_NONE , KEY_SPACE , // ` #
207
+ 0xC2 , 0xA8 , 0x00 , 0x00 , KEY_MOD_RALT , KEY_LEFTBRACE , KEY_NONE , KEY_SPACE , // ¨ x
208
+ 0xC2 , 0xB4 , 0x00 , 0x00 , KEY_NONE , KEY_LEFTBRACE , KEY_NONE , KEY_SPACE , // ´ #
209
+ 0xC3 , 0x80 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_LEFTBRACE , KEY_MOD_LSHIFT , KEY_A , // À #
210
+ 0xC3 , 0x81 , 0x00 , 0x00 , KEY_NONE , KEY_LEFTBRACE , KEY_MOD_LSHIFT , KEY_A , // Á #
211
+ 0xC3 , 0x82 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_APOSTROPHE , KEY_MOD_LSHIFT , KEY_A , // Â !
212
+ 0xC3 , 0x83 , 0x00 , 0x00 , KEY_NONE , KEY_APOSTROPHE , KEY_MOD_LSHIFT , KEY_A , // Ã !
213
+ 0xC3 , 0x84 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_6 , KEY_MOD_LSHIFT , KEY_A , // Ä !
214
+ 0xC3 , 0x88 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_LEFTBRACE , KEY_MOD_LSHIFT , KEY_E , // È !
215
+ 0xC3 , 0x89 , 0x00 , 0x00 , KEY_NONE , KEY_LEFTBRACE , KEY_MOD_LSHIFT , KEY_E , // É !
216
+ 0xC3 , 0x8A , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_APOSTROPHE , KEY_MOD_LSHIFT , KEY_E , // Ê !
217
+ 0xC3 , 0x8B , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_6 , KEY_MOD_LSHIFT , KEY_E , // Ë !
218
+ 0xC3 , 0x8C , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_LEFTBRACE , KEY_MOD_LSHIFT , KEY_I , // Ì #
219
+ 0xC3 , 0x8D , 0x00 , 0x00 , KEY_NONE , KEY_LEFTBRACE , KEY_MOD_LSHIFT , KEY_I , // Í #
220
+ 0xC3 , 0x8E , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_APOSTROPHE , KEY_MOD_LSHIFT , KEY_I , // Î !
221
+ 0xC3 , 0x8F , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_6 , KEY_MOD_LSHIFT , KEY_I , // Ï !
222
+ 0xC3 , 0x91 , 0x00 , 0x00 , KEY_NONE , KEY_APOSTROPHE , KEY_MOD_LSHIFT , KEY_N , // Ñ !
223
+ 0xC3 , 0x92 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_LEFTBRACE , KEY_MOD_LSHIFT , KEY_O , // Ò !
224
+ 0xC3 , 0x93 , 0x00 , 0x00 , KEY_NONE , KEY_LEFTBRACE , KEY_MOD_LSHIFT , KEY_O , // Ó !
225
+ 0xC3 , 0x94 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_APOSTROPHE , KEY_MOD_LSHIFT , KEY_O , // Ô !
226
+ 0xC3 , 0x95 , 0x00 , 0x00 , KEY_NONE , KEY_APOSTROPHE , KEY_MOD_LSHIFT , KEY_O , // Õ !
227
+ 0xC3 , 0x96 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_6 , KEY_MOD_LSHIFT , KEY_O , // Ö !
228
+ 0xC3 , 0x99 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_LEFTBRACE , KEY_MOD_LSHIFT , KEY_U , // Ù !
229
+ 0xC3 , 0x9A , 0x00 , 0x00 , KEY_NONE , KEY_LEFTBRACE , KEY_MOD_LSHIFT , KEY_U , // Ú !
230
+ 0xC3 , 0x9B , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_APOSTROPHE , KEY_MOD_LSHIFT , KEY_U , // Û !
231
+ 0xC3 , 0x9C , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_6 , KEY_MOD_LSHIFT , KEY_U , // Ü !
232
+ 0xC3 , 0x9D , 0x00 , 0x00 , KEY_NONE , KEY_LEFTBRACE , KEY_MOD_LSHIFT , KEY_Y , // Ý !
233
+ 0xC3 , 0xA0 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_LEFTBRACE , KEY_NONE , KEY_A , // à #
234
+ 0xC3 , 0xA1 , 0x00 , 0x00 , KEY_NONE , KEY_LEFTBRACE , KEY_NONE , KEY_A , // á #
235
+ 0xC3 , 0xA2 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_APOSTROPHE , KEY_NONE , KEY_A , // â !
236
+ 0xC3 , 0xA3 , 0x00 , 0x00 , KEY_NONE , KEY_APOSTROPHE , KEY_NONE , KEY_A , // ã !
237
+ 0xC3 , 0xA4 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_6 , KEY_NONE , KEY_A , // ä !
238
+ 0xC3 , 0xA8 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_LEFTBRACE , KEY_NONE , KEY_E , // è #
239
+ 0xC3 , 0xA9 , 0x00 , 0x00 , KEY_NONE , KEY_LEFTBRACE , KEY_NONE , KEY_E , // é #
240
+ 0xC3 , 0xAA , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_APOSTROPHE , KEY_NONE , KEY_E , // ê !
241
+ 0xC3 , 0xAB , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_6 , KEY_NONE , KEY_E , // ë !
242
+ 0xC3 , 0xAC , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_LEFTBRACE , KEY_NONE , KEY_I , // ì #
243
+ 0xC3 , 0xAD , 0x00 , 0x00 , KEY_NONE , KEY_LEFTBRACE , KEY_NONE , KEY_I , // í #
244
+ 0xC3 , 0xAE , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_APOSTROPHE , KEY_NONE , KEY_I , // î !
245
+ 0xC3 , 0xAF , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_6 , KEY_NONE , KEY_I , // ï !
246
+ 0xC3 , 0xB1 , 0x00 , 0x00 , KEY_NONE , KEY_APOSTROPHE , KEY_NONE , KEY_N , // ñ !
247
+ 0xC3 , 0xB2 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_LEFTBRACE , KEY_NONE , KEY_O , // ò #
248
+ 0xC3 , 0xB3 , 0x00 , 0x00 , KEY_NONE , KEY_LEFTBRACE , KEY_NONE , KEY_O , // ó #
249
+ 0xC3 , 0xB4 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_APOSTROPHE , KEY_NONE , KEY_O , // ô !
250
+ 0xC3 , 0xB5 , 0x00 , 0x00 , KEY_NONE , KEY_APOSTROPHE , KEY_NONE , KEY_O , // õ !
251
+ 0xC3 , 0xB6 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_6 , KEY_NONE , KEY_O , // ö !
252
+ 0xC3 , 0xB9 , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_LEFTBRACE , KEY_NONE , KEY_U , // ù #
253
+ 0xC3 , 0xBA , 0x00 , 0x00 , KEY_NONE , KEY_LEFTBRACE , KEY_NONE , KEY_U , // ú #
254
+ 0xC3 , 0xBB , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_APOSTROPHE , KEY_NONE , KEY_U , // û !
255
+ 0xC3 , 0xBC , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_6 , KEY_NONE , KEY_U , // ü !
256
+ 0xC3 , 0xBD , 0x00 , 0x00 , KEY_NONE , KEY_LEFTBRACE , KEY_NONE , KEY_Y , // ý #
257
+ 0xC3 , 0xBF , 0x00 , 0x00 , KEY_MOD_LSHIFT , KEY_6 , KEY_NONE , KEY_Y , // ÿ !
258
+ };
259
+
260
+ static hid_locale_t locale_br {
261
+ (uint8_t * )ascii_br , 128 ,
262
+ (uint8_t * )utf8_br , sizeof (utf8_br ) / 6 ,
263
+ (uint8_t * )combinations_br , sizeof (combinations_br ) / 8 ,
264
+ };
0 commit comments