1 // SPDX-License-Identifier: GPL-2.0
2 /* Do not edit this file! It was automatically generated by   */
3 /*    loadkeys --mktable defkeymap.map > defkeymap.c          */
4 
5 #include <linux/types.h>
6 #include <linux/keyboard.h>
7 #include <linux/kd.h>
8 
9 unsigned short plain_map[NR_KEYS] = {
10 	0xf200,	0xf01b,	0xf031,	0xf032,	0xf033,	0xf034,	0xf035,	0xf036,
11 	0xf037,	0xf038,	0xf039,	0xf030,	0xf02d,	0xf03d,	0xf07f,	0xf009,
12 	0xfb71,	0xfb77,	0xfb65,	0xfb72,	0xfb74,	0xfb79,	0xfb75,	0xfb69,
13 	0xfb6f,	0xfb70,	0xf05b,	0xf05d,	0xf201,	0xf702,	0xfb61,	0xfb73,
14 	0xfb64,	0xfb66,	0xfb67,	0xfb68,	0xfb6a,	0xfb6b,	0xfb6c,	0xf03b,
15 	0xf027,	0xf060,	0xf700,	0xf05c,	0xfb7a,	0xfb78,	0xfb63,	0xfb76,
16 	0xfb62,	0xfb6e,	0xfb6d,	0xf02c,	0xf02e,	0xf02f,	0xf700,	0xf30c,
17 	0xf703,	0xf020,	0xf207,	0xf100,	0xf101,	0xf102,	0xf103,	0xf104,
18 	0xf105,	0xf106,	0xf107,	0xf108,	0xf109,	0xf208,	0xf209,	0xf307,
19 	0xf308,	0xf309,	0xf30b,	0xf304,	0xf305,	0xf306,	0xf30a,	0xf301,
20 	0xf302,	0xf303,	0xf300,	0xf310,	0xf206,	0xf200,	0xf03c,	0xf10a,
21 	0xf10b,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
22 	0xf30e,	0xf702,	0xf30d,	0xf01c,	0xf701,	0xf205,	0xf114,	0xf603,
23 	0xf118,	0xf601,	0xf602,	0xf117,	0xf600,	0xf119,	0xf115,	0xf116,
24 	0xf11a,	0xf10c,	0xf10d,	0xf11b,	0xf11c,	0xf110,	0xf311,	0xf11d,
25 	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
26 };
27 
28 static unsigned short shift_map[NR_KEYS] = {
29 	0xf200,	0xf01b,	0xf021,	0xf040,	0xf023,	0xf024,	0xf025,	0xf05e,
30 	0xf026,	0xf02a,	0xf028,	0xf029,	0xf05f,	0xf02b,	0xf07f,	0xf009,
31 	0xfb51,	0xfb57,	0xfb45,	0xfb52,	0xfb54,	0xfb59,	0xfb55,	0xfb49,
32 	0xfb4f,	0xfb50,	0xf07b,	0xf07d,	0xf201,	0xf702,	0xfb41,	0xfb53,
33 	0xfb44,	0xfb46,	0xfb47,	0xfb48,	0xfb4a,	0xfb4b,	0xfb4c,	0xf03a,
34 	0xf022,	0xf07e,	0xf700,	0xf07c,	0xfb5a,	0xfb58,	0xfb43,	0xfb56,
35 	0xfb42,	0xfb4e,	0xfb4d,	0xf03c,	0xf03e,	0xf03f,	0xf700,	0xf30c,
36 	0xf703,	0xf020,	0xf207,	0xf10a,	0xf10b,	0xf10c,	0xf10d,	0xf10e,
37 	0xf10f,	0xf110,	0xf111,	0xf112,	0xf113,	0xf213,	0xf203,	0xf307,
38 	0xf308,	0xf309,	0xf30b,	0xf304,	0xf305,	0xf306,	0xf30a,	0xf301,
39 	0xf302,	0xf303,	0xf300,	0xf310,	0xf206,	0xf200,	0xf03e,	0xf10a,
40 	0xf10b,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
41 	0xf30e,	0xf702,	0xf30d,	0xf200,	0xf701,	0xf205,	0xf114,	0xf603,
42 	0xf20b,	0xf601,	0xf602,	0xf117,	0xf600,	0xf20a,	0xf115,	0xf116,
43 	0xf11a,	0xf10c,	0xf10d,	0xf11b,	0xf11c,	0xf110,	0xf311,	0xf11d,
44 	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
45 };
46 
47 static unsigned short altgr_map[NR_KEYS] = {
48 	0xf200,	0xf200,	0xf200,	0xf040,	0xf200,	0xf024,	0xf200,	0xf200,
49 	0xf07b,	0xf05b,	0xf05d,	0xf07d,	0xf05c,	0xf200,	0xf200,	0xf200,
50 	0xfb71,	0xfb77,	0xf918,	0xfb72,	0xfb74,	0xfb79,	0xfb75,	0xfb69,
51 	0xfb6f,	0xfb70,	0xf200,	0xf07e,	0xf201,	0xf702,	0xf914,	0xfb73,
52 	0xf917,	0xf919,	0xfb67,	0xfb68,	0xfb6a,	0xfb6b,	0xfb6c,	0xf200,
53 	0xf200,	0xf200,	0xf700,	0xf200,	0xfb7a,	0xfb78,	0xf916,	0xfb76,
54 	0xf915,	0xfb6e,	0xfb6d,	0xf200,	0xf200,	0xf200,	0xf700,	0xf30c,
55 	0xf703,	0xf200,	0xf207,	0xf50c,	0xf50d,	0xf50e,	0xf50f,	0xf510,
56 	0xf511,	0xf512,	0xf513,	0xf514,	0xf515,	0xf208,	0xf202,	0xf911,
57 	0xf912,	0xf913,	0xf30b,	0xf90e,	0xf90f,	0xf910,	0xf30a,	0xf90b,
58 	0xf90c,	0xf90d,	0xf90a,	0xf310,	0xf206,	0xf200,	0xf07c,	0xf516,
59 	0xf517,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
60 	0xf30e,	0xf702,	0xf30d,	0xf200,	0xf701,	0xf205,	0xf114,	0xf603,
61 	0xf118,	0xf601,	0xf602,	0xf117,	0xf600,	0xf119,	0xf115,	0xf116,
62 	0xf11a,	0xf10c,	0xf10d,	0xf11b,	0xf11c,	0xf110,	0xf311,	0xf11d,
63 	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
64 };
65 
66 static unsigned short ctrl_map[NR_KEYS] = {
67 	0xf200,	0xf200,	0xf200,	0xf000,	0xf01b,	0xf01c,	0xf01d,	0xf01e,
68 	0xf01f,	0xf07f,	0xf200,	0xf200,	0xf01f,	0xf200,	0xf008,	0xf200,
69 	0xf011,	0xf017,	0xf005,	0xf012,	0xf014,	0xf019,	0xf015,	0xf009,
70 	0xf00f,	0xf010,	0xf01b,	0xf01d,	0xf201,	0xf702,	0xf001,	0xf013,
71 	0xf004,	0xf006,	0xf007,	0xf008,	0xf00a,	0xf00b,	0xf00c,	0xf200,
72 	0xf007,	0xf000,	0xf700,	0xf01c,	0xf01a,	0xf018,	0xf003,	0xf016,
73 	0xf002,	0xf00e,	0xf00d,	0xf200,	0xf20e,	0xf07f,	0xf700,	0xf30c,
74 	0xf703,	0xf000,	0xf207,	0xf100,	0xf101,	0xf102,	0xf103,	0xf104,
75 	0xf105,	0xf106,	0xf107,	0xf108,	0xf109,	0xf208,	0xf204,	0xf307,
76 	0xf308,	0xf309,	0xf30b,	0xf304,	0xf305,	0xf306,	0xf30a,	0xf301,
77 	0xf302,	0xf303,	0xf300,	0xf310,	0xf206,	0xf200,	0xf200,	0xf10a,
78 	0xf10b,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
79 	0xf30e,	0xf702,	0xf30d,	0xf01c,	0xf701,	0xf205,	0xf114,	0xf603,
80 	0xf118,	0xf601,	0xf602,	0xf117,	0xf600,	0xf119,	0xf115,	0xf116,
81 	0xf11a,	0xf10c,	0xf10d,	0xf11b,	0xf11c,	0xf110,	0xf311,	0xf11d,
82 	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
83 };
84 
85 static unsigned short shift_ctrl_map[NR_KEYS] = {
86 	0xf200,	0xf200,	0xf200,	0xf000,	0xf200,	0xf200,	0xf200,	0xf200,
87 	0xf200,	0xf200,	0xf200,	0xf200,	0xf01f,	0xf200,	0xf200,	0xf200,
88 	0xf011,	0xf017,	0xf005,	0xf012,	0xf014,	0xf019,	0xf015,	0xf009,
89 	0xf00f,	0xf010,	0xf200,	0xf200,	0xf201,	0xf702,	0xf001,	0xf013,
90 	0xf004,	0xf006,	0xf007,	0xf008,	0xf00a,	0xf00b,	0xf00c,	0xf200,
91 	0xf200,	0xf200,	0xf700,	0xf200,	0xf01a,	0xf018,	0xf003,	0xf016,
92 	0xf002,	0xf00e,	0xf00d,	0xf200,	0xf200,	0xf200,	0xf700,	0xf30c,
93 	0xf703,	0xf200,	0xf207,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
94 	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf208,	0xf200,	0xf307,
95 	0xf308,	0xf309,	0xf30b,	0xf304,	0xf305,	0xf306,	0xf30a,	0xf301,
96 	0xf302,	0xf303,	0xf300,	0xf310,	0xf206,	0xf200,	0xf200,	0xf200,
97 	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
98 	0xf30e,	0xf702,	0xf30d,	0xf200,	0xf701,	0xf205,	0xf114,	0xf603,
99 	0xf118,	0xf601,	0xf602,	0xf117,	0xf600,	0xf119,	0xf115,	0xf116,
100 	0xf11a,	0xf10c,	0xf10d,	0xf11b,	0xf11c,	0xf110,	0xf311,	0xf11d,
101 	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
102 };
103 
104 static unsigned short alt_map[NR_KEYS] = {
105 	0xf200,	0xf81b,	0xf831,	0xf832,	0xf833,	0xf834,	0xf835,	0xf836,
106 	0xf837,	0xf838,	0xf839,	0xf830,	0xf82d,	0xf83d,	0xf87f,	0xf809,
107 	0xf871,	0xf877,	0xf865,	0xf872,	0xf874,	0xf879,	0xf875,	0xf869,
108 	0xf86f,	0xf870,	0xf85b,	0xf85d,	0xf80d,	0xf702,	0xf861,	0xf873,
109 	0xf864,	0xf866,	0xf867,	0xf868,	0xf86a,	0xf86b,	0xf86c,	0xf83b,
110 	0xf827,	0xf860,	0xf700,	0xf85c,	0xf87a,	0xf878,	0xf863,	0xf876,
111 	0xf862,	0xf86e,	0xf86d,	0xf82c,	0xf82e,	0xf82f,	0xf700,	0xf30c,
112 	0xf703,	0xf820,	0xf207,	0xf500,	0xf501,	0xf502,	0xf503,	0xf504,
113 	0xf505,	0xf506,	0xf507,	0xf508,	0xf509,	0xf208,	0xf209,	0xf907,
114 	0xf908,	0xf909,	0xf30b,	0xf904,	0xf905,	0xf906,	0xf30a,	0xf901,
115 	0xf902,	0xf903,	0xf900,	0xf310,	0xf206,	0xf200,	0xf83c,	0xf50a,
116 	0xf50b,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
117 	0xf30e,	0xf702,	0xf30d,	0xf01c,	0xf701,	0xf205,	0xf114,	0xf603,
118 	0xf118,	0xf210,	0xf211,	0xf117,	0xf600,	0xf119,	0xf115,	0xf116,
119 	0xf11a,	0xf10c,	0xf10d,	0xf11b,	0xf11c,	0xf110,	0xf311,	0xf11d,
120 	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
121 };
122 
123 static unsigned short ctrl_alt_map[NR_KEYS] = {
124 	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
125 	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
126 	0xf811,	0xf817,	0xf805,	0xf812,	0xf814,	0xf819,	0xf815,	0xf809,
127 	0xf80f,	0xf810,	0xf200,	0xf200,	0xf201,	0xf702,	0xf801,	0xf813,
128 	0xf804,	0xf806,	0xf807,	0xf808,	0xf80a,	0xf80b,	0xf80c,	0xf200,
129 	0xf200,	0xf200,	0xf700,	0xf200,	0xf81a,	0xf818,	0xf803,	0xf816,
130 	0xf802,	0xf80e,	0xf80d,	0xf200,	0xf200,	0xf200,	0xf700,	0xf30c,
131 	0xf703,	0xf200,	0xf207,	0xf500,	0xf501,	0xf502,	0xf503,	0xf504,
132 	0xf505,	0xf506,	0xf507,	0xf508,	0xf509,	0xf208,	0xf200,	0xf307,
133 	0xf308,	0xf309,	0xf30b,	0xf304,	0xf305,	0xf306,	0xf30a,	0xf301,
134 	0xf302,	0xf303,	0xf300,	0xf20c,	0xf206,	0xf200,	0xf200,	0xf50a,
135 	0xf50b,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
136 	0xf30e,	0xf702,	0xf30d,	0xf200,	0xf701,	0xf205,	0xf114,	0xf603,
137 	0xf118,	0xf601,	0xf602,	0xf117,	0xf600,	0xf119,	0xf115,	0xf20c,
138 	0xf11a,	0xf10c,	0xf10d,	0xf11b,	0xf11c,	0xf110,	0xf311,	0xf11d,
139 	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,	0xf200,
140 };
141 
142 ushort *key_maps[MAX_NR_KEYMAPS] = {
143 	plain_map, shift_map, altgr_map, NULL,
144 	ctrl_map, shift_ctrl_map, NULL, NULL,
145 	alt_map, NULL, NULL, NULL,
146 	ctrl_alt_map, NULL
147 };
148 
149 unsigned int keymap_count = 7;
150 
151 /*
152  * Philosophy: most people do not define more strings, but they who do
153  * often want quite a lot of string space. So, we statically allocate
154  * the default and allocate dynamically in chunks of 512 bytes.
155  */
156 
157 char func_buf[] = {
158 	'\033', '[', '[', 'A', 0,
159 	'\033', '[', '[', 'B', 0,
160 	'\033', '[', '[', 'C', 0,
161 	'\033', '[', '[', 'D', 0,
162 	'\033', '[', '[', 'E', 0,
163 	'\033', '[', '1', '7', '~', 0,
164 	'\033', '[', '1', '8', '~', 0,
165 	'\033', '[', '1', '9', '~', 0,
166 	'\033', '[', '2', '0', '~', 0,
167 	'\033', '[', '2', '1', '~', 0,
168 	'\033', '[', '2', '3', '~', 0,
169 	'\033', '[', '2', '4', '~', 0,
170 	'\033', '[', '2', '5', '~', 0,
171 	'\033', '[', '2', '6', '~', 0,
172 	'\033', '[', '2', '8', '~', 0,
173 	'\033', '[', '2', '9', '~', 0,
174 	'\033', '[', '3', '1', '~', 0,
175 	'\033', '[', '3', '2', '~', 0,
176 	'\033', '[', '3', '3', '~', 0,
177 	'\033', '[', '3', '4', '~', 0,
178 	'\033', '[', '1', '~', 0,
179 	'\033', '[', '2', '~', 0,
180 	'\033', '[', '3', '~', 0,
181 	'\033', '[', '4', '~', 0,
182 	'\033', '[', '5', '~', 0,
183 	'\033', '[', '6', '~', 0,
184 	'\033', '[', 'M', 0,
185 	'\033', '[', 'P', 0,
186 };
187 
188 char *funcbufptr = func_buf;
189 int funcbufsize = sizeof(func_buf);
190 int funcbufleft = 0;          /* space left */
191 
192 char *func_table[MAX_NR_FUNC] = {
193 	func_buf + 0,
194 	func_buf + 5,
195 	func_buf + 10,
196 	func_buf + 15,
197 	func_buf + 20,
198 	func_buf + 25,
199 	func_buf + 31,
200 	func_buf + 37,
201 	func_buf + 43,
202 	func_buf + 49,
203 	func_buf + 55,
204 	func_buf + 61,
205 	func_buf + 67,
206 	func_buf + 73,
207 	func_buf + 79,
208 	func_buf + 85,
209 	func_buf + 91,
210 	func_buf + 97,
211 	func_buf + 103,
212 	func_buf + 109,
213 	func_buf + 115,
214 	func_buf + 120,
215 	func_buf + 125,
216 	func_buf + 130,
217 	func_buf + 135,
218 	func_buf + 140,
219 	func_buf + 145,
220 	NULL,
221 	NULL,
222 	func_buf + 149,
223 	NULL,
224 };
225 
226 struct kbdiacruc accent_table[MAX_DIACR] = {
227 	{'`', 'A', 0x00c0},	{'`', 'a', 0x00e0},
228 	{'\'', 'A', 0x00c1},	{'\'', 'a', 0x00e1},
229 	{'^', 'A', 0x00c2},	{'^', 'a', 0x00e2},
230 	{'~', 'A', 0x00c3},	{'~', 'a', 0x00e3},
231 	{'"', 'A', 0x00c4},	{'"', 'a', 0x00e4},
232 	{'O', 'A', 0x00c5},	{'o', 'a', 0x00e5},
233 	{'0', 'A', 0x00c5},	{'0', 'a', 0x00e5},
234 	{'A', 'A', 0x00c5},	{'a', 'a', 0x00e5},
235 	{'A', 'E', 0x00c6},	{'a', 'e', 0x00e6},
236 	{',', 'C', 0x00c7},	{',', 'c', 0x00e7},
237 	{'`', 'E', 0x00c8},	{'`', 'e', 0x00e8},
238 	{'\'', 'E', 0x00c9},	{'\'', 'e', 0x00e9},
239 	{'^', 'E', 0x00ca},	{'^', 'e', 0x00ea},
240 	{'"', 'E', 0x00cb},	{'"', 'e', 0x00eb},
241 	{'`', 'I', 0x00cc},	{'`', 'i', 0x00ec},
242 	{'\'', 'I', 0x00cd},	{'\'', 'i', 0x00ed},
243 	{'^', 'I', 0x00ce},	{'^', 'i', 0x00ee},
244 	{'"', 'I', 0x00cf},	{'"', 'i', 0x00ef},
245 	{'-', 'D', 0x00d0},	{'-', 'd', 0x00f0},
246 	{'~', 'N', 0x00d1},	{'~', 'n', 0x00f1},
247 	{'`', 'O', 0x00d2},	{'`', 'o', 0x00f2},
248 	{'\'', 'O', 0x00d3},	{'\'', 'o', 0x00f3},
249 	{'^', 'O', 0x00d4},	{'^', 'o', 0x00f4},
250 	{'~', 'O', 0x00d5},	{'~', 'o', 0x00f5},
251 	{'"', 'O', 0x00d6},	{'"', 'o', 0x00f6},
252 	{'/', 'O', 0x00d8},	{'/', 'o', 0x00f8},
253 	{'`', 'U', 0x00d9},	{'`', 'u', 0x00f9},
254 	{'\'', 'U', 0x00da},	{'\'', 'u', 0x00fa},
255 	{'^', 'U', 0x00db},	{'^', 'u', 0x00fb},
256 	{'"', 'U', 0x00dc},	{'"', 'u', 0x00fc},
257 	{'\'', 'Y', 0x00dd},	{'\'', 'y', 0x00fd},
258 	{'T', 'H', 0x00de},	{'t', 'h', 0x00fe},
259 	{'s', 's', 0x00df},	{'"', 'y', 0x00ff},
260 	{'s', 'z', 0x00df},	{'i', 'j', 0x00ff},
261 };
262 
263 unsigned int accent_table_size = 68;
264