1*7c772976Snicm /* $OpenBSD: akbdmap.h,v 1.11 2023/01/23 09:36:39 nicm Exp $ */ 2305d9e87Smiod /* $NetBSD: akbdmap.h,v 1.7 2005/05/05 22:29:41 abs Exp $ */ 3305d9e87Smiod 4305d9e87Smiod /*- 5305d9e87Smiod * Copyright (c) 1997 The NetBSD Foundation, Inc. 6305d9e87Smiod * All rights reserved. 7305d9e87Smiod * 8305d9e87Smiod * This code is derived from software contributed to The NetBSD Foundation 9305d9e87Smiod * by Juergen Hannken-Illjes. 10305d9e87Smiod * 11305d9e87Smiod * Redistribution and use in source and binary forms, with or without 12305d9e87Smiod * modification, are permitted provided that the following conditions 13305d9e87Smiod * are met: 14305d9e87Smiod * 1. Redistributions of source code must retain the above copyright 15305d9e87Smiod * notice, this list of conditions and the following disclaimer. 16305d9e87Smiod * 2. Redistributions in binary form must reproduce the above copyright 17305d9e87Smiod * notice, this list of conditions and the following disclaimer in the 18305d9e87Smiod * documentation and/or other materials provided with the distribution. 19305d9e87Smiod * 20305d9e87Smiod * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 21305d9e87Smiod * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22305d9e87Smiod * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23305d9e87Smiod * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 24305d9e87Smiod * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25305d9e87Smiod * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26305d9e87Smiod * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27305d9e87Smiod * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28305d9e87Smiod * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29305d9e87Smiod * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30305d9e87Smiod * POSSIBILITY OF SUCH DAMAGE. 31305d9e87Smiod */ 32305d9e87Smiod 33263ceb67Sshadchin #ifdef WSDISPLAY_COMPAT_RAWKBD 34263ceb67Sshadchin #include <dev/wscons/wskbdraw.h> 35263ceb67Sshadchin 36263ceb67Sshadchin unsigned char keyboard[128] = { 37263ceb67Sshadchin RAWKEY_a, 38263ceb67Sshadchin RAWKEY_s, 39263ceb67Sshadchin RAWKEY_d, 40263ceb67Sshadchin RAWKEY_f, 41263ceb67Sshadchin RAWKEY_h, 42263ceb67Sshadchin RAWKEY_g, 43263ceb67Sshadchin RAWKEY_z, 44263ceb67Sshadchin RAWKEY_x, 45263ceb67Sshadchin RAWKEY_c, 46263ceb67Sshadchin RAWKEY_v, 47263ceb67Sshadchin RAWKEY_less, 48263ceb67Sshadchin RAWKEY_b, 49263ceb67Sshadchin RAWKEY_q, 50263ceb67Sshadchin RAWKEY_w, 51263ceb67Sshadchin RAWKEY_e, 52263ceb67Sshadchin RAWKEY_r, 53263ceb67Sshadchin RAWKEY_y, 54263ceb67Sshadchin RAWKEY_t, 55263ceb67Sshadchin RAWKEY_1, 56263ceb67Sshadchin RAWKEY_2, 57263ceb67Sshadchin RAWKEY_3, 58263ceb67Sshadchin RAWKEY_4, 59263ceb67Sshadchin RAWKEY_6, 60263ceb67Sshadchin RAWKEY_5, 61263ceb67Sshadchin RAWKEY_equal, 62263ceb67Sshadchin RAWKEY_9, 63263ceb67Sshadchin RAWKEY_7, 64263ceb67Sshadchin RAWKEY_minus, 65263ceb67Sshadchin RAWKEY_8, 66263ceb67Sshadchin RAWKEY_0, 67263ceb67Sshadchin RAWKEY_bracketright, 68263ceb67Sshadchin RAWKEY_o, 69263ceb67Sshadchin RAWKEY_u, 70263ceb67Sshadchin RAWKEY_bracketleft, 71263ceb67Sshadchin RAWKEY_i, 72263ceb67Sshadchin RAWKEY_p, 73263ceb67Sshadchin RAWKEY_Return, 74263ceb67Sshadchin RAWKEY_l, 75263ceb67Sshadchin RAWKEY_j, 76263ceb67Sshadchin RAWKEY_apostrophe, 77263ceb67Sshadchin RAWKEY_k, 78263ceb67Sshadchin RAWKEY_semicolon, 79263ceb67Sshadchin RAWKEY_backslash, 80263ceb67Sshadchin RAWKEY_comma, 81263ceb67Sshadchin RAWKEY_slash, 82263ceb67Sshadchin RAWKEY_n, 83263ceb67Sshadchin RAWKEY_m, 84263ceb67Sshadchin RAWKEY_period, 85263ceb67Sshadchin RAWKEY_Tab, 86263ceb67Sshadchin RAWKEY_space, 87263ceb67Sshadchin RAWKEY_grave, 88ae53add8Smpi RAWKEY_BackSpace, 89263ceb67Sshadchin RAWKEY_KP_Enter, 90263ceb67Sshadchin RAWKEY_Escape, 91263ceb67Sshadchin RAWKEY_Control_L, 92ae53add8Smpi 219, /* Command -> Win */ 93263ceb67Sshadchin RAWKEY_Shift_L, 94263ceb67Sshadchin RAWKEY_Caps_Lock, 95ae53add8Smpi RAWKEY_Alt_L, /* Option -> Alt */ 96263ceb67Sshadchin RAWKEY_Left, 97263ceb67Sshadchin RAWKEY_Right, 98263ceb67Sshadchin RAWKEY_Down, 99263ceb67Sshadchin RAWKEY_Up, 100263ceb67Sshadchin 0, /* Fn */ 101263ceb67Sshadchin 0, 102263ceb67Sshadchin RAWKEY_KP_Delete, 103263ceb67Sshadchin 0, 104263ceb67Sshadchin RAWKEY_KP_Multiply, 105263ceb67Sshadchin 0, 106263ceb67Sshadchin RAWKEY_KP_Add, 107263ceb67Sshadchin 0, 108263ceb67Sshadchin RAWKEY_Num_Lock, 109263ceb67Sshadchin 0, 110263ceb67Sshadchin 0, 111263ceb67Sshadchin 0, 112263ceb67Sshadchin RAWKEY_KP_Divide, 113263ceb67Sshadchin RAWKEY_KP_Enter, 114263ceb67Sshadchin 0, 115263ceb67Sshadchin RAWKEY_KP_Subtract, 116263ceb67Sshadchin 0, 117263ceb67Sshadchin 0, 118263ceb67Sshadchin RAWKEY_KP_Equal, 119263ceb67Sshadchin RAWKEY_KP_Insert, 120263ceb67Sshadchin RAWKEY_KP_End, 121263ceb67Sshadchin RAWKEY_KP_Down, 122263ceb67Sshadchin RAWKEY_KP_Next, 123263ceb67Sshadchin RAWKEY_KP_Left, 124263ceb67Sshadchin RAWKEY_KP_Begin, 125263ceb67Sshadchin RAWKEY_KP_Right, 126263ceb67Sshadchin RAWKEY_KP_Home, 127263ceb67Sshadchin 0, 128263ceb67Sshadchin RAWKEY_KP_Up, 129263ceb67Sshadchin RAWKEY_KP_Prior, 130263ceb67Sshadchin 0, 131263ceb67Sshadchin 0, 132263ceb67Sshadchin RAWKEY_KP_Delete, 133263ceb67Sshadchin RAWKEY_f5, 134263ceb67Sshadchin RAWKEY_f6, 135263ceb67Sshadchin RAWKEY_f7, 136263ceb67Sshadchin RAWKEY_f3, 137263ceb67Sshadchin RAWKEY_f8, 138263ceb67Sshadchin RAWKEY_f9, 139263ceb67Sshadchin 0, 140263ceb67Sshadchin RAWKEY_f11, 141263ceb67Sshadchin 0, 142263ceb67Sshadchin RAWKEY_Print_Screen, 143263ceb67Sshadchin RAWKEY_KP_Enter, 144263ceb67Sshadchin RAWKEY_Hold_Screen, 145263ceb67Sshadchin 0, 146263ceb67Sshadchin RAWKEY_f10, 147263ceb67Sshadchin 0, 148263ceb67Sshadchin RAWKEY_f12, 149263ceb67Sshadchin 0, 150263ceb67Sshadchin RAWKEY_Pause, 151263ceb67Sshadchin RAWKEY_Insert, 152263ceb67Sshadchin RAWKEY_Home, 153263ceb67Sshadchin RAWKEY_Prior, 154263ceb67Sshadchin RAWKEY_Delete, 155263ceb67Sshadchin RAWKEY_f4, 156263ceb67Sshadchin RAWKEY_End, 157263ceb67Sshadchin RAWKEY_f2, 158263ceb67Sshadchin RAWKEY_Next, 159263ceb67Sshadchin RAWKEY_f1, 160263ceb67Sshadchin 0, 161263ceb67Sshadchin 0, 162263ceb67Sshadchin 0, 163263ceb67Sshadchin 0, 164263ceb67Sshadchin 0 165263ceb67Sshadchin }; 166263ceb67Sshadchin #endif /* WSDISPLAY_COMPAT_RAWKBD */ 167263ceb67Sshadchin 168305d9e87Smiod /* XXX This list is incomplete. */ 169305d9e87Smiod 170305d9e87Smiod #define KC(n) KS_KEYCODE(n) 171305d9e87Smiod 172305d9e87Smiod static const keysym_t akbd_keydesc_us[] = { 173305d9e87Smiod /* pos command normal shifted */ 174305d9e87Smiod KC(0), KS_a, 175305d9e87Smiod KC(1), KS_s, 176305d9e87Smiod KC(2), KS_d, 177305d9e87Smiod KC(3), KS_f, 178305d9e87Smiod KC(4), KS_h, 179305d9e87Smiod KC(5), KS_g, 180305d9e87Smiod KC(6), KS_z, 181305d9e87Smiod KC(7), KS_x, 182305d9e87Smiod KC(8), KS_c, 183305d9e87Smiod KC(9), KS_v, 184305d9e87Smiod 185305d9e87Smiod KC(11), KS_b, 186305d9e87Smiod KC(12), KS_q, 187305d9e87Smiod KC(13), KS_w, 188305d9e87Smiod KC(14), KS_e, 189305d9e87Smiod KC(15), KS_r, 190305d9e87Smiod KC(16), KS_y, 191305d9e87Smiod KC(17), KS_t, 192305d9e87Smiod KC(18), KS_1, KS_exclam, 193305d9e87Smiod KC(19), KS_2, KS_at, 194305d9e87Smiod KC(20), KS_3, KS_numbersign, 195305d9e87Smiod KC(21), KS_4, KS_dollar, 196305d9e87Smiod KC(22), KS_6, KS_asciicircum, 197305d9e87Smiod KC(23), KS_5, KS_percent, 198305d9e87Smiod KC(24), KS_equal, KS_plus, 199305d9e87Smiod KC(25), KS_9, KS_parenleft, 200305d9e87Smiod KC(26), KS_7, KS_ampersand, 201305d9e87Smiod KC(27), KS_minus, KS_underscore, 202305d9e87Smiod KC(28), KS_8, KS_asterisk, 203305d9e87Smiod KC(29), KS_0, KS_parenright, 204305d9e87Smiod KC(30), KS_bracketright, KS_braceright, 205305d9e87Smiod KC(31), KS_o, 206305d9e87Smiod KC(32), KS_u, 207305d9e87Smiod KC(33), KS_bracketleft, KS_braceleft, 208305d9e87Smiod KC(34), KS_i, 209305d9e87Smiod KC(35), KS_p, 210305d9e87Smiod KC(36), KS_Return, 211305d9e87Smiod KC(37), KS_l, 212305d9e87Smiod KC(38), KS_j, 213305d9e87Smiod KC(39), KS_apostrophe, KS_quotedbl, 214305d9e87Smiod KC(40), KS_k, 215305d9e87Smiod KC(41), KS_semicolon, KS_colon, 216305d9e87Smiod KC(42), KS_backslash, KS_bar, 217305d9e87Smiod KC(43), KS_comma, KS_less, 218305d9e87Smiod KC(44), KS_slash, KS_question, 219305d9e87Smiod KC(45), KS_n, 220305d9e87Smiod KC(46), KS_m, 221305d9e87Smiod KC(47), KS_period, KS_greater, 222*7c772976Snicm KC(48), KS_Tab, KS_Backtab, 223305d9e87Smiod KC(49), KS_space, 224305d9e87Smiod KC(50), KS_grave, KS_asciitilde, 225ae0c6268Smpi KC(51), KS_Cmd_ResetEmul, KS_Delete, 226305d9e87Smiod KC(52), KS_KP_Enter, 227ae0c6268Smpi KC(53), KS_Cmd_Debugger, KS_Escape, 228ae53add8Smpi KC(54), KS_Cmd1, KS_Control_L, 229ae53add8Smpi KC(55), KS_Cmd2, KS_Alt_L, /* Command */ 230305d9e87Smiod KC(56), KS_Shift_L, 231305d9e87Smiod KC(57), KS_Caps_Lock, 232ae53add8Smpi KC(58), KS_Cmd2, KS_Alt_R, /* Option */ 233305d9e87Smiod KC(59), KS_Left, 234305d9e87Smiod KC(60), KS_Right, 235305d9e87Smiod KC(61), KS_Down, 236305d9e87Smiod KC(62), KS_Up, 237305d9e87Smiod 238305d9e87Smiod KC(65), KS_KP_Decimal, 239305d9e87Smiod KC(67), KS_KP_Multiply, 240305d9e87Smiod KC(69), KS_KP_Add, 241305d9e87Smiod KC(71), KS_Num_Lock, KS_Clear, 242305d9e87Smiod KC(75), KS_KP_Divide, 243305d9e87Smiod KC(76), KS_KP_Enter, 244305d9e87Smiod KC(78), KS_KP_Subtract, 245305d9e87Smiod 246305d9e87Smiod KC(81), KS_KP_Equal, 247305d9e87Smiod KC(82), KS_KP_0, KS_KP_Insert, 248305d9e87Smiod KC(83), KS_KP_1, KS_KP_End, 249305d9e87Smiod KC(84), KS_KP_2, KS_KP_Down, 250305d9e87Smiod KC(85), KS_KP_3, KS_KP_Next, 251305d9e87Smiod KC(86), KS_KP_4, KS_KP_Left, 252305d9e87Smiod KC(87), KS_KP_5, KS_KP_Begin, 253305d9e87Smiod KC(88), KS_KP_6, KS_KP_Right, 254305d9e87Smiod KC(89), KS_KP_7, KS_KP_Home, 255305d9e87Smiod 256305d9e87Smiod KC(91), KS_KP_8, KS_KP_Up, 257305d9e87Smiod KC(92), KS_KP_9, KS_KP_Prior, 258305d9e87Smiod 259305d9e87Smiod KC(95), KS_KP_Decimal, KS_KP_Delete, 260322afd03Smpi KC(96), KS_Cmd_Screen4, KS_f5, 261322afd03Smpi KC(97), KS_Cmd_Screen5, KS_f6, 262322afd03Smpi KC(98), KS_Cmd_Screen6, KS_f7, 263322afd03Smpi KC(99), KS_Cmd_Screen2, KS_f3, 264322afd03Smpi KC(100), KS_Cmd_Screen7, KS_f8, 265305d9e87Smiod 266322afd03Smpi KC(101), KS_Cmd_Screen8, KS_f9, 267305d9e87Smiod 268322afd03Smpi KC(103), KS_Cmd_Screen10, KS_f11, 269305d9e87Smiod 270305d9e87Smiod KC(105), KS_f13, KS_Print_Screen, 271305d9e87Smiod KC(106), KS_KP_Enter, 272305d9e87Smiod KC(107), KS_f14, KS_Hold_Screen, 273305d9e87Smiod 274322afd03Smpi KC(109), KS_Cmd_Screen9, KS_f10, 275305d9e87Smiod 276322afd03Smpi KC(111), KS_Cmd_Screen11, KS_f12, 277305d9e87Smiod 278305d9e87Smiod KC(113), KS_f15, KS_Pause, 279305d9e87Smiod KC(114), KS_Insert, 280305d9e87Smiod KC(115), KS_Home, 281322afd03Smpi KC(116), KS_Cmd_ScrollBack, KS_Prior, 282322afd03Smpi KC(117), KS_Cmd_ResetEmul, KS_Delete, 283322afd03Smpi KC(118), KS_Cmd_Screen3, KS_f4, 284305d9e87Smiod KC(119), KS_End, 285322afd03Smpi KC(120), KS_Cmd_Screen1, KS_f2, 286322afd03Smpi KC(121), KS_Cmd_ScrollFwd, KS_Next, 287322afd03Smpi KC(122), KS_Cmd_Screen0, KS_f1, 288305d9e87Smiod 289305d9e87Smiod KC(127), KS_Cmd_Debugger, 290305d9e87Smiod }; 291305d9e87Smiod 292305d9e87Smiod static const keysym_t akbd_keydesc_fr[] = { 293305d9e87Smiod /* pos normal shifted altgr shift-altgr */ 294305d9e87Smiod KC(0), KS_q, 295305d9e87Smiod KC(1), KS_s, KS_S, KS_Ograve, 296305d9e87Smiod KC(4), KS_h, KS_H, KS_Igrave, KS_Icircumflex, 297305d9e87Smiod KC(6), KS_w, KS_W, KS_less, KS_greater, 298305d9e87Smiod KC(8), KS_c, KS_C, KS_copyright, KS_cent, 2999b089153Smpi KC(10), KS_less, KS_greater, 300305d9e87Smiod KC(11), KS_b, KS_B, KS_ssharp, 301305d9e87Smiod KC(12), KS_a, KS_A, KS_ae, KS_AE, 302305d9e87Smiod KC(13), KS_z, KS_Z, KS_Acircumflex, KS_Aring, 303305d9e87Smiod KC(14), KS_e, KS_E, KS_ecircumflex, KS_Ecircumflex, 304305d9e87Smiod KC(15), KS_r, KS_R, KS_registered, KS_comma, 305305d9e87Smiod KC(16), KS_y, KS_Y, KS_Uacute, 306305d9e87Smiod KC(18), KS_ampersand, KS_1, KS_voidSymbol, KS_dead_acute, 307305d9e87Smiod KC(19), KS_eacute, KS_2, KS_ediaeresis, 308305d9e87Smiod KC(20), KS_quotedbl, KS_3, 309305d9e87Smiod KC(21), KS_apostrophe, KS_4, KS_braceleft, KS_bracketleft, 310305d9e87Smiod KC(22), KS_section, KS_6, KS_paragraph, KS_aring, 311305d9e87Smiod KC(23), KS_parenleft, KS_5, KS_braceleft, KS_bracketleft, 312305d9e87Smiod KC(24), KS_minus, KS_underscore, KS_braceright, 313305d9e87Smiod KC(25), KS_ccedilla, KS_9, KS_Ccedilla, KS_Aacute, 314305d9e87Smiod KC(26), KS_egrave, KS_7, KS_guillemotleft, 315305d9e87Smiod KS_guillemotright, 316305d9e87Smiod KC(27), KS_parenright, KS_degree, KS_braceright, KS_bracketright, 317305d9e87Smiod KC(28), KS_exclam, KS_8, KS_exclamdown, KS_Ucircumflex, 318305d9e87Smiod KC(29), KS_agrave, KS_0, KS_oslash, KS_Ooblique, 319305d9e87Smiod KC(30), KS_dollar, KS_asterisk, KS_cent, KS_yen, 320305d9e87Smiod KC(33), KS_dead_circumflex, KS_dead_diaeresis, 321305d9e87Smiod KS_ocircumflex, KS_Ocircumflex, 322305d9e87Smiod KC(34), KS_i, KS_I, KS_icircumflex, KS_idiaeresis, 323305d9e87Smiod KC(37), KS_l, KS_L, KS_notsign, KS_bar, 324305d9e87Smiod KC(38), KS_j, KS_J, KS_Idiaeresis, KS_Iacute, 325305d9e87Smiod KC(39), KS_ugrave, KS_percent, KS_Ugrave, 326305d9e87Smiod KC(40), KS_k, KS_K, KS_Egrave, KS_Ediaeresis, 327305d9e87Smiod KC(41), KS_m, KS_M, KS_mu, KS_Oacute, 328305d9e87Smiod KC(42), KS_dead_grave, KS_sterling, KS_at, KS_numbersign, 329305d9e87Smiod KC(43), KS_semicolon, KS_period, 330305d9e87Smiod KC(44), KS_equal, KS_plus, KS_voidSymbol, KS_plusminus, 331305d9e87Smiod KC(45), KS_n, KS_N, KS_dead_tilde, 332305d9e87Smiod KC(46), KS_comma, KS_question, KS_voidSymbol, KS_questiondown, 333305d9e87Smiod KC(47), KS_colon, KS_slash, KS_division, KS_backslash, 3349b089153Smpi KC(50), KS_at, KS_numbersign, 335305d9e87Smiod KC(58), KS_Mode_switch, KS_Multi_key, /* Option */ 336305d9e87Smiod }; 337305d9e87Smiod 338305d9e87Smiod static const keysym_t akbd_keydesc_fr_nodead[] = { 339305d9e87Smiod KC(18), KS_ampersand, KS_1, KS_voidSymbol, KS_acute, 340305d9e87Smiod KC(33), KS_asciicircum, KS_diaeresis, KS_ocircumflex, KS_Ocircumflex, 341305d9e87Smiod KC(42), KS_grave, KS_sterling, KS_at, KS_numbersign, 342305d9e87Smiod KC(45), KS_n, KS_N, KS_asciitilde, 343305d9e87Smiod }; 344305d9e87Smiod 345305d9e87Smiod static const keysym_t akbd_keydesc_jp[] = { 346305d9e87Smiod /* pos command normal shifted */ 347305d9e87Smiod KC(19), KS_2, KS_quotedbl, 348305d9e87Smiod KC(22), KS_6, KS_ampersand, 349305d9e87Smiod KC(24), KS_asciicircum, KS_asciitilde, 350305d9e87Smiod KC(25), KS_9, KS_parenright, 351305d9e87Smiod KC(26), KS_7, KS_apostrophe, 352305d9e87Smiod KC(27), KS_minus, KS_equal, 353305d9e87Smiod KC(28), KS_8, KS_parenleft, 354305d9e87Smiod KC(29), KS_0, 355305d9e87Smiod KC(30), KS_bracketleft, KS_braceleft, 356305d9e87Smiod KC(33), KS_at, KS_grave, 357305d9e87Smiod KC(39), KS_colon, KS_asterisk, 358305d9e87Smiod 359305d9e87Smiod KC(41), KS_semicolon, KS_plus, 360305d9e87Smiod KC(42), KS_bracketright,KS_braceright, 361305d9e87Smiod KC(93), KS_backslash, KS_bar, 362305d9e87Smiod KC(94), KS_underscore, 363305d9e87Smiod }; 364305d9e87Smiod 365305d9e87Smiod static const keysym_t akbd_keydesc_uk[] = { 366305d9e87Smiod /* pos normal shifted altgr shift-altgr */ 367305d9e87Smiod KC(20), KS_3, KS_sterling, KS_numbersign, 3689b089153Smpi KC(50), KS_section, KS_plusminus, 369305d9e87Smiod KC(58), KS_Mode_switch, KS_Multi_key, /* Option */ 370305d9e87Smiod }; 371305d9e87Smiod 372305d9e87Smiod static const keysym_t akbd_keydesc_sv[] = { 373305d9e87Smiod /* pos normal shifted altgr shift-altgr */ 3749b089153Smpi KC(10), KS_less, KS_greater, KS_bar, 375305d9e87Smiod KC(19), KS_2, KS_quotedbl, KS_at, 376305d9e87Smiod KC(21), KS_4, KS_dollar, 377305d9e87Smiod KC(22), KS_6, KS_ampersand, 378305d9e87Smiod KC(24), KS_dead_acute, KS_dead_grave, 379305d9e87Smiod KC(25), KS_9, KS_parenright, KS_bracketright, 380305d9e87Smiod KC(26), KS_7, KS_slash, KS_braceleft, 381305d9e87Smiod KC(27), KS_plus, KS_question, KS_backslash, 382305d9e87Smiod KC(28), KS_8, KS_parenleft, KS_bracketleft, 383305d9e87Smiod KC(29), KS_0, KS_equal, KS_braceright, 384305d9e87Smiod KC(30), KS_dead_diaeresis,KS_dead_circumflex,KS_dead_tilde, 385305d9e87Smiod KC(33), KS_aring, 386305d9e87Smiod KC(39), KS_adiaeresis, 387305d9e87Smiod KC(41), KS_odiaeresis, 388305d9e87Smiod KC(42), KS_apostrophe, KS_asterisk, 389305d9e87Smiod KC(43), KS_comma, KS_semicolon, 390305d9e87Smiod KC(44), KS_minus, KS_underscore, 391305d9e87Smiod KC(47), KS_period, KS_colon, 3929b089153Smpi KC(50), KS_section, KS_degree, 393ae53add8Smpi KC(58), KS_Mode_switch, KS_Multi_key, /* Option */ 394305d9e87Smiod }; 395305d9e87Smiod 396305d9e87Smiod static const keysym_t akbd_keydesc_sv_nodead[] = { 397305d9e87Smiod /* pos normal shifted altgr shift-altgr */ 398305d9e87Smiod KC(24), KS_apostrophe, KS_grave, 399305d9e87Smiod KC(30), KS_diaeresis, KS_asciicircum, KS_asciitilde, 400305d9e87Smiod }; 401305d9e87Smiod 402305d9e87Smiod static const keysym_t akbd_keydesc_de[] = { 403305d9e87Smiod /* pos normal shifted altgr shift-altgr */ 404305d9e87Smiod KC(0), KS_a, KS_A, KS_aring, KS_Aring, 405305d9e87Smiod KC(1), KS_s, KS_S, KS_voidSymbol, KS_Iacute, 406305d9e87Smiod KC(3), KS_f, KS_F, KS_voidSymbol, KS_Idiaeresis, 407305d9e87Smiod KC(4), KS_h, KS_H, KS_ordfeminine, KS_Oacute, 408305d9e87Smiod KC(5), KS_g, KS_G, KS_copyright, KS_Igrave, 409305d9e87Smiod KC(6), KS_y, KS_Y, KS_yen, 410305d9e87Smiod KC(7), KS_x, KS_X, KS_voidSymbol, KS_Ugrave, 411305d9e87Smiod KC(8), KS_c, KS_C, KS_ccedilla, KS_Ccedilla, 4129b089153Smpi KC(10), KS_less, KS_greater, 413305d9e87Smiod KC(12), KS_q, KS_Q, KS_guillemotleft,KS_guillemotright, 414305d9e87Smiod KC(15), KS_r, KS_R, KS_registered, KS_cedilla, 415305d9e87Smiod KC(16), KS_z, KS_Z, 416305d9e87Smiod KC(18), KS_1, KS_exclam, KS_exclamdown, KS_notsign, 417305d9e87Smiod KC(19), KS_2, KS_quotedbl, 418305d9e87Smiod KC(20), KS_3, KS_section, KS_paragraph, KS_numbersign, 419305d9e87Smiod KC(21), KS_4, KS_dollar, KS_cent, KS_sterling, 420305d9e87Smiod KC(22), KS_6, KS_ampersand, KS_bracketright,KS_dead_circumflex, 421305d9e87Smiod KC(23), KS_5, KS_percent, KS_bracketleft, 422305d9e87Smiod KC(24), KS_dead_acute, KS_dead_grave, KS_apostrophe, 423305d9e87Smiod KC(25), KS_9, KS_parenright, KS_braceright, KS_periodcentered, 424305d9e87Smiod KC(26), KS_7, KS_slash, KS_bar, KS_backslash, 425305d9e87Smiod KC(27), KS_ssharp, KS_question, KS_questiondown, 426305d9e87Smiod KC(28), KS_8, KS_parenleft, KS_braceleft, 427305d9e87Smiod KC(29), KS_0, KS_equal, KS_voidSymbol, KS_macron, 428305d9e87Smiod KC(30), KS_plus, KS_asterisk, KS_plusminus, 429305d9e87Smiod KC(31), KS_o, KS_O, KS_oslash, KS_Ooblique, 430305d9e87Smiod KC(32), KS_u, KS_U, KS_dead_diaeresis,KS_Aacute, 431305d9e87Smiod KC(33), KS_udiaeresis, KS_Udiaeresis, KS_voidSymbol, KS_degree, 432305d9e87Smiod KC(34), KS_i, KS_I, KS_voidSymbol, KS_Ucircumflex, 433305d9e87Smiod KC(37), KS_l, KS_L, KS_at, 434305d9e87Smiod KC(38), KS_j, KS_J, KS_masculine, 435305d9e87Smiod KC(39), KS_adiaeresis, KS_Adiaeresis, KS_ae, KS_AE, 436305d9e87Smiod KC(41), KS_odiaeresis, KS_Odiaeresis, 437305d9e87Smiod KC(42), KS_numbersign, KS_apostrophe, 438305d9e87Smiod KC(43), KS_comma, KS_semicolon, 439305d9e87Smiod KC(44), KS_minus, KS_underscore, 440305d9e87Smiod KC(45), KS_n, KS_N, KS_dead_tilde, 441305d9e87Smiod KC(46), KS_m, KS_M, KS_mu, 442305d9e87Smiod KC(47), KS_period, KS_colon, 4439b089153Smpi KC(50), KS_dead_circumflex,KS_degree, 444ae53add8Smpi KC(58), KS_Mode_switch, KS_Multi_key, /* Option */ 445305d9e87Smiod }; 446305d9e87Smiod 447305d9e87Smiod static const keysym_t akbd_keydesc_de_nodead[] = { 448305d9e87Smiod /* pos normal shifted altgr shift-altgr */ 449305d9e87Smiod KC(22), KS_6, KS_ampersand, KS_bracketright,KS_asciicircum, 450305d9e87Smiod KC(24), KS_acute, KS_grave, KS_apostrophe, 451305d9e87Smiod KC(32), KS_u, KS_U, KS_diaeresis, KS_Aacute, 452305d9e87Smiod KC(45), KS_n, KS_N, KS_asciitilde, 4539b089153Smpi KC(50), KS_asciicircum, KS_degree, 454305d9e87Smiod }; 455305d9e87Smiod 456305d9e87Smiod static const keysym_t akbd_keydesc_sf[] = { 457305d9e87Smiod /* pos normal shifted altgr shift-altgr */ 458305d9e87Smiod KC(6), KS_y, 4599b089153Smpi KC(10), KS_less, KS_greater, 460305d9e87Smiod KC(16), KS_z, 461305d9e87Smiod KC(18), KS_plus, KS_1, 462305d9e87Smiod KC(19), KS_quotedbl, KS_2, 463305d9e87Smiod KC(20), KS_asterisk, KS_3, 464305d9e87Smiod KC(21), KS_ccedilla, KS_4, KS_Ccedilla, 465305d9e87Smiod KC(22), KS_ampersand, KS_6, 466305d9e87Smiod KC(23), KS_percent, KS_5, 467305d9e87Smiod KC(24), KS_dead_circumflex,KS_grave, 468305d9e87Smiod KC(25), KS_parenright, KS_9, 469305d9e87Smiod KC(26), KS_slash, KS_7, 470305d9e87Smiod KC(27), KS_apostrophe, KS_question, 471305d9e87Smiod KC(28), KS_parenleft, KS_8, 472305d9e87Smiod KC(29), KS_equal, KS_0, 473305d9e87Smiod KC(30), KS_dead_diaeresis,KS_exclam, 474305d9e87Smiod KC(33), KS_egrave, KS_udiaeresis, 475305d9e87Smiod KC(39), KS_agrave, KS_adiaeresis, 476305d9e87Smiod KC(41), KS_eacute, KS_odiaeresis, 477305d9e87Smiod KC(42), KS_dollar, KS_sterling, 478305d9e87Smiod KC(43), KS_period, KS_colon, 479305d9e87Smiod KC(46), KS_comma, KS_semicolon, 480305d9e87Smiod KC(47), KS_minus, KS_underscore, 4819b089153Smpi KC(50), KS_paragraph, KS_degree, 482305d9e87Smiod }; 483305d9e87Smiod 484305d9e87Smiod static const keysym_t akbd_keydesc_es[] = { 485305d9e87Smiod /* pos normal shifted altgr shift-altgr */ 4869b089153Smpi KC(10), KS_less, KS_greater, 487305d9e87Smiod KC(18), KS_1, KS_exclam, KS_bar, 488305d9e87Smiod KC(19), KS_2, KS_quotedbl, KS_at, 489305d9e87Smiod KC(20), KS_3, KS_periodcentered, KS_numbersign, 490305d9e87Smiod KC(21), KS_4, KS_dollar, KS_asciitilde, 491305d9e87Smiod KC(22), KS_6, KS_ampersand, KS_notsign, 492305d9e87Smiod KC(23), KS_5, KS_percent, 493305d9e87Smiod KC(24), KS_exclamdown, KS_questiondown, 494305d9e87Smiod KC(25), KS_9, KS_parenright, 495305d9e87Smiod KC(26), KS_7, KS_slash, 496305d9e87Smiod KC(27), KS_apostrophe, KS_question, 497305d9e87Smiod KC(28), KS_8, KS_parenleft, 498305d9e87Smiod KC(29), KS_0, KS_equal, 499305d9e87Smiod KC(30), KS_plus, KS_asterisk, KS_bracketright, 500305d9e87Smiod KC(33), KS_dead_grave, KS_dead_circumflex, KS_bracketleft, 501305d9e87Smiod KC(39), KS_dead_acute, KS_dead_diaeresis, KS_braceleft, 502305d9e87Smiod KC(41), KS_ntilde, 503305d9e87Smiod KC(42), KS_ccedilla, KS_Ccedilla, KS_braceright, 504305d9e87Smiod KC(43), KS_comma, KS_semicolon, 505305d9e87Smiod KC(44), KS_minus, KS_underscore, 506305d9e87Smiod KC(47), KS_period, KS_colon, 5079b089153Smpi KC(50), KS_degree, KS_ordfeminine, KS_backslash, 508305d9e87Smiod KC(58), KS_Mode_switch, KS_Multi_key, /* Option */ 509305d9e87Smiod }; 510305d9e87Smiod 511305d9e87Smiod static const keysym_t akbd_keydesc_pt[] = { 512305d9e87Smiod /* pos normal shifted altgr shift-altgr */ 513305d9e87Smiod KC(7), KS_x, KS_X, KS_guillemotleft, KS_guillemotright, 5149b089153Smpi KC(10), KS_less, KS_greater, 515305d9e87Smiod KC(19), KS_2, KS_quotedbl, KS_at, 516305d9e87Smiod KC(20), KS_3, KS_numbersign, KS_sterling, 517305d9e87Smiod KC(22), KS_6, KS_ampersand, 518305d9e87Smiod KC(24), KS_plus, KS_asterisk, 519305d9e87Smiod KC(25), KS_9, KS_parenright, KS_bracketright, KS_braceright, 520305d9e87Smiod KC(26), KS_7, KS_slash, 521305d9e87Smiod KC(27), KS_apostrophe, KS_question, 522305d9e87Smiod KC(28), KS_8, KS_parenleft, KS_bracketleft, KS_braceleft, 523305d9e87Smiod KC(29), KS_0, KS_equal, 524305d9e87Smiod KC(30), KS_dead_acute, KS_dead_grave, 525305d9e87Smiod KC(33), KS_masculine, KS_ordfeminine, 526305d9e87Smiod KC(39), KS_dead_tilde, KS_dead_circumflex, 527305d9e87Smiod KC(41), KS_ccedilla, KS_Ccedilla, 528305d9e87Smiod KC(43), KS_comma, KS_semicolon, 529305d9e87Smiod KC(44), KS_minus, KS_underscore, 530305d9e87Smiod KC(47), KS_period, KS_colon, 5319b089153Smpi KC(50), KS_section, KS_plusminus, 532305d9e87Smiod KC(58), KS_Mode_switch, KS_Multi_key, /* Option */ 533305d9e87Smiod }; 534305d9e87Smiod 535305d9e87Smiod static const keysym_t akbd_keydesc_us_dvorak[] = { 536305d9e87Smiod /* pos command normal shifted */ 537305d9e87Smiod KC(1), KS_o, 538305d9e87Smiod KC(2), KS_e, 539305d9e87Smiod KC(3), KS_u, 540305d9e87Smiod KC(4), KS_d, 541305d9e87Smiod KC(5), KS_i, 542305d9e87Smiod KC(6), KS_semicolon, KS_colon, 543305d9e87Smiod KC(7), KS_q, 544305d9e87Smiod KC(8), KS_j, 545305d9e87Smiod KC(9), KS_k, 546305d9e87Smiod KC(11), KS_x, 547305d9e87Smiod KC(12), KS_apostrophe, KS_quotedbl, 548305d9e87Smiod KC(13), KS_comma, KS_less, 549305d9e87Smiod KC(14), KS_period, KS_greater, 550305d9e87Smiod KC(15), KS_p, 551305d9e87Smiod KC(16), KS_f, 552305d9e87Smiod KC(17), KS_y, 553305d9e87Smiod KC(24), KS_bracketright, KS_braceright, 554305d9e87Smiod KC(27), KS_bracketleft, KS_braceleft, 555305d9e87Smiod KC(30), KS_equal, KS_plus, 556305d9e87Smiod KC(31), KS_r, 557305d9e87Smiod KC(32), KS_g, 558305d9e87Smiod KC(33), KS_slash, KS_question, 559305d9e87Smiod KC(34), KS_c, 560305d9e87Smiod KC(35), KS_l, 561305d9e87Smiod KC(37), KS_n, 562305d9e87Smiod KC(38), KS_h, 563305d9e87Smiod KC(39), KS_minus, KS_underscore, 564305d9e87Smiod KC(40), KS_t, 565305d9e87Smiod KC(41), KS_s, 566305d9e87Smiod KC(43), KS_w, 567305d9e87Smiod KC(44), KS_z, 568305d9e87Smiod KC(45), KS_b, 569305d9e87Smiod KC(47), KS_v, 570305d9e87Smiod }; 571305d9e87Smiod 572305d9e87Smiod static const keysym_t akbd_keydesc_sg[] = { 573305d9e87Smiod /* pos normal shifted altgr shift-altgr */ 574305d9e87Smiod KC(0), KS_a, KS_A, KS_aring, KS_Aring, 575305d9e87Smiod KC(1), KS_s, KS_S, KS_ssharp, KS_voidSymbol, 576305d9e87Smiod KC(3), KS_f, KS_F, KS_section, KS_voidSymbol, 577305d9e87Smiod KC(4), KS_h, KS_H, KS_ordfeminine, KS_periodcentered, 578305d9e87Smiod KC(5), KS_g, KS_G, KS_at, KS_comma, 579305d9e87Smiod KC(6), KS_y, KS_Y, KS_yen, KS_ydiaeresis, 580305d9e87Smiod KC(7), KS_x, KS_X, KS_voidSymbol, KS_ydiaeresis, 581305d9e87Smiod KC(8), KS_c, KS_C, KS_copyright, 5829b089153Smpi KC(10), KS_less, KS_greater, 583305d9e87Smiod KC(12), KS_q, KS_Q, 584305d9e87Smiod KC(15), KS_r, KS_R, KS_registered, KS_Egrave, 585305d9e87Smiod KC(16), KS_z, KS_Z, KS_voidSymbol, KS_Aacute, 586305d9e87Smiod KC(18), KS_1, KS_plus, KS_plusminus, KS_onesuperior, 587305d9e87Smiod KC(19), KS_2, KS_quotedbl, KS_twosuperior, 588305d9e87Smiod KC(20), KS_3, KS_asterisk, KS_numbersign, KS_threesuperior, 589305d9e87Smiod KC(21), KS_4, KS_ccedilla, KS_Ccedilla, 590305d9e87Smiod KC(22), KS_6, KS_ampersand, KS_bracketright, 591305d9e87Smiod KC(23), KS_5, KS_percent, KS_bracketleft, 592305d9e87Smiod KC(24), KS_dead_circumflex,KS_dead_grave,KS_dead_acute, KS_asciitilde, 593305d9e87Smiod KC(25), KS_9, KS_parenright, KS_braceright, KS_Ocircumflex, 594305d9e87Smiod KC(26), KS_7, KS_slash, KS_bar, KS_backslash, 595305d9e87Smiod KC(27), KS_apostrophe, KS_question, KS_questiondown, 596305d9e87Smiod KC(28), KS_8, KS_parenleft, KS_braceleft, KS_Ograve, 597305d9e87Smiod KC(29), KS_0, KS_equal, KS_voidSymbol, KS_Uacute, 598305d9e87Smiod KC(30), KS_dead_diaeresis,KS_exclam, KS_bracketright, 599305d9e87Smiod KC(31), KS_o, KS_O, KS_oslash, 600305d9e87Smiod KC(32), KS_u, KS_U, KS_degree, KS_Ugrave, 601305d9e87Smiod KC(33), KS_udiaeresis, KS_egrave, KS_bracketleft, 602305d9e87Smiod KC(34), KS_i, KS_I, KS_exclamdown, 603305d9e87Smiod KC(37), KS_l, KS_L, KS_notsign, 604305d9e87Smiod KC(38), KS_j, KS_J, KS_masculine, 605305d9e87Smiod KC(39), KS_adiaeresis, KS_agrave, KS_ae, KS_AE, 606305d9e87Smiod KC(41), KS_odiaeresis, KS_eacute, KS_cent, 607305d9e87Smiod KC(42), KS_dollar, KS_sterling, KS_paragraph, 608305d9e87Smiod KC(43), KS_comma, KS_semicolon, KS_guillemotleft,KS_guillemotright, 609305d9e87Smiod KC(44), KS_minus, KS_underscore, 610305d9e87Smiod KC(45), KS_n, KS_N, KS_dead_tilde, 611305d9e87Smiod KC(46), KS_m, KS_M, KS_mu, 612305d9e87Smiod KC(47), KS_period, KS_colon, KS_voidSymbol, KS_division, 6139b089153Smpi KC(50), KS_section, KS_degree, 614ae53add8Smpi KC(58), KS_Mode_switch, KS_Multi_key, /* Option */ 615305d9e87Smiod }; 616305d9e87Smiod 617305d9e87Smiod static const keysym_t akbd_keydesc_sg_nodead[] = { 618305d9e87Smiod /* pos normal shifted altgr shift-altgr */ 619305d9e87Smiod KC(24), KS_asciicircum, KS_grave, KS_acute, KS_asciitilde, 620305d9e87Smiod KC(30), KS_diaeresis, KS_exclam, KS_bracketright,KS_braceright, 621305d9e87Smiod KC(45), KS_n, KS_N, KS_asciitilde, 622305d9e87Smiod }; 623305d9e87Smiod 624305d9e87Smiod #define KBD_MAP(name, base, map) \ 625305d9e87Smiod { name, base, sizeof(map)/sizeof(keysym_t), map } 626305d9e87Smiod 627ad8171c4Smaja const struct wscons_keydesc akbd_keydesctab[] = { 628305d9e87Smiod KBD_MAP(KB_US, 0, akbd_keydesc_us), 629305d9e87Smiod KBD_MAP(KB_US | KB_DVORAK, KB_US, akbd_keydesc_us_dvorak), 630305d9e87Smiod KBD_MAP(KB_DE, KB_US, akbd_keydesc_de), 631305d9e87Smiod KBD_MAP(KB_DE | KB_NODEAD, KB_DE, akbd_keydesc_de_nodead), 632305d9e87Smiod KBD_MAP(KB_ES, KB_US, akbd_keydesc_es), 633305d9e87Smiod KBD_MAP(KB_FR, KB_US, akbd_keydesc_fr), 634305d9e87Smiod KBD_MAP(KB_FR | KB_NODEAD, KB_FR, akbd_keydesc_fr_nodead), 635305d9e87Smiod KBD_MAP(KB_JP, KB_US, akbd_keydesc_jp), 636305d9e87Smiod KBD_MAP(KB_PT, KB_US, akbd_keydesc_pt), 637305d9e87Smiod KBD_MAP(KB_SF, KB_US, akbd_keydesc_sf), 638305d9e87Smiod KBD_MAP(KB_SG, KB_US, akbd_keydesc_sg), 639305d9e87Smiod KBD_MAP(KB_SG | KB_NODEAD, KB_SG, akbd_keydesc_sg_nodead), 640305d9e87Smiod KBD_MAP(KB_SV, KB_US, akbd_keydesc_sv), 641305d9e87Smiod KBD_MAP(KB_SV | KB_NODEAD, KB_SV, akbd_keydesc_sv_nodead), 642305d9e87Smiod KBD_MAP(KB_UK, KB_US, akbd_keydesc_uk), 643305d9e87Smiod {0, 0, 0, 0} 644305d9e87Smiod }; 645305d9e87Smiod 646305d9e87Smiod #undef KBD_MAP 647305d9e87Smiod #undef KC 648