File indexing completed on 2025-05-11 08:23:40
0001
0002
0003
0004 #include <sys/types.h>
0005 #include <rtems/keyboard.h>
0006 #include <rtems/kd.h>
0007
0008 u_short plain_map[NR_KEYS] = {
0009 0xf200, 0xf01b, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036,
0010 0xf037, 0xf038, 0xf039, 0xf030, 0xf02d, 0xf03d, 0xf07f, 0xf009,
0011 0xfb71, 0xfb77, 0xfb65, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 0xfb69,
0012 0xfb6f, 0xfb70, 0xf05b, 0xf05d, 0xf201, 0xf702, 0xfb61, 0xfb73,
0013 0xfb64, 0xfb66, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 0xf03b,
0014 0xf027, 0xf060, 0xf700, 0xf05c, 0xfb7a, 0xfb78, 0xfb63, 0xfb76,
0015 0xfb62, 0xfb6e, 0xfb6d, 0xf02c, 0xf02e, 0xf02f, 0xf700, 0xf30c,
0016 0xf703, 0xf020, 0xf207, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104,
0017 0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf208, 0xf209, 0xf307,
0018 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
0019 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf03c, 0xf10a,
0020 0xf10b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0021 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
0022 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
0023 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0024 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0025 };
0026
0027 u_short shift_map[NR_KEYS] = {
0028 0xf200, 0xf01b, 0xf021, 0xf040, 0xf023, 0xf024, 0xf025, 0xf05e,
0029 0xf026, 0xf02a, 0xf028, 0xf029, 0xf05f, 0xf02b, 0xf07f, 0xf009,
0030 0xfb51, 0xfb57, 0xfb45, 0xfb52, 0xfb54, 0xfb59, 0xfb55, 0xfb49,
0031 0xfb4f, 0xfb50, 0xf07b, 0xf07d, 0xf201, 0xf702, 0xfb41, 0xfb53,
0032 0xfb44, 0xfb46, 0xfb47, 0xfb48, 0xfb4a, 0xfb4b, 0xfb4c, 0xf03a,
0033 0xf022, 0xf07e, 0xf700, 0xf07c, 0xfb5a, 0xfb58, 0xfb43, 0xfb56,
0034 0xfb42, 0xfb4e, 0xfb4d, 0xf03c, 0xf03e, 0xf03f, 0xf700, 0xf30c,
0035 0xf703, 0xf020, 0xf207, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e,
0036 0xf10f, 0xf110, 0xf111, 0xf112, 0xf113, 0xf213, 0xf203, 0xf307,
0037 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
0038 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf03e, 0xf10a,
0039 0xf10b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0040 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
0041 0xf20b, 0xf601, 0xf602, 0xf117, 0xf600, 0xf20a, 0xf115, 0xf116,
0042 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0043 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0044 };
0045
0046 u_short altgr_map[NR_KEYS] = {
0047 0xf200, 0xf200, 0xf200, 0xf040, 0xf200, 0xf024, 0xf200, 0xf200,
0048 0xf07b, 0xf05b, 0xf05d, 0xf07d, 0xf05c, 0xf200, 0xf200, 0xf200,
0049 0xfb71, 0xfb77, 0xf918, 0xfb72, 0xfb74, 0xfb79, 0xfb75, 0xfb69,
0050 0xfb6f, 0xfb70, 0xf200, 0xf07e, 0xf201, 0xf702, 0xf914, 0xfb73,
0051 0xf917, 0xf919, 0xfb67, 0xfb68, 0xfb6a, 0xfb6b, 0xfb6c, 0xf200,
0052 0xf200, 0xf200, 0xf700, 0xf200, 0xfb7a, 0xfb78, 0xf916, 0xfb76,
0053 0xf915, 0xfb6e, 0xfb6d, 0xf200, 0xf200, 0xf200, 0xf700, 0xf30c,
0054 0xf703, 0xf200, 0xf207, 0xf50c, 0xf50d, 0xf50e, 0xf50f, 0xf510,
0055 0xf511, 0xf512, 0xf513, 0xf514, 0xf515, 0xf208, 0xf202, 0xf911,
0056 0xf912, 0xf913, 0xf30b, 0xf90e, 0xf90f, 0xf910, 0xf30a, 0xf90b,
0057 0xf90c, 0xf90d, 0xf90a, 0xf310, 0xf206, 0xf200, 0xf07c, 0xf516,
0058 0xf517, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0059 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
0060 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
0061 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0062 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0063 };
0064
0065 u_short ctrl_map[NR_KEYS] = {
0066 0xf200, 0xf200, 0xf200, 0xf000, 0xf01b, 0xf01c, 0xf01d, 0xf01e,
0067 0xf01f, 0xf07f, 0xf200, 0xf200, 0xf01f, 0xf200, 0xf008, 0xf200,
0068 0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 0xf009,
0069 0xf00f, 0xf010, 0xf01b, 0xf01d, 0xf201, 0xf702, 0xf001, 0xf013,
0070 0xf004, 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 0xf200,
0071 0xf007, 0xf000, 0xf700, 0xf01c, 0xf01a, 0xf018, 0xf003, 0xf016,
0072 0xf002, 0xf00e, 0xf00d, 0xf200, 0xf20e, 0xf07f, 0xf700, 0xf30c,
0073 0xf703, 0xf000, 0xf207, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104,
0074 0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf208, 0xf204, 0xf307,
0075 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
0076 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf200, 0xf10a,
0077 0xf10b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0078 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
0079 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
0080 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0081 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0082 };
0083
0084 u_short shift_ctrl_map[NR_KEYS] = {
0085 0xf200, 0xf200, 0xf200, 0xf000, 0xf200, 0xf200, 0xf200, 0xf200,
0086 0xf200, 0xf200, 0xf200, 0xf200, 0xf01f, 0xf200, 0xf200, 0xf200,
0087 0xf011, 0xf017, 0xf005, 0xf012, 0xf014, 0xf019, 0xf015, 0xf009,
0088 0xf00f, 0xf010, 0xf200, 0xf200, 0xf201, 0xf702, 0xf001, 0xf013,
0089 0xf004, 0xf006, 0xf007, 0xf008, 0xf00a, 0xf00b, 0xf00c, 0xf200,
0090 0xf200, 0xf200, 0xf700, 0xf200, 0xf01a, 0xf018, 0xf003, 0xf016,
0091 0xf002, 0xf00e, 0xf00d, 0xf200, 0xf200, 0xf200, 0xf700, 0xf30c,
0092 0xf703, 0xf200, 0xf207, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0093 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf208, 0xf200, 0xf307,
0094 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
0095 0xf302, 0xf303, 0xf300, 0xf310, 0xf206, 0xf200, 0xf200, 0xf200,
0096 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0097 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
0098 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
0099 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0100 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0101 };
0102
0103 u_short alt_map[NR_KEYS] = {
0104 0xf200, 0xf81b, 0xf831, 0xf832, 0xf833, 0xf834, 0xf835, 0xf836,
0105 0xf837, 0xf838, 0xf839, 0xf830, 0xf82d, 0xf83d, 0xf87f, 0xf809,
0106 0xf871, 0xf877, 0xf865, 0xf872, 0xf874, 0xf879, 0xf875, 0xf869,
0107 0xf86f, 0xf870, 0xf85b, 0xf85d, 0xf80d, 0xf702, 0xf861, 0xf873,
0108 0xf864, 0xf866, 0xf867, 0xf868, 0xf86a, 0xf86b, 0xf86c, 0xf83b,
0109 0xf827, 0xf860, 0xf700, 0xf85c, 0xf87a, 0xf878, 0xf863, 0xf876,
0110 0xf862, 0xf86e, 0xf86d, 0xf82c, 0xf82e, 0xf82f, 0xf700, 0xf30c,
0111 0xf703, 0xf820, 0xf207, 0xf500, 0xf501, 0xf502, 0xf503, 0xf504,
0112 0xf505, 0xf506, 0xf507, 0xf508, 0xf509, 0xf208, 0xf209, 0xf907,
0113 0xf908, 0xf909, 0xf30b, 0xf904, 0xf905, 0xf906, 0xf30a, 0xf901,
0114 0xf902, 0xf903, 0xf900, 0xf310, 0xf206, 0xf200, 0xf83c, 0xf50a,
0115 0xf50b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0116 0xf30e, 0xf702, 0xf30d, 0xf01c, 0xf701, 0xf205, 0xf114, 0xf603,
0117 0xf118, 0xf210, 0xf211, 0xf117, 0xf600, 0xf119, 0xf115, 0xf116,
0118 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0119 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0120 };
0121
0122 u_short ctrl_alt_map[NR_KEYS] = {
0123 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0124 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0125 0xf811, 0xf817, 0xf805, 0xf812, 0xf814, 0xf819, 0xf815, 0xf809,
0126 0xf80f, 0xf810, 0xf200, 0xf200, 0xf201, 0xf702, 0xf801, 0xf813,
0127 0xf804, 0xf806, 0xf807, 0xf808, 0xf80a, 0xf80b, 0xf80c, 0xf200,
0128 0xf200, 0xf200, 0xf700, 0xf200, 0xf81a, 0xf818, 0xf803, 0xf816,
0129 0xf802, 0xf80e, 0xf80d, 0xf200, 0xf200, 0xf200, 0xf700, 0xf30c,
0130 0xf703, 0xf200, 0xf207, 0xf500, 0xf501, 0xf502, 0xf503, 0xf504,
0131 0xf505, 0xf506, 0xf507, 0xf508, 0xf509, 0xf208, 0xf200, 0xf307,
0132 0xf308, 0xf309, 0xf30b, 0xf304, 0xf305, 0xf306, 0xf30a, 0xf301,
0133 0xf302, 0xf303, 0xf300, 0xf20c, 0xf206, 0xf200, 0xf200, 0xf50a,
0134 0xf50b, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0135 0xf30e, 0xf702, 0xf30d, 0xf200, 0xf701, 0xf205, 0xf114, 0xf603,
0136 0xf118, 0xf601, 0xf602, 0xf117, 0xf600, 0xf119, 0xf115, 0xf20c,
0137 0xf11a, 0xf10c, 0xf10d, 0xf11b, 0xf11c, 0xf110, 0xf311, 0xf11d,
0138 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200, 0xf200,
0139 };
0140
0141 ushort *key_maps[MAX_NR_KEYMAPS] = {
0142 plain_map, shift_map, altgr_map, 0,
0143 ctrl_map, shift_ctrl_map, 0, 0,
0144 alt_map, 0, 0, 0,
0145 ctrl_alt_map, 0
0146 };
0147
0148 unsigned int keymap_count = 7;
0149
0150
0151
0152
0153
0154
0155
0156 char func_buf[] = {
0157 '\033', '[', '[', 'A', 0,
0158 '\033', '[', '[', 'B', 0,
0159 '\033', '[', '[', 'C', 0,
0160 '\033', '[', '[', 'D', 0,
0161 '\033', '[', '[', 'E', 0,
0162 '\033', '[', '1', '7', '~', 0,
0163 '\033', '[', '1', '8', '~', 0,
0164 '\033', '[', '1', '9', '~', 0,
0165 '\033', '[', '2', '0', '~', 0,
0166 '\033', '[', '2', '1', '~', 0,
0167 '\033', '[', '2', '3', '~', 0,
0168 '\033', '[', '2', '4', '~', 0,
0169 '\033', '[', '2', '5', '~', 0,
0170 '\033', '[', '2', '6', '~', 0,
0171 '\033', '[', '2', '8', '~', 0,
0172 '\033', '[', '2', '9', '~', 0,
0173 '\033', '[', '3', '1', '~', 0,
0174 '\033', '[', '3', '2', '~', 0,
0175 '\033', '[', '3', '3', '~', 0,
0176 '\033', '[', '3', '4', '~', 0,
0177 '\033', '[', '1', '~', 0,
0178 '\033', '[', '2', '~', 0,
0179 '\033', '[', '3', '~', 0,
0180 '\033', '[', '4', '~', 0,
0181 '\033', '[', '5', '~', 0,
0182 '\033', '[', '6', '~', 0,
0183 '\033', '[', 'M', 0,
0184 '\033', '[', 'P', 0,
0185 };
0186
0187 char *funcbufptr = func_buf;
0188 int funcbufsize = sizeof(func_buf);
0189 int funcbufleft = 0;
0190
0191 char *func_table[MAX_NR_FUNC] = {
0192 func_buf + 0,
0193 func_buf + 5,
0194 func_buf + 10,
0195 func_buf + 15,
0196 func_buf + 20,
0197 func_buf + 25,
0198 func_buf + 31,
0199 func_buf + 37,
0200 func_buf + 43,
0201 func_buf + 49,
0202 func_buf + 55,
0203 func_buf + 61,
0204 func_buf + 67,
0205 func_buf + 73,
0206 func_buf + 79,
0207 func_buf + 85,
0208 func_buf + 91,
0209 func_buf + 97,
0210 func_buf + 103,
0211 func_buf + 109,
0212 func_buf + 115,
0213 func_buf + 120,
0214 func_buf + 125,
0215 func_buf + 130,
0216 func_buf + 135,
0217 func_buf + 140,
0218 func_buf + 145,
0219 0,
0220 0,
0221 func_buf + 149,
0222 0,
0223 };
0224
0225 struct kbdiacr accent_table[MAX_DIACR] = {
0226 {'`', 'A', '\300'}, {'`', 'a', '\340'},
0227 {'\'', 'A', '\301'}, {'\'', 'a', '\341'},
0228 {'^', 'A', '\302'}, {'^', 'a', '\342'},
0229 {'~', 'A', '\303'}, {'~', 'a', '\343'},
0230 {'"', 'A', '\304'}, {'"', 'a', '\344'},
0231 {'O', 'A', '\305'}, {'o', 'a', '\345'},
0232 {'0', 'A', '\305'}, {'0', 'a', '\345'},
0233 {'A', 'A', '\305'}, {'a', 'a', '\345'},
0234 {'A', 'E', '\306'}, {'a', 'e', '\346'},
0235 {',', 'C', '\307'}, {',', 'c', '\347'},
0236 {'`', 'E', '\310'}, {'`', 'e', '\350'},
0237 {'\'', 'E', '\311'}, {'\'', 'e', '\351'},
0238 {'^', 'E', '\312'}, {'^', 'e', '\352'},
0239 {'"', 'E', '\313'}, {'"', 'e', '\353'},
0240 {'`', 'I', '\314'}, {'`', 'i', '\354'},
0241 {'\'', 'I', '\315'}, {'\'', 'i', '\355'},
0242 {'^', 'I', '\316'}, {'^', 'i', '\356'},
0243 {'"', 'I', '\317'}, {'"', 'i', '\357'},
0244 {'-', 'D', '\320'}, {'-', 'd', '\360'},
0245 {'~', 'N', '\321'}, {'~', 'n', '\361'},
0246 {'`', 'O', '\322'}, {'`', 'o', '\362'},
0247 {'\'', 'O', '\323'}, {'\'', 'o', '\363'},
0248 {'^', 'O', '\324'}, {'^', 'o', '\364'},
0249 {'~', 'O', '\325'}, {'~', 'o', '\365'},
0250 {'"', 'O', '\326'}, {'"', 'o', '\366'},
0251 {'/', 'O', '\330'}, {'/', 'o', '\370'},
0252 {'`', 'U', '\331'}, {'`', 'u', '\371'},
0253 {'\'', 'U', '\332'}, {'\'', 'u', '\372'},
0254 {'^', 'U', '\333'}, {'^', 'u', '\373'},
0255 {'"', 'U', '\334'}, {'"', 'u', '\374'},
0256 {'\'', 'Y', '\335'}, {'\'', 'y', '\375'},
0257 {'T', 'H', '\336'}, {'t', 'h', '\376'},
0258 {'s', 's', '\337'}, {'"', 'y', '\377'},
0259 {'s', 'z', '\337'}, {'i', 'j', '\377'},
0260 };
0261
0262 unsigned int accent_table_size = 68;