0001 // SPDX-License-Identifier: GPL-2.0
0002 /* Do not edit this file! It was automatically generated by */
0003 /* loadkeys --mktable --unicode defkeymap.map > defkeymap.c */
0004
0005 #include <linux/types.h>
0006 #include <linux/keyboard.h>
0007 #include <linux/kd.h>
0008
0009 unsigned short plain_map[NR_KEYS] = {
0010 0xf200, 0xf01b, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036,
0011 0xf037, 0xf038, 0xf039, 0xf030, 0xf02d, 0xf03d, 0xf07f, 0xf009,
0012 0xfb71, 0xfb77, 0xfb65, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 0xfb69,
0013 0xfb6f, 0xfb70, 0xf05b, 0xf05d, 0xf201, 0xf702, 0xfb61, 0xfb73,
0014 0xfb64, 0xfb66, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 0xf03b,
0015 0xf027, 0xf060, 0xf700, 0xf05c, 0xfb7a, 0xfb78, 0xfb63, 0xfb76,
0016 0xfb62, 0xfb6e, 0xfb6d, 0xf02c, 0xf02e, 0xf02f, 0xf700, 0xf30c,
0017 0xf703, 0xf020, 0xf207, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104,
0018 0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf208, 0xf209, 0xf307,
0019 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
0020 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf03c, 0xf10a,
0021 0xf10b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0022 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
0023 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
0024 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0025 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0026 };
0027
0028 static unsigned short shift_map[NR_KEYS] = {
0029 0xf200, 0xf01b, 0xf021, 0xf040, 0xf023, 0xf024, 0xf025, 0xf05e,
0030 0xf026, 0xf02a, 0xf028, 0xf029, 0xf05f, 0xf02b, 0xf07f, 0xf009,
0031 0xfb51, 0xfb57, 0xfb45, 0xfb52, 0xfb54, 0xfb59, 0xfb55, 0xfb49,
0032 0xfb4f, 0xfb50, 0xf07b, 0xf07d, 0xf201, 0xf702, 0xfb41, 0xfb53,
0033 0xfb44, 0xfb46, 0xfb47, 0xfb48, 0xfb4a, 0xfb4b, 0xfb4c, 0xf03a,
0034 0xf022, 0xf07e, 0xf700, 0xf07c, 0xfb5a, 0xfb58, 0xfb43, 0xfb56,
0035 0xfb42, 0xfb4e, 0xfb4d, 0xf03c, 0xf03e, 0xf03f, 0xf700, 0xf30c,
0036 0xf703, 0xf020, 0xf207, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e,
0037 0xf10f, 0xf110, 0xf111, 0xf112, 0xf113, 0xf213, 0xf203, 0xf307,
0038 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
0039 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf03e, 0xf10a,
0040 0xf10b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0041 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
0042 0xf20b, 0xf601, 0xf602, 0xf117, 0xf600, 0xf20a, 0xf115, 0xf116,
0043 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0044 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0045 };
0046
0047 static unsigned short altgr_map[NR_KEYS] = {
0048 0xf200, 0xf200, 0xf200, 0xf040, 0xf200, 0xf024, 0xf200, 0xf200,
0049 0xf07b, 0xf05b, 0xf05d, 0xf07d, 0xf05c, 0xf200, 0xf200, 0xf200,
0050 0xfb71, 0xfb77, 0xf918, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 0xfb69,
0051 0xfb6f, 0xfb70, 0xf200, 0xf07e, 0xf201, 0xf702, 0xf914, 0xfb73,
0052 0xf917, 0xf919, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 0xf200,
0053 0xf200, 0xf200, 0xf700, 0xf200, 0xfb7a, 0xfb78, 0xf916, 0xfb76,
0054 0xf915, 0xfb6e, 0xfb6d, 0xf200, 0xf200, 0xf200, 0xf700, 0xf30c,
0055 0xf703, 0xf200, 0xf207, 0xf50c, 0xf50d, 0xf50e, 0xf50f, 0xf510,
0056 0xf511, 0xf512, 0xf513, 0xf514, 0xf515, 0xf208, 0xf202, 0xf911,
0057 0xf912, 0xf913, 0xf30b, 0xf90e, 0xf90f, 0xf910, 0xf30a, 0xf90b,
0058 0xf90c, 0xf90d, 0xf90a, 0xf310, 0xf206, 0xf200, 0xf07c, 0xf516,
0059 0xf517, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0060 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
0061 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
0062 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0063 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0064 };
0065
0066 static unsigned short ctrl_map[NR_KEYS] = {
0067 0xf200, 0xf200, 0xf200, 0xf000, 0xf01b, 0xf01c, 0xf01d, 0xf01e,
0068 0xf01f, 0xf07f, 0xf200, 0xf200, 0xf01f, 0xf200, 0xf008, 0xf200,
0069 0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 0xf009,
0070 0xf00f, 0xf010, 0xf01b, 0xf01d, 0xf201, 0xf702, 0xf001, 0xf013,
0071 0xf004, 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 0xf200,
0072 0xf007, 0xf000, 0xf700, 0xf01c, 0xf01a, 0xf018, 0xf003, 0xf016,
0073 0xf002, 0xf00e, 0xf00d, 0xf200, 0xf20e, 0xf07f, 0xf700, 0xf30c,
0074 0xf703, 0xf000, 0xf207, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104,
0075 0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf208, 0xf204, 0xf307,
0076 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
0077 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf200, 0xf10a,
0078 0xf10b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0079 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
0080 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
0081 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0082 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0083 };
0084
0085 static unsigned short shift_ctrl_map[NR_KEYS] = {
0086 0xf200, 0xf200, 0xf200, 0xf000, 0xf200, 0xf200, 0xf200, 0xf200,
0087 0xf200, 0xf200, 0xf200, 0xf200, 0xf01f, 0xf200, 0xf200, 0xf200,
0088 0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 0xf009,
0089 0xf00f, 0xf010, 0xf200, 0xf200, 0xf201, 0xf702, 0xf001, 0xf013,
0090 0xf004, 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 0xf200,
0091 0xf200, 0xf200, 0xf700, 0xf200, 0xf01a, 0xf018, 0xf003, 0xf016,
0092 0xf002, 0xf00e, 0xf00d, 0xf200, 0xf200, 0xf200, 0xf700, 0xf30c,
0093 0xf703, 0xf200, 0xf207, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0094 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf208, 0xf200, 0xf307,
0095 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
0096 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf200, 0xf200,
0097 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0098 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
0099 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
0100 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0101 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0102 };
0103
0104 static unsigned short alt_map[NR_KEYS] = {
0105 0xf200, 0xf81b, 0xf831, 0xf832, 0xf833, 0xf834, 0xf835, 0xf836,
0106 0xf837, 0xf838, 0xf839, 0xf830, 0xf82d, 0xf83d, 0xf87f, 0xf809,
0107 0xf871, 0xf877, 0xf865, 0xf872, 0xf874, 0xf879, 0xf875, 0xf869,
0108 0xf86f, 0xf870, 0xf85b, 0xf85d, 0xf80d, 0xf702, 0xf861, 0xf873,
0109 0xf864, 0xf866, 0xf867, 0xf868, 0xf86a, 0xf86b, 0xf86c, 0xf83b,
0110 0xf827, 0xf860, 0xf700, 0xf85c, 0xf87a, 0xf878, 0xf863, 0xf876,
0111 0xf862, 0xf86e, 0xf86d, 0xf82c, 0xf82e, 0xf82f, 0xf700, 0xf30c,
0112 0xf703, 0xf820, 0xf207, 0xf500, 0xf501, 0xf502, 0xf503, 0xf504,
0113 0xf505, 0xf506, 0xf507, 0xf508, 0xf509, 0xf208, 0xf209, 0xf907,
0114 0xf908, 0xf909, 0xf30b, 0xf904, 0xf905, 0xf906, 0xf30a, 0xf901,
0115 0xf902, 0xf903, 0xf900, 0xf310, 0xf206, 0xf200, 0xf83c, 0xf50a,
0116 0xf50b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0117 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
0118 0xf118, 0xf210, 0xf211, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
0119 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0120 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0121 };
0122
0123 static unsigned short ctrl_alt_map[NR_KEYS] = {
0124 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0125 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0126 0xf811, 0xf817, 0xf805, 0xf812, 0xf814, 0xf819, 0xf815, 0xf809,
0127 0xf80f, 0xf810, 0xf200, 0xf200, 0xf201, 0xf702, 0xf801, 0xf813,
0128 0xf804, 0xf806, 0xf807, 0xf808, 0xf80a, 0xf80b, 0xf80c, 0xf200,
0129 0xf200, 0xf200, 0xf700, 0xf200, 0xf81a, 0xf818, 0xf803, 0xf816,
0130 0xf802, 0xf80e, 0xf80d, 0xf200, 0xf200, 0xf200, 0xf700, 0xf30c,
0131 0xf703, 0xf200, 0xf207, 0xf500, 0xf501, 0xf502, 0xf503, 0xf504,
0132 0xf505, 0xf506, 0xf507, 0xf508, 0xf509, 0xf208, 0xf200, 0xf307,
0133 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
0134 0xf302, 0xf303, 0xf300, 0xf20c, 0xf206, 0xf200, 0xf200, 0xf50a,
0135 0xf50b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0136 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
0137 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf20c,
0138 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0139 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0140 };
0141
0142 unsigned short *key_maps[MAX_NR_KEYMAPS] = {
0143 plain_map, shift_map, altgr_map, NULL,
0144 ctrl_map, shift_ctrl_map, NULL, NULL,
0145 alt_map, NULL, NULL, NULL,
0146 ctrl_alt_map, NULL
0147 };
0148
0149 unsigned int keymap_count = 7;
0150
0151 /*
0152 * Philosophy: most people do not define more strings, but they who do
0153 * often want quite a lot of string space. So, we statically allocate
0154 * the default and allocate dynamically in chunks of 512 bytes.
0155 */
0156
0157 char func_buf[] = {
0158 '\033', '[', '[', 'A', 0,
0159 '\033', '[', '[', 'B', 0,
0160 '\033', '[', '[', 'C', 0,
0161 '\033', '[', '[', 'D', 0,
0162 '\033', '[', '[', 'E', 0,
0163 '\033', '[', '1', '7', '~', 0,
0164 '\033', '[', '1', '8', '~', 0,
0165 '\033', '[', '1', '9', '~', 0,
0166 '\033', '[', '2', '0', '~', 0,
0167 '\033', '[', '2', '1', '~', 0,
0168 '\033', '[', '2', '3', '~', 0,
0169 '\033', '[', '2', '4', '~', 0,
0170 '\033', '[', '2', '5', '~', 0,
0171 '\033', '[', '2', '6', '~', 0,
0172 '\033', '[', '2', '8', '~', 0,
0173 '\033', '[', '2', '9', '~', 0,
0174 '\033', '[', '3', '1', '~', 0,
0175 '\033', '[', '3', '2', '~', 0,
0176 '\033', '[', '3', '3', '~', 0,
0177 '\033', '[', '3', '4', '~', 0,
0178 '\033', '[', '1', '~', 0,
0179 '\033', '[', '2', '~', 0,
0180 '\033', '[', '3', '~', 0,
0181 '\033', '[', '4', '~', 0,
0182 '\033', '[', '5', '~', 0,
0183 '\033', '[', '6', '~', 0,
0184 '\033', '[', 'M', 0,
0185 '\033', '[', 'P', 0,
0186 };
0187
0188 char *funcbufptr = func_buf;
0189 int funcbufsize = sizeof(func_buf);
0190 int funcbufleft = 0; /* space left */
0191
0192 char *func_table[MAX_NR_FUNC] = {
0193 func_buf + 0,
0194 func_buf + 5,
0195 func_buf + 10,
0196 func_buf + 15,
0197 func_buf + 20,
0198 func_buf + 25,
0199 func_buf + 31,
0200 func_buf + 37,
0201 func_buf + 43,
0202 func_buf + 49,
0203 func_buf + 55,
0204 func_buf + 61,
0205 func_buf + 67,
0206 func_buf + 73,
0207 func_buf + 79,
0208 func_buf + 85,
0209 func_buf + 91,
0210 func_buf + 97,
0211 func_buf + 103,
0212 func_buf + 109,
0213 func_buf + 115,
0214 func_buf + 120,
0215 func_buf + 125,
0216 func_buf + 130,
0217 func_buf + 135,
0218 func_buf + 140,
0219 func_buf + 145,
0220 NULL,
0221 NULL,
0222 func_buf + 149,
0223 NULL,
0224 };
0225
0226 struct kbdiacruc accent_table[MAX_DIACR] = {
0227 {'`', 'A', 0x00c0}, {'`', 'a', 0x00e0},
0228 {'\'', 'A', 0x00c1}, {'\'', 'a', 0x00e1},
0229 {'^', 'A', 0x00c2}, {'^', 'a', 0x00e2},
0230 {'~', 'A', 0x00c3}, {'~', 'a', 0x00e3},
0231 {'"', 'A', 0x00c4}, {'"', 'a', 0x00e4},
0232 {'O', 'A', 0x00c5}, {'o', 'a', 0x00e5},
0233 {'0', 'A', 0x00c5}, {'0', 'a', 0x00e5},
0234 {'A', 'A', 0x00c5}, {'a', 'a', 0x00e5},
0235 {'A', 'E', 0x00c6}, {'a', 'e', 0x00e6},
0236 {',', 'C', 0x00c7}, {',', 'c', 0x00e7},
0237 {'`', 'E', 0x00c8}, {'`', 'e', 0x00e8},
0238 {'\'', 'E', 0x00c9}, {'\'', 'e', 0x00e9},
0239 {'^', 'E', 0x00ca}, {'^', 'e', 0x00ea},
0240 {'"', 'E', 0x00cb}, {'"', 'e', 0x00eb},
0241 {'`', 'I', 0x00cc}, {'`', 'i', 0x00ec},
0242 {'\'', 'I', 0x00cd}, {'\'', 'i', 0x00ed},
0243 {'^', 'I', 0x00ce}, {'^', 'i', 0x00ee},
0244 {'"', 'I', 0x00cf}, {'"', 'i', 0x00ef},
0245 {'-', 'D', 0x00d0}, {'-', 'd', 0x00f0},
0246 {'~', 'N', 0x00d1}, {'~', 'n', 0x00f1},
0247 {'`', 'O', 0x00d2}, {'`', 'o', 0x00f2},
0248 {'\'', 'O', 0x00d3}, {'\'', 'o', 0x00f3},
0249 {'^', 'O', 0x00d4}, {'^', 'o', 0x00f4},
0250 {'~', 'O', 0x00d5}, {'~', 'o', 0x00f5},
0251 {'"', 'O', 0x00d6}, {'"', 'o', 0x00f6},
0252 {'/', 'O', 0x00d8}, {'/', 'o', 0x00f8},
0253 {'`', 'U', 0x00d9}, {'`', 'u', 0x00f9},
0254 {'\'', 'U', 0x00da}, {'\'', 'u', 0x00fa},
0255 {'^', 'U', 0x00db}, {'^', 'u', 0x00fb},
0256 {'"', 'U', 0x00dc}, {'"', 'u', 0x00fc},
0257 {'\'', 'Y', 0x00dd}, {'\'', 'y', 0x00fd},
0258 {'T', 'H', 0x00de}, {'t', 'h', 0x00fe},
0259 {'s', 's', 0x00df}, {'"', 'y', 0x00ff},
0260 {'s', 'z', 0x00df}, {'i', 'j', 0x00ff},
0261 };
0262
0263 unsigned int accent_table_size = 68;