Home | History | Annotate | Line # | Download | only in hil
hilkbdmap.c revision 1.2.4.2
      1  1.2.4.2  bouyer /*	$OpenBSD: hilkbdmap.c,v 1.7 2005/05/07 22:42:30 miod Exp $	*/
      2  1.2.4.2  bouyer /*
      3  1.2.4.2  bouyer  * Copyright (c) 2003, Miodrag Vallat.
      4  1.2.4.2  bouyer  * All rights reserved.
      5  1.2.4.2  bouyer  *
      6  1.2.4.2  bouyer  * Redistribution and use in source and binary forms, with or without
      7  1.2.4.2  bouyer  * modification, are permitted provided that the following conditions
      8  1.2.4.2  bouyer  * are met:
      9  1.2.4.2  bouyer  * 1. Redistributions of source code must retain the above copyright
     10  1.2.4.2  bouyer  *    notice, this list of conditions and the following disclaimer.
     11  1.2.4.2  bouyer  * 2. Redistributions in binary form must reproduce the above copyright
     12  1.2.4.2  bouyer  *    notice, this list of conditions and the following disclaimer in the
     13  1.2.4.2  bouyer  *    documentation and/or other materials provided with the distribution.
     14  1.2.4.2  bouyer  *
     15  1.2.4.2  bouyer  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     16  1.2.4.2  bouyer  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     17  1.2.4.2  bouyer  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     18  1.2.4.2  bouyer  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
     19  1.2.4.2  bouyer  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     20  1.2.4.2  bouyer  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     21  1.2.4.2  bouyer  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     22  1.2.4.2  bouyer  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     23  1.2.4.2  bouyer  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
     24  1.2.4.2  bouyer  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     25  1.2.4.2  bouyer  * POSSIBILITY OF SUCH DAMAGE.
     26  1.2.4.2  bouyer  *
     27  1.2.4.2  bouyer  */
     28  1.2.4.2  bouyer 
     29  1.2.4.2  bouyer #include "opt_wsdisplay_compat.h"
     30  1.2.4.2  bouyer 
     31  1.2.4.2  bouyer #include <sys/types.h>
     32  1.2.4.2  bouyer #include <dev/wscons/wsksymdef.h>
     33  1.2.4.2  bouyer #include <dev/wscons/wsksymvar.h>
     34  1.2.4.2  bouyer #include <dev/hil/hilkbdmap.h>
     35  1.2.4.2  bouyer 
     36  1.2.4.2  bouyer #ifdef WSDISPLAY_COMPAT_RAWKBD
     37  1.2.4.2  bouyer 
     38  1.2.4.2  bouyer /*
     39  1.2.4.2  bouyer  * Translate HIL keycodes to US keyboard XT scancodes, for proper
     40  1.2.4.2  bouyer  * X11-over-wsmux operation.
     41  1.2.4.2  bouyer  *
     42  1.2.4.2  bouyer  * XXX: Needs re-think how we should treat RAWKBD code on NetBSD.
     43  1.2.4.2  bouyer  */
     44  1.2.4.2  bouyer const uint8_t hilkbd_raw[0x80] = {
     45  1.2.4.2  bouyer 	0x9d, 0x00, 0xb8, 0x38, 0x36, 0x2a, 0x1d, 0x6a,
     46  1.2.4.2  bouyer 	0x4b, 0x48, 0x4c, 0x49, 0x4d, 0x47, 0x53, 0x9c,
     47  1.2.4.2  bouyer 	0x4f, 0xb5, 0x50, 0x4e, 0x51, 0x37, 0x52, 0x4a,
     48  1.2.4.2  bouyer 	0x30, 0x2f, 0x2e, 0x2d, 0x2c, 0x00, 0x00, 0x01,
     49  1.2.4.2  bouyer 	0x00, 0x44, 0x00, 0x57, 0x53, 0x43, 0x0f, 0x58,
     50  1.2.4.2  bouyer 	0x23, 0x22, 0x21, 0x20, 0x1f, 0x1e, 0x00, 0x3a,
     51  1.2.4.2  bouyer 	0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x0f,
     52  1.2.4.2  bouyer 	0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x29,
     53  1.2.4.2  bouyer 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     54  1.2.4.2  bouyer 	0x67, 0x3e, 0x3d, 0x3c, 0x3b, 0x00, 0x46, 0x1c,
     55  1.2.4.2  bouyer 	0x45, 0x3f, 0x40, 0x41, 0x42, 0x00, 0x00, 0x00,
     56  1.2.4.2  bouyer 	0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x00, 0x00,
     57  1.2.4.2  bouyer 	0x17, 0x18, 0x19, 0x1a, 0x1b, 0x2b, 0xd2, 0xd3,
     58  1.2.4.2  bouyer 	0x24, 0x25, 0x26, 0x27, 0x28, 0x1c, 0xc7, 0xc9,
     59  1.2.4.2  bouyer 	0x32, 0x33, 0x34, 0x35, 0x00, 0xcf, 0x00, 0xd1,
     60  1.2.4.2  bouyer 	0x31, 0x39, 0x00, 0x00, 0xcb, 0xd0, 0xc8, 0xcd
     61  1.2.4.2  bouyer };
     62  1.2.4.2  bouyer #endif
     63  1.2.4.2  bouyer 
     64  1.2.4.2  bouyer #define KC(n) KS_KEYCODE(n)
     65  1.2.4.2  bouyer 
     66  1.2.4.2  bouyer /*
     67  1.2.4.2  bouyer  * 1f. US ASCII
     68  1.2.4.2  bouyer  *
     69  1.2.4.2  bouyer  * We use the same table for PS/2 and old HIL keyboards, as the only
     70  1.2.4.2  bouyer  * differences are a few keys which are only present in one of both layouts,
     71  1.2.4.2  bouyer  * and the one-function-only keypad in the old HIL flavour (hilkbd.c knows
     72  1.2.4.2  bouyer  * about this and does The Right Thing).
     73  1.2.4.2  bouyer  */
     74  1.2.4.2  bouyer 
     75  1.2.4.2  bouyer static const keysym_t hilkbd_keydesc_us[] = {
     76  1.2.4.2  bouyer /*  pos      command		normal		shifted */
     77  1.2.4.2  bouyer     KC(0),   KS_Cmd1,		KS_Control_R,
     78  1.2.4.2  bouyer     KC(2),   KS_Cmd2,		KS_Mode_switch,	KS_Multi_key,
     79  1.2.4.2  bouyer     KC(3),   KS_Cmd2,		KS_Alt_L,
     80  1.2.4.2  bouyer     KC(4),   KS_Cmd,		KS_Shift_R,
     81  1.2.4.2  bouyer     KC(5),   KS_Cmd,		KS_Shift_L,
     82  1.2.4.2  bouyer     KC(6),   KS_Cmd1,		KS_Control_L,
     83  1.2.4.2  bouyer     KC(7),   KS_Cmd_Debugger,			/* Break/Reset */
     84  1.2.4.2  bouyer     KC(8),			KS_KP_Left,	KS_KP_4,
     85  1.2.4.2  bouyer     KC(9),			KS_KP_Up,	KS_KP_8,
     86  1.2.4.2  bouyer     KC(10),			KS_KP_Begin,	KS_KP_5,
     87  1.2.4.2  bouyer     KC(11),			KS_KP_Prior,	KS_KP_9,
     88  1.2.4.2  bouyer     KC(12),			KS_KP_Right,	KS_KP_6,
     89  1.2.4.2  bouyer     KC(13),			KS_KP_Home,	KS_KP_7,
     90  1.2.4.2  bouyer     KC(14),			KS_KP_Separator,
     91  1.2.4.2  bouyer     KC(15),			KS_KP_Enter,
     92  1.2.4.2  bouyer     KC(16),			KS_KP_End,	KS_KP_1,
     93  1.2.4.2  bouyer     KC(17),			KS_KP_Divide,
     94  1.2.4.2  bouyer     KC(18),			KS_KP_Down,	KS_KP_2,
     95  1.2.4.2  bouyer     KC(19),			KS_KP_Add,
     96  1.2.4.2  bouyer     KC(20),			KS_KP_Next,	KS_KP_3,
     97  1.2.4.2  bouyer     KC(21),			KS_KP_Multiply,
     98  1.2.4.2  bouyer     KC(22),			KS_KP_Insert,	KS_KP_0,
     99  1.2.4.2  bouyer     KC(23),			KS_KP_Subtract,
    100  1.2.4.2  bouyer     KC(24),			KS_b,
    101  1.2.4.2  bouyer     KC(25),			KS_v,		KS_V,		KS_section,
    102  1.2.4.2  bouyer     KC(26),			KS_c,		KS_C,		KS_ccedilla,
    103  1.2.4.2  bouyer     KC(27),			KS_x,		KS_X,
    104  1.2.4.2  bouyer     KC(28),			KS_z,		KS_Z,		KS_paragraph,
    105  1.2.4.2  bouyer     /* 29 Kanji Left */
    106  1.2.4.2  bouyer 
    107  1.2.4.2  bouyer     KC(31), KS_Cmd_Debugger,	KS_Escape,	KS_Delete,
    108  1.2.4.2  bouyer     KC(33), KS_Cmd_Screen9,	KS_f10,		/* also KS_KP_F2 */
    109  1.2.4.2  bouyer     KC(35),			KS_f11,		/* also KS_KP_F3 */
    110  1.2.4.2  bouyer     KC(36),			KS_KP_Delete,	KS_KP_Decimal,
    111  1.2.4.2  bouyer     KC(37), KS_Cmd_Screen8,	KS_f9,		/* also KS_KP_F1 */
    112  1.2.4.2  bouyer     KC(38),			KS_Tab,		/* numeric pad */
    113  1.2.4.2  bouyer     KC(39),			KS_f12,		/* also KS_KP_F4 */
    114  1.2.4.2  bouyer     KC(40),			KS_h,		KS_H,		KS_yen,
    115  1.2.4.2  bouyer     KC(41),			KS_g,		KS_G,		KS_currency,
    116  1.2.4.2  bouyer     KC(42),			KS_f,
    117  1.2.4.2  bouyer     KC(43),			KS_d,		KS_D,		KS_eth,
    118  1.2.4.2  bouyer     KC(44),			KS_s,		KS_S,		KS_ssharp,
    119  1.2.4.2  bouyer     KC(45),			KS_a,		KS_A,		KS_aring,
    120  1.2.4.2  bouyer     /* 46 Mode_Switch ??? */
    121  1.2.4.2  bouyer     KC(47),			KS_Caps_Lock,
    122  1.2.4.2  bouyer     KC(48),			KS_u,		KS_U,		KS_dead_diaeresis,
    123  1.2.4.2  bouyer     KC(49),			KS_y,		KS_Y,		KS_dead_circumflex,
    124  1.2.4.2  bouyer     KC(50),			KS_t,		KS_T,		KS_dead_grave,
    125  1.2.4.2  bouyer     KC(51),			KS_r,		KS_R,		KS_dead_acute,
    126  1.2.4.2  bouyer     KC(52),			KS_e,		KS_E,		KS_ae,
    127  1.2.4.2  bouyer     KC(53),			KS_w,		KS_W,		KS_asciitilde,
    128  1.2.4.2  bouyer     KC(54),			KS_q,		KS_Q,		KS_periodcentered,
    129  1.2.4.2  bouyer     KC(55),			KS_Tab,
    130  1.2.4.2  bouyer     KC(56),			KS_7,		KS_ampersand,	KS_backslash,
    131  1.2.4.2  bouyer     KC(57),			KS_6,		KS_asciicircum,	KS_asciicircum,
    132  1.2.4.2  bouyer     KC(58),			KS_5,		KS_percent,	KS_onehalf,
    133  1.2.4.2  bouyer     KC(59),			KS_4,		KS_dollar,
    134  1.2.4.2  bouyer 				KS_onequarter,	KS_threequarters,
    135  1.2.4.2  bouyer     KC(60),			KS_3,		KS_numbersign,	KS_numbersign,
    136  1.2.4.2  bouyer     KC(61),			KS_2,		KS_at,		KS_at,
    137  1.2.4.2  bouyer     KC(62),			KS_1,		KS_exclam,	KS_exclamdown,
    138  1.2.4.2  bouyer     KC(63),			KS_grave,	KS_asciitilde,
    139  1.2.4.2  bouyer 				KS_guillemotleft,KS_guillemotright,
    140  1.2.4.2  bouyer 
    141  1.2.4.2  bouyer     KC(72),			KS_Print_Screen, /* Menu */
    142  1.2.4.2  bouyer     KC(73),  KS_Cmd_Screen3,	KS_f4,
    143  1.2.4.2  bouyer     KC(74),  KS_Cmd_Screen2,	KS_f3,
    144  1.2.4.2  bouyer     KC(75),  KS_Cmd_Screen1,	KS_f2,
    145  1.2.4.2  bouyer     KC(76),  KS_Cmd_Screen0,	KS_f1,
    146  1.2.4.2  bouyer 
    147  1.2.4.2  bouyer     KC(78),			KS_Hold_Screen,
    148  1.2.4.2  bouyer     KC(79),			KS_Return,	KS_Print_Screen,
    149  1.2.4.2  bouyer     KC(80),			KS_Num_Lock,	/* System/User */
    150  1.2.4.2  bouyer     KC(81),  KS_Cmd_Screen4,	KS_f5,
    151  1.2.4.2  bouyer     KC(82),  KS_Cmd_Screen5,	KS_f6,
    152  1.2.4.2  bouyer     KC(83),  KS_Cmd_Screen6,	KS_f7,
    153  1.2.4.2  bouyer     KC(84),  KS_Cmd_Screen7,	KS_f8,
    154  1.2.4.2  bouyer 
    155  1.2.4.2  bouyer     /* 86 Clear line */
    156  1.2.4.2  bouyer     KC(87),			KS_Clear,
    157  1.2.4.2  bouyer     KC(88),			KS_8,		KS_asterisk,
    158  1.2.4.2  bouyer 				KS_bracketleft,	KS_braceleft,
    159  1.2.4.2  bouyer     KC(89),			KS_9,		KS_parenleft,
    160  1.2.4.2  bouyer 				KS_bracketright,KS_braceright,
    161  1.2.4.2  bouyer     KC(90),			KS_0,		KS_parenright,	KS_questiondown,
    162  1.2.4.2  bouyer     KC(91),			KS_minus,	KS_underscore,	KS_macron,
    163  1.2.4.2  bouyer     KC(92),			KS_equal,	KS_plus,	KS_plusminus,
    164  1.2.4.2  bouyer     KC(93),  KS_Cmd_ResetEmul,	KS_Delete,	/* Backspace */
    165  1.2.4.2  bouyer     /* 94 Insert line */
    166  1.2.4.2  bouyer     /* 95 Delete line */
    167  1.2.4.2  bouyer     KC(96),			KS_i,		KS_I,		KS_dead_tilde,
    168  1.2.4.2  bouyer     KC(97),			KS_o,		KS_O,		KS_oslash,
    169  1.2.4.2  bouyer     KC(98),			KS_p,		KS_P,		KS_thorn,
    170  1.2.4.2  bouyer     KC(99),			KS_bracketleft,	KS_braceleft,	KS_degree,
    171  1.2.4.2  bouyer     KC(100),			KS_bracketright,KS_braceright,
    172  1.2.4.2  bouyer 				KS_bar,		KS_brokenbar,
    173  1.2.4.2  bouyer     KC(101),			KS_backslash,	KS_bar,		KS_mu,
    174  1.2.4.2  bouyer     KC(102),			KS_Insert,
    175  1.2.4.2  bouyer     KC(103),			KS_Delete,
    176  1.2.4.2  bouyer     KC(104),			KS_j,		KS_J,		KS_dollar,
    177  1.2.4.2  bouyer     KC(105),			KS_k,		KS_K,		KS_cent,
    178  1.2.4.2  bouyer     KC(106),			KS_l,		KS_L,		KS_sterling,
    179  1.2.4.2  bouyer     KC(107),			KS_semicolon,	KS_colon,
    180  1.2.4.2  bouyer     KC(108),			KS_apostrophe,	KS_quotedbl,
    181  1.2.4.2  bouyer 				KS_grave,	KS_apostrophe,
    182  1.2.4.2  bouyer     KC(109),			KS_Return,
    183  1.2.4.2  bouyer     KC(110),			KS_Home,
    184  1.2.4.2  bouyer     KC(111),			KS_Prior,
    185  1.2.4.2  bouyer     KC(112),			KS_m,		KS_M,		KS_masculine,
    186  1.2.4.2  bouyer     KC(113),			KS_comma,	KS_less,	KS_less,
    187  1.2.4.2  bouyer     KC(114),			KS_period,	KS_greater,	KS_greater,
    188  1.2.4.2  bouyer     KC(115),			KS_slash,	KS_question,	KS_underscore,
    189  1.2.4.2  bouyer 
    190  1.2.4.2  bouyer     KC(117),			KS_End,		/* Select */
    191  1.2.4.2  bouyer 
    192  1.2.4.2  bouyer     KC(119),			KS_Next,
    193  1.2.4.2  bouyer     KC(120),			KS_n,		KS_N,		KS_ordfeminine,
    194  1.2.4.2  bouyer     KC(121),			KS_space,
    195  1.2.4.2  bouyer 
    196  1.2.4.2  bouyer     /* 123 Kanji Right */
    197  1.2.4.2  bouyer     KC(124),			KS_Left,
    198  1.2.4.2  bouyer     KC(125),			KS_Down,
    199  1.2.4.2  bouyer     KC(126),			KS_Up,
    200  1.2.4.2  bouyer     KC(127),			KS_Right,
    201  1.2.4.2  bouyer };
    202  1.2.4.2  bouyer 
    203  1.2.4.2  bouyer /*
    204  1.2.4.2  bouyer  * 0e. Swedish
    205  1.2.4.2  bouyer  */
    206  1.2.4.2  bouyer 
    207  1.2.4.2  bouyer static const keysym_t hilkbd_keydesc_sv[] = {
    208  1.2.4.2  bouyer     KC(56),	KS_7,		KS_slash,	KS_backslash,
    209  1.2.4.2  bouyer     KC(57),	KS_6,		KS_ampersand,	KS_asciicircum,
    210  1.2.4.2  bouyer     KC(61),	KS_2,		KS_quotedbl,	KS_at,
    211  1.2.4.2  bouyer     KC(63),	KS_less,	KS_greater,
    212  1.2.4.2  bouyer 		KS_guillemotleft,KS_guillemotright,
    213  1.2.4.2  bouyer     KC(88),	KS_8,		KS_parenleft,	KS_bracketleft,	KS_braceleft,
    214  1.2.4.2  bouyer     KC(89),	KS_9,		KS_parenright,	KS_bracketright,KS_braceright,
    215  1.2.4.2  bouyer     KC(90),	KS_0,		KS_equal,	KS_exclamdown,
    216  1.2.4.2  bouyer     KC(91),	KS_plus,	KS_question,	KS_macron,
    217  1.2.4.2  bouyer     KC(92),	KS_eacute,	KS_Eacute,	KS_plusminus,
    218  1.2.4.2  bouyer     KC(97),	KS_aring,	KS_Aring,	KS_degree,
    219  1.2.4.2  bouyer     KC(98),	KS_udiaeresis,	KS_Udiaeresis,	KS_bar,		KS_brokenbar,
    220  1.2.4.2  bouyer     KC(99),	KS_apostrophe,	KS_asterisk,	KS_mu,
    221  1.2.4.2  bouyer     KC(107),	KS_odiaeresis,
    222  1.2.4.2  bouyer     KC(108),	KS_adiaeresis,	KS_Adiaeresis,	KS_grave,	KS_apostrophe,
    223  1.2.4.2  bouyer     KC(113),	KS_comma,	KS_semicolon,	KS_less,
    224  1.2.4.2  bouyer     KC(114),	KS_period,	KS_colon,	KS_greater,
    225  1.2.4.2  bouyer     KC(115),	KS_minus,	KS_underscore,	KS_underscore
    226  1.2.4.2  bouyer };
    227  1.2.4.2  bouyer 
    228  1.2.4.2  bouyer static const keysym_t hilkbd_keydesc_sv_nodead[] = {
    229  1.2.4.2  bouyer     KC(48),	KS_u,		KS_U,		KS_diaeresis,
    230  1.2.4.2  bouyer     KC(49),	KS_y,		KS_Y,		KS_asciicircum,
    231  1.2.4.2  bouyer     KC(50),	KS_t,		KS_T,		KS_grave,
    232  1.2.4.2  bouyer     KC(51),	KS_r,		KS_R,		KS_apostrophe,
    233  1.2.4.2  bouyer     KC(96),	KS_i,		KS_I,		KS_asciitilde,
    234  1.2.4.2  bouyer };
    235  1.2.4.2  bouyer 
    236  1.2.4.2  bouyer static const keysym_t hilkbd_keydesc_sv_ps2[] = {
    237  1.2.4.2  bouyer     KC(24),	KS_b,
    238  1.2.4.2  bouyer     KC(25),	KS_v,
    239  1.2.4.2  bouyer     KC(26),	KS_c,
    240  1.2.4.2  bouyer     KC(27),	KS_x,
    241  1.2.4.2  bouyer     KC(28),	KS_z,
    242  1.2.4.2  bouyer     KC(36),	KS_KP_Separator,KS_KP_Delete,
    243  1.2.4.2  bouyer     KC(40),	KS_h,
    244  1.2.4.2  bouyer     KC(41),	KS_g,
    245  1.2.4.2  bouyer     KC(42),	KS_f,
    246  1.2.4.2  bouyer     KC(43),	KS_d,
    247  1.2.4.2  bouyer     KC(44),	KS_s,
    248  1.2.4.2  bouyer     KC(45),	KS_a,
    249  1.2.4.2  bouyer     KC(48),	KS_u,
    250  1.2.4.2  bouyer     KC(49),	KS_y,
    251  1.2.4.2  bouyer     KC(50),	KS_t,
    252  1.2.4.2  bouyer     KC(51),	KS_r,
    253  1.2.4.2  bouyer     KC(52),	KS_e,
    254  1.2.4.2  bouyer     KC(53),	KS_w,
    255  1.2.4.2  bouyer     KC(54),	KS_q,
    256  1.2.4.2  bouyer     KC(56),	KS_7,		KS_slash,	KS_braceleft,
    257  1.2.4.2  bouyer     KC(57),	KS_6,		KS_ampersand,
    258  1.2.4.2  bouyer     KC(58),	KS_5,		KS_percent,
    259  1.2.4.2  bouyer     KC(59),	KS_4,		KS_currency,	KS_dollar,
    260  1.2.4.2  bouyer     KC(60),	KS_3,		KS_numbersign,	KS_sterling,
    261  1.2.4.2  bouyer     KC(61),	KS_2,		KS_quotedbl,	KS_at,
    262  1.2.4.2  bouyer     KC(62),	KS_1,		KS_exclam,
    263  1.2.4.2  bouyer     KC(63),	KS_section,	KS_onehalf,
    264  1.2.4.2  bouyer     KC(88),	KS_8,		KS_parenleft,	KS_bracketleft,
    265  1.2.4.2  bouyer     KC(89),	KS_9,		KS_parenright,	KS_bracketright,
    266  1.2.4.2  bouyer     KC(90),	KS_0,		KS_equal,	KS_braceright,
    267  1.2.4.2  bouyer     KC(91),	KS_minus,	KS_question,	KS_backslash,
    268  1.2.4.2  bouyer     KC(92),	KS_dead_acute,	KS_dead_grave,
    269  1.2.4.2  bouyer     KC(96),	KS_i,
    270  1.2.4.2  bouyer     KC(97),	KS_o,
    271  1.2.4.2  bouyer     KC(98),	KS_p,
    272  1.2.4.2  bouyer     KC(99),	KS_aring,
    273  1.2.4.2  bouyer     KC(100),	KS_dead_diaeresis,KS_dead_circumflex,KS_dead_tilde,
    274  1.2.4.2  bouyer     KC(104),	KS_j,
    275  1.2.4.2  bouyer     KC(105),	KS_k,
    276  1.2.4.2  bouyer     KC(106),	KS_l,
    277  1.2.4.2  bouyer     KC(107),	KS_odiaeresis,
    278  1.2.4.2  bouyer     KC(108),	KS_adiaeresis,
    279  1.2.4.2  bouyer     KC(112),	KS_m,
    280  1.2.4.2  bouyer     KC(113),	KS_comma,	KS_semicolon,
    281  1.2.4.2  bouyer     KC(114),	KS_period,	KS_colon,
    282  1.2.4.2  bouyer     KC(115),	KS_minus,	KS_underscore,
    283  1.2.4.2  bouyer     KC(116),	KS_apostrophe,	KS_asterisk,
    284  1.2.4.2  bouyer     KC(118),	KS_less,	KS_greater,	KS_bar,
    285  1.2.4.2  bouyer     KC(120),	KS_n
    286  1.2.4.2  bouyer };
    287  1.2.4.2  bouyer 
    288  1.2.4.2  bouyer static const keysym_t hilkbd_keydesc_sv_ps2_nodead[] = {
    289  1.2.4.2  bouyer     KC(92),	KS_apostrophe,	KS_grave,
    290  1.2.4.2  bouyer     KC(100),	KS_diaeresis,	KS_asciicircum,	KS_asciitilde,
    291  1.2.4.2  bouyer };
    292  1.2.4.2  bouyer 
    293  1.2.4.2  bouyer /*
    294  1.2.4.2  bouyer  * 0f. German
    295  1.2.4.2  bouyer  */
    296  1.2.4.2  bouyer 
    297  1.2.4.2  bouyer static const keysym_t hilkbd_keydesc_de[] = {
    298  1.2.4.2  bouyer     KC(28),	KS_y,		KS_Y,		KS_paragraph,
    299  1.2.4.2  bouyer     KC(49),	KS_z,		KS_Z,		KS_dead_circumflex,
    300  1.2.4.2  bouyer     KC(56),	KS_7,		KS_slash,	KS_backslash,
    301  1.2.4.2  bouyer     KC(57),	KS_6,		KS_ampersand,	KS_asciicircum,
    302  1.2.4.2  bouyer     KC(60),	KS_3,		KS_section,	KS_numbersign,
    303  1.2.4.2  bouyer     KC(61),	KS_2,		KS_quotedbl,	KS_at,
    304  1.2.4.2  bouyer     KC(63),	KS_less,	KS_greater,
    305  1.2.4.2  bouyer 		KS_guillemotleft,KS_guillemotright,
    306  1.2.4.2  bouyer     KC(88),	KS_8,		KS_parenleft,
    307  1.2.4.2  bouyer 		KS_bracketleft,	KS_braceleft,
    308  1.2.4.2  bouyer     KC(89),	KS_9,		KS_parenright,
    309  1.2.4.2  bouyer 		KS_bracketright,KS_braceright,
    310  1.2.4.2  bouyer     KC(90),	KS_0,		KS_equal,	KS_exclamdown,
    311  1.2.4.2  bouyer     KC(91),	KS_ssharp,	KS_question,	KS_macron,
    312  1.2.4.2  bouyer     KC(92),	KS_dead_acute,	KS_dead_grave,	KS_plusminus,
    313  1.2.4.2  bouyer     KC(99),	KS_udiaeresis,	KS_Udiaeresis,	KS_dead_abovering,
    314  1.2.4.2  bouyer     KC(100),	KS_plus,	KS_asterisk,	KS_bar,		KS_brokenbar,
    315  1.2.4.2  bouyer     KC(101),	KS_sterling,	KS_dead_circumflex,KS_mu,
    316  1.2.4.2  bouyer     KC(107),	KS_odiaeresis,
    317  1.2.4.2  bouyer     KC(108),	KS_adiaeresis,	KS_Adiaeresis,	KS_grave,	KS_apostrophe,
    318  1.2.4.2  bouyer     KC(113),	KS_comma,	KS_semicolon,	KS_less,
    319  1.2.4.2  bouyer     KC(114),	KS_period,	KS_colon,	KS_greater,
    320  1.2.4.2  bouyer     KC(115),	KS_minus,	KS_underscore,	KS_underscore
    321  1.2.4.2  bouyer };
    322  1.2.4.2  bouyer 
    323  1.2.4.2  bouyer static const keysym_t hilkbd_keydesc_de_nodead[] = {
    324  1.2.4.2  bouyer     KC(48),	KS_u,		KS_U,		KS_diaeresis,
    325  1.2.4.2  bouyer     KC(49),	KS_z,		KS_Z,		KS_asciicircum,
    326  1.2.4.2  bouyer     KC(50),	KS_t,		KS_T,		KS_grave,
    327  1.2.4.2  bouyer     KC(51),	KS_r,		KS_R,		KS_apostrophe,
    328  1.2.4.2  bouyer     KC(92),	KS_apostrophe,	KS_grave,	KS_plusminus,
    329  1.2.4.2  bouyer     KC(99),	KS_udiaeresis,	KS_Udiaeresis,	KS_degree,
    330  1.2.4.2  bouyer     KC(101),	KS_sterling,	KS_asciicircum,	KS_mu,
    331  1.2.4.2  bouyer     KC(96),	KS_i,		KS_I,		KS_asciitilde
    332  1.2.4.2  bouyer };
    333  1.2.4.2  bouyer 
    334  1.2.4.2  bouyer static const keysym_t hilkbd_keydesc_de_ps2[] = {
    335  1.2.4.2  bouyer     KC(24),	KS_b,
    336  1.2.4.2  bouyer     KC(25),	KS_v,
    337  1.2.4.2  bouyer     KC(26),	KS_c,
    338  1.2.4.2  bouyer     KC(27),	KS_x,
    339  1.2.4.2  bouyer     KC(28),	KS_y,
    340  1.2.4.2  bouyer     KC(36),	KS_KP_Separator,KS_KP_Delete,
    341  1.2.4.2  bouyer     KC(40),	KS_h,
    342  1.2.4.2  bouyer     KC(41),	KS_g,
    343  1.2.4.2  bouyer     KC(42),	KS_f,
    344  1.2.4.2  bouyer     KC(43),	KS_d,
    345  1.2.4.2  bouyer     KC(44),	KS_s,
    346  1.2.4.2  bouyer     KC(45),	KS_a,
    347  1.2.4.2  bouyer     KC(48),	KS_u,
    348  1.2.4.2  bouyer     KC(49),	KS_z,		KS_Z,		KS_dead_circumflex,
    349  1.2.4.2  bouyer     KC(50),	KS_t,
    350  1.2.4.2  bouyer     KC(51),	KS_r,
    351  1.2.4.2  bouyer     KC(52),	KS_e,
    352  1.2.4.2  bouyer     KC(53),	KS_w,
    353  1.2.4.2  bouyer     KC(54),	KS_q,		KS_Q,		KS_at,
    354  1.2.4.2  bouyer     KC(56),	KS_7,		KS_slash,	KS_braceleft,
    355  1.2.4.2  bouyer     KC(57),	KS_6,		KS_ampersand,
    356  1.2.4.2  bouyer     KC(58),	KS_5,		KS_percent,
    357  1.2.4.2  bouyer     KC(59),	KS_4,		KS_dollar,
    358  1.2.4.2  bouyer     KC(60),	KS_3,		KS_section,	KS_threesuperior,
    359  1.2.4.2  bouyer     KC(61),	KS_2,		KS_quotedbl,	KS_twosuperior,
    360  1.2.4.2  bouyer     KC(62),	KS_1,		KS_exclam,
    361  1.2.4.2  bouyer     KC(63),	KS_dead_circumflex,	KS_dead_abovering,
    362  1.2.4.2  bouyer     KC(88),	KS_8,		KS_parenleft,	KS_bracketleft,
    363  1.2.4.2  bouyer     KC(89),	KS_9,		KS_parenright,	KS_bracketright,
    364  1.2.4.2  bouyer     KC(90),	KS_0,		KS_equal,	KS_braceright,
    365  1.2.4.2  bouyer     KC(91),	KS_ssharp,	KS_question,	KS_backslash,
    366  1.2.4.2  bouyer     KC(92),	KS_dead_acute,	KS_dead_grave,
    367  1.2.4.2  bouyer     KC(96),	KS_i,
    368  1.2.4.2  bouyer     KC(97),	KS_o,
    369  1.2.4.2  bouyer     KC(98),	KS_p,
    370  1.2.4.2  bouyer     KC(99),	KS_udiaeresis,
    371  1.2.4.2  bouyer     KC(100),	KS_plus,	KS_asterisk,	KS_dead_tilde,
    372  1.2.4.2  bouyer     KC(104),	KS_j,
    373  1.2.4.2  bouyer     KC(105),	KS_k,
    374  1.2.4.2  bouyer     KC(106),	KS_l,
    375  1.2.4.2  bouyer     KC(107),	KS_odiaeresis,
    376  1.2.4.2  bouyer     KC(108),	KS_adiaeresis,
    377  1.2.4.2  bouyer     KC(112),	KS_m,		KS_M,		KS_mu,
    378  1.2.4.2  bouyer     KC(113),	KS_comma,	KS_semicolon,
    379  1.2.4.2  bouyer     KC(114),	KS_period,	KS_colon,
    380  1.2.4.2  bouyer     KC(115),	KS_minus,	KS_underscore,
    381  1.2.4.2  bouyer     KC(116),	KS_numbersign,	KS_apostrophe,
    382  1.2.4.2  bouyer     KC(118),	KS_less,	KS_greater, 	KS_bar,
    383  1.2.4.2  bouyer     KC(120),	KS_n
    384  1.2.4.2  bouyer };
    385  1.2.4.2  bouyer 
    386  1.2.4.2  bouyer static const keysym_t hilkbd_keydesc_de_ps2_nodead[] = {
    387  1.2.4.2  bouyer     KC(49),	KS_z,		KS_Z,		KS_asciicircum,
    388  1.2.4.2  bouyer     KC(63),	KS_asciicircum,	KS_degree,
    389  1.2.4.2  bouyer     KC(92),	KS_apostrophe,	KS_grave,
    390  1.2.4.2  bouyer     KC(100),	KS_plus,	KS_asterisk,	KS_asciitilde
    391  1.2.4.2  bouyer };
    392  1.2.4.2  bouyer 
    393  1.2.4.2  bouyer /*
    394  1.2.4.2  bouyer  * 17. English
    395  1.2.4.2  bouyer  */
    396  1.2.4.2  bouyer 
    397  1.2.4.2  bouyer static const keysym_t hilkbd_keydesc_uk[] = {
    398  1.2.4.2  bouyer     KC(56),	KS_7,		KS_asciicircum,	KS_backslash,
    399  1.2.4.2  bouyer     KC(57),	KS_6,		KS_ampersand,	KS_asciicircum,
    400  1.2.4.2  bouyer     KC(60),	KS_3,		KS_sterling,	KS_numbersign,
    401  1.2.4.2  bouyer     KC(61),	KS_2,		KS_quotedbl,	KS_at,
    402  1.2.4.2  bouyer     KC(88),	KS_8,		KS_parenleft,	KS_bracketleft,	KS_braceleft,
    403  1.2.4.2  bouyer     KC(89),	KS_9,		KS_parenright,	KS_bracketright,KS_braceright,
    404  1.2.4.2  bouyer     KC(90),	KS_0,		KS_equal,	KS_questiondown,
    405  1.2.4.2  bouyer     KC(91),	KS_plus,	KS_question,	KS_macron,
    406  1.2.4.2  bouyer     KC(92),	KS_apostrophe,	KS_slash,	KS_plusminus,
    407  1.2.4.2  bouyer     KC(101),	KS_less,	KS_greater,	KS_mu,
    408  1.2.4.2  bouyer     KC(107),	KS_asterisk,	KS_at,
    409  1.2.4.2  bouyer     KC(108),	KS_backslash,	KS_bar,		KS_grave,	KS_apostrophe,
    410  1.2.4.2  bouyer     KC(113),	KS_comma,	KS_semicolon,	KS_less,
    411  1.2.4.2  bouyer     KC(114),	KS_period,	KS_colon,	KS_greater,
    412  1.2.4.2  bouyer     KC(115),	KS_minus,	KS_underscore,	KS_underscore
    413  1.2.4.2  bouyer };
    414  1.2.4.2  bouyer 
    415  1.2.4.2  bouyer static const keysym_t hilkbd_keydesc_uk_ps2[] = {
    416  1.2.4.2  bouyer     KC(24),	KS_b,
    417  1.2.4.2  bouyer     KC(25),	KS_v,
    418  1.2.4.2  bouyer     KC(26),	KS_c,
    419  1.2.4.2  bouyer     KC(27),	KS_x,
    420  1.2.4.2  bouyer     KC(28),	KS_z,
    421  1.2.4.2  bouyer     KC(40),	KS_h,
    422  1.2.4.2  bouyer     KC(41),	KS_g,
    423  1.2.4.2  bouyer     KC(42),	KS_f,
    424  1.2.4.2  bouyer     KC(43),	KS_d,
    425  1.2.4.2  bouyer     KC(44),	KS_s,
    426  1.2.4.2  bouyer     KC(45),	KS_a,
    427  1.2.4.2  bouyer     KC(48),	KS_u,
    428  1.2.4.2  bouyer     KC(49),	KS_y,
    429  1.2.4.2  bouyer     KC(50),	KS_t,
    430  1.2.4.2  bouyer     KC(51),	KS_r,
    431  1.2.4.2  bouyer     KC(52),	KS_e,
    432  1.2.4.2  bouyer     KC(53),	KS_w,
    433  1.2.4.2  bouyer     KC(54),	KS_q,
    434  1.2.4.2  bouyer     KC(56),	KS_7,		KS_ampersand,
    435  1.2.4.2  bouyer     KC(57),	KS_6,		KS_asciicircum,
    436  1.2.4.2  bouyer     KC(58),	KS_5,		KS_percent,
    437  1.2.4.2  bouyer     KC(59),	KS_4,		KS_dollar,
    438  1.2.4.2  bouyer     KC(60),	KS_3,		KS_sterling,
    439  1.2.4.2  bouyer     KC(61),	KS_2,		KS_quotedbl,
    440  1.2.4.2  bouyer     KC(62),	KS_1,		KS_exclam,
    441  1.2.4.2  bouyer     KC(63),	KS_grave,	KS_notsign,	KS_bar,
    442  1.2.4.2  bouyer     KC(88),	KS_8,		KS_asterisk,
    443  1.2.4.2  bouyer     KC(89),	KS_9,		KS_parenleft,
    444  1.2.4.2  bouyer     KC(90),	KS_0,		KS_parenright,
    445  1.2.4.2  bouyer     KC(91),	KS_minus,	KS_underscore,
    446  1.2.4.2  bouyer     KC(92),	KS_equal,	KS_plus,
    447  1.2.4.2  bouyer     KC(96),	KS_i,
    448  1.2.4.2  bouyer     KC(97),	KS_o,
    449  1.2.4.2  bouyer     KC(98),	KS_p,
    450  1.2.4.2  bouyer     KC(99),	KS_bracketleft,	KS_braceleft,
    451  1.2.4.2  bouyer     KC(100),	KS_bracketright,KS_braceright,
    452  1.2.4.2  bouyer     KC(104),	KS_j,
    453  1.2.4.2  bouyer     KC(105),	KS_k,
    454  1.2.4.2  bouyer     KC(106),	KS_l,
    455  1.2.4.2  bouyer     KC(107),	KS_semicolon,	KS_colon,
    456  1.2.4.2  bouyer     KC(108),	KS_apostrophe,	KS_at,
    457  1.2.4.2  bouyer     KC(112),	KS_m,
    458  1.2.4.2  bouyer     KC(113),	KS_comma,	KS_less,
    459  1.2.4.2  bouyer     KC(114),	KS_period,	KS_greater,
    460  1.2.4.2  bouyer     KC(115),	KS_slash,	KS_question,
    461  1.2.4.2  bouyer     KC(116),	KS_numbersign,	KS_asciitilde,
    462  1.2.4.2  bouyer     KC(118),	KS_backslash,	KS_brokenbar,
    463  1.2.4.2  bouyer     KC(120),	KS_n
    464  1.2.4.2  bouyer };
    465  1.2.4.2  bouyer 
    466  1.2.4.2  bouyer /*
    467  1.2.4.2  bouyer  * 1b. French
    468  1.2.4.2  bouyer  */
    469  1.2.4.2  bouyer 
    470  1.2.4.2  bouyer static const keysym_t hilkbd_keydesc_fr[] = {
    471  1.2.4.2  bouyer     KC(28),	KS_w,		KS_W,		KS_paragraph,
    472  1.2.4.2  bouyer     KC(45),	KS_q,		KS_Q,		KS_aring,
    473  1.2.4.2  bouyer     KC(53),	KS_z,		KS_Z,		KS_asciitilde,
    474  1.2.4.2  bouyer     KC(54),	KS_a,		KS_A,		KS_periodcentered,
    475  1.2.4.2  bouyer     KC(56),	KS_egrave,	KS_7,		KS_backslash,
    476  1.2.4.2  bouyer     KC(57),	KS_section,	KS_6,		KS_asciicircum,
    477  1.2.4.2  bouyer     KC(58),	KS_parenleft,	KS_5,		KS_onehalf,
    478  1.2.4.2  bouyer     KC(59),	KS_apostrophe,	KS_4,		KS_onequarter,	KS_threequarters,
    479  1.2.4.2  bouyer     KC(60),	KS_quotedbl,	KS_3,		KS_numbersign,
    480  1.2.4.2  bouyer     KC(61),	KS_eacute,	KS_2,		KS_at,
    481  1.2.4.2  bouyer     KC(62),	KS_ampersand,	KS_1,		KS_exclamdown,
    482  1.2.4.2  bouyer     KC(63),	KS_dollar,	KS_sterling,
    483  1.2.4.2  bouyer 		KS_guillemotleft,KS_guillemotright,
    484  1.2.4.2  bouyer     KC(88),	KS_exclam,	KS_8,		KS_bracketleft,	KS_braceleft,
    485  1.2.4.2  bouyer     KC(89),	KS_ccedilla,	KS_9,		KS_bracketright,KS_braceright,
    486  1.2.4.2  bouyer     KC(90),	KS_agrave,	KS_0,		KS_questiondown,
    487  1.2.4.2  bouyer     KC(91),	KS_parenright,	KS_degree,	KS_macron,
    488  1.2.4.2  bouyer     KC(92),	KS_minus,	KS_underscore,	KS_plusminus,
    489  1.2.4.2  bouyer     KC(99),	KS_dead_circumflex, KS_dead_diaeresis,	KS_dead_abovering,
    490  1.2.4.2  bouyer     KC(100),	KS_grave,	KS_asterisk,	KS_bar,		KS_brokenbar,
    491  1.2.4.2  bouyer     KC(101),	KS_less,	KS_greater,	KS_mu,
    492  1.2.4.2  bouyer     KC(107),	KS_m,
    493  1.2.4.2  bouyer     KC(108),	KS_ugrave,	KS_percent,	KS_grave,	KS_apostrophe,
    494  1.2.4.2  bouyer     KC(112),	KS_comma,	KS_question,	KS_masculine,
    495  1.2.4.2  bouyer     KC(113),	KS_semicolon,	KS_period,	KS_less,
    496  1.2.4.2  bouyer     KC(114),	KS_colon,	KS_slash,	KS_greater,
    497  1.2.4.2  bouyer     KC(115),	KS_equal,	KS_plus,	KS_underscore
    498  1.2.4.2  bouyer };
    499  1.2.4.2  bouyer 
    500  1.2.4.2  bouyer static const keysym_t hilkbd_keydesc_fr_ps2[] = {
    501  1.2.4.2  bouyer     KC(24),	KS_b,
    502  1.2.4.2  bouyer     KC(25),	KS_v,
    503  1.2.4.2  bouyer     KC(26),	KS_c,
    504  1.2.4.2  bouyer     KC(27),	KS_x,
    505  1.2.4.2  bouyer     KC(28),	KS_w,
    506  1.2.4.2  bouyer     KC(40),	KS_h,
    507  1.2.4.2  bouyer     KC(41),	KS_g,
    508  1.2.4.2  bouyer     KC(42),	KS_f,
    509  1.2.4.2  bouyer     KC(43),	KS_d,
    510  1.2.4.2  bouyer     KC(44),	KS_s,
    511  1.2.4.2  bouyer     KC(45),	KS_q,
    512  1.2.4.2  bouyer     KC(48),	KS_u,
    513  1.2.4.2  bouyer     KC(49),	KS_y,
    514  1.2.4.2  bouyer     KC(50),	KS_t,
    515  1.2.4.2  bouyer     KC(51),	KS_r,
    516  1.2.4.2  bouyer     KC(52),	KS_e,
    517  1.2.4.2  bouyer     KC(53),	KS_z,
    518  1.2.4.2  bouyer     KC(54),	KS_a,
    519  1.2.4.2  bouyer     KC(56),	KS_egrave,	KS_7,		KS_grave,
    520  1.2.4.2  bouyer     KC(57),	KS_minus,	KS_6,		KS_bar,
    521  1.2.4.2  bouyer     KC(58),	KS_parenleft,	KS_5,		KS_bracketleft,
    522  1.2.4.2  bouyer     KC(59),	KS_apostrophe,	KS_4,		KS_braceleft,
    523  1.2.4.2  bouyer     KC(60),	KS_quotedbl,	KS_3,		KS_numbersign,
    524  1.2.4.2  bouyer     KC(61),	KS_eacute,	KS_2,		KS_asciitilde,
    525  1.2.4.2  bouyer     KC(62),	KS_ampersand,	KS_1,
    526  1.2.4.2  bouyer     KC(63),	KS_twosuperior,
    527  1.2.4.2  bouyer     KC(88),	KS_underscore,	KS_8,		KS_backslash,
    528  1.2.4.2  bouyer     KC(89),	KS_ccedilla,	KS_9,		KS_asciicircum,
    529  1.2.4.2  bouyer     KC(90),	KS_agrave,	KS_0,		KS_at,
    530  1.2.4.2  bouyer     KC(91),	KS_parenright,	KS_degree,	KS_bracketright,
    531  1.2.4.2  bouyer     KC(92),	KS_equal,	KS_plus,	KS_braceright,
    532  1.2.4.2  bouyer     KC(96),	KS_i,
    533  1.2.4.2  bouyer     KC(97),	KS_o,
    534  1.2.4.2  bouyer     KC(98),	KS_p,
    535  1.2.4.2  bouyer     KC(99),	KS_dead_circumflex,KS_dead_diaeresis,
    536  1.2.4.2  bouyer     KC(100),	KS_dollar,	KS_sterling,	KS_currency,
    537  1.2.4.2  bouyer     KC(104),	KS_j,
    538  1.2.4.2  bouyer     KC(105),	KS_k,
    539  1.2.4.2  bouyer     KC(106),	KS_l,
    540  1.2.4.2  bouyer     KC(107),	KS_m,
    541  1.2.4.2  bouyer     KC(108),	KS_ugrave,	KS_percent,
    542  1.2.4.2  bouyer     KC(112),	KS_comma,	KS_question,
    543  1.2.4.2  bouyer     KC(113),	KS_semicolon,	KS_period,
    544  1.2.4.2  bouyer     KC(114),	KS_colon,	KS_slash,
    545  1.2.4.2  bouyer     KC(115),	KS_exclam,	KS_section,
    546  1.2.4.2  bouyer     KC(116),	KS_asterisk,	KS_mu,
    547  1.2.4.2  bouyer     KC(118),	KS_less,	KS_greater,
    548  1.2.4.2  bouyer 		KS_guillemotleft,KS_guillemotright,
    549  1.2.4.2  bouyer     KC(120),	KS_n
    550  1.2.4.2  bouyer };
    551  1.2.4.2  bouyer 
    552  1.2.4.2  bouyer #define KBD_MAP(name, base, map) \
    553  1.2.4.2  bouyer 			{ name, base, sizeof(map)/sizeof(keysym_t), map }
    554  1.2.4.2  bouyer 
    555  1.2.4.2  bouyer const struct wscons_keydesc hilkbd_keydesctab[] = {
    556  1.2.4.2  bouyer 	KBD_MAP(KB_US,			0,	hilkbd_keydesc_us),
    557  1.2.4.2  bouyer 	KBD_MAP(KB_DE,			KB_US,	hilkbd_keydesc_de),
    558  1.2.4.2  bouyer 	KBD_MAP(KB_DE | KB_NODEAD,	KB_DE,	hilkbd_keydesc_de_nodead),
    559  1.2.4.2  bouyer 	KBD_MAP(KB_FR,			KB_US,	hilkbd_keydesc_fr),
    560  1.2.4.2  bouyer 	KBD_MAP(KB_UK,			KB_US,	hilkbd_keydesc_uk),
    561  1.2.4.2  bouyer 	KBD_MAP(KB_SV,			KB_US,	hilkbd_keydesc_sv),
    562  1.2.4.2  bouyer 	KBD_MAP(KB_SV | KB_NODEAD,	KB_SV,	hilkbd_keydesc_sv_nodead),
    563  1.2.4.2  bouyer 	{0, 0, 0, 0},
    564  1.2.4.2  bouyer };
    565  1.2.4.2  bouyer 
    566  1.2.4.2  bouyer const struct wscons_keydesc hilkbd_keydesctab_ps2[] = {
    567  1.2.4.2  bouyer 	KBD_MAP(KB_US,			0,	hilkbd_keydesc_us),
    568  1.2.4.2  bouyer 	KBD_MAP(KB_DE,			KB_US,	hilkbd_keydesc_de_ps2),
    569  1.2.4.2  bouyer 	KBD_MAP(KB_DE | KB_NODEAD,	KB_DE,	hilkbd_keydesc_de_ps2_nodead),
    570  1.2.4.2  bouyer 	KBD_MAP(KB_FR,			KB_US,	hilkbd_keydesc_fr_ps2),
    571  1.2.4.2  bouyer 	KBD_MAP(KB_UK,			KB_US,	hilkbd_keydesc_uk_ps2),
    572  1.2.4.2  bouyer 	KBD_MAP(KB_SV,			KB_US,	hilkbd_keydesc_sv_ps2),
    573  1.2.4.2  bouyer 	KBD_MAP(KB_SV | KB_NODEAD,	KB_SV,	hilkbd_keydesc_sv_ps2_nodead),
    574  1.2.4.2  bouyer 	{0, 0, 0, 0},
    575  1.2.4.2  bouyer };
    576  1.2.4.2  bouyer 
    577  1.2.4.2  bouyer /*
    578  1.2.4.2  bouyer  * Keyboard ID to layout table
    579  1.2.4.2  bouyer  */
    580  1.2.4.2  bouyer const kbd_t hilkbd_layouts[MAXHILKBDLAYOUT] = {
    581  1.2.4.2  bouyer 	-1,	/* 00 Undefined or custom layout */
    582  1.2.4.2  bouyer 	-1,	/* 01 Undefined */
    583  1.2.4.2  bouyer 	-1,	/* 02 Japanese */
    584  1.2.4.2  bouyer 	-1,	/* 03 Swiss french */
    585  1.2.4.2  bouyer 	-1,	/* 04 Portuguese */
    586  1.2.4.2  bouyer 	-1,	/* 05 Arabic */
    587  1.2.4.2  bouyer 	-1,	/* 06 Hebrew */
    588  1.2.4.2  bouyer 	-1,	/* 07 Canadian English */
    589  1.2.4.2  bouyer 	-1,	/* 08 Turkish */
    590  1.2.4.2  bouyer 	-1,	/* 09 Greek */
    591  1.2.4.2  bouyer 	-1,	/* 0a Thai */
    592  1.2.4.2  bouyer 	-1,	/* 0b Italian */
    593  1.2.4.2  bouyer 	-1,	/* 0c Korean */
    594  1.2.4.2  bouyer 	-1,	/* 0d Dutch */
    595  1.2.4.2  bouyer 	KB_SV,	/* 0e Swedish */
    596  1.2.4.2  bouyer 	KB_DE,	/* 0f German */
    597  1.2.4.2  bouyer 	-1,	/* 10 Simplified Chinese */
    598  1.2.4.2  bouyer 	-1,	/* 11 Traditional Chinese */
    599  1.2.4.2  bouyer 	-1,	/* 12 Swiss French 2 */
    600  1.2.4.2  bouyer 	-1,	/* 13 Euro Spanish */
    601  1.2.4.2  bouyer 	-1,	/* 14 Swiss German 2 */
    602  1.2.4.2  bouyer 	-1,	/* 15 Belgian */
    603  1.2.4.2  bouyer 	-1,	/* 16 Finnish */
    604  1.2.4.2  bouyer 	KB_UK,	/* 17 UK English */
    605  1.2.4.2  bouyer 	-1,	/* 18 Canadian French */
    606  1.2.4.2  bouyer 	-1,	/* 19 Swiss German */
    607  1.2.4.2  bouyer 	-1,	/* 1a Norwegian */
    608  1.2.4.2  bouyer 	KB_FR,	/* 1b French */
    609  1.2.4.2  bouyer 	-1,	/* 1c Danish */
    610  1.2.4.2  bouyer 	-1,	/* 1d Katakana */
    611  1.2.4.2  bouyer 	-1,	/* 1e Latin Spanish */
    612  1.2.4.2  bouyer 	KB_US,	/* 1f US ASCII */
    613  1.2.4.2  bouyer };
    614