root/sys/dev/dec/wskbdmap_lk201.c
/* $NetBSD: wskbdmap_lk201.c,v 1.6 2002/03/13 15:21:30 ad Exp $ */

#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: wskbdmap_lk201.c,v 1.6 2002/03/13 15:21:30 ad Exp $");

#include <sys/types.h>
#include <dev/wscons/wsksymdef.h>
#include <dev/wscons/wsksymvar.h>
#include <dev/dec/wskbdmap_lk201.h>

#define KC(n) KS_KEYCODE((n) - MIN_LK201_KEY)

static const keysym_t lkkbd_keydesc_us[] = {
/*  pos      command            normal          shifted */
    KC(86),     KS_Cmd_Screen0, KS_f1,
    KC(87),     KS_Cmd_Screen1, KS_f2,
    KC(88),     KS_Cmd_Screen2, KS_f3,
    KC(89),     KS_Cmd_Screen3, KS_f4,
    KC(90),     KS_Cmd_Screen4, KS_f5,
    KC(100),    KS_Cmd_Screen5, KS_f6,
    KC(101),    KS_Cmd_Screen6, KS_f7,
    KC(102),    KS_Cmd_Screen7, KS_f8,
    KC(103),    KS_Cmd_Screen8, KS_f9,
    KC(104),    KS_Cmd_Screen9, KS_f10,
    KC(113),    KS_Cmd_Debugger,        KS_Escape, /* F11 */
    KC(114),                    KS_f12,
    KC(115),                    KS_f13,
    KC(116),                    KS_f14,
    KC(124),                    KS_Help,
    KC(125),    KS_Cmd,         KS_Execute,
    KC(128),                    KS_f17,
    KC(129),                    KS_f18,
    KC(130),                    KS_f19,
    KC(131),                    KS_f20,
    KC(138),                    KS_Find,
    KC(139),                    KS_Insert,
    KC(140),                    KS_KP_Delete,
    KC(141),                    KS_Select,
    KC(142),                    KS_Prior,
    KC(143),                    KS_Next,
    KC(146),                    KS_KP_0,
    KC(148),                    KS_KP_Decimal,
    KC(149),                    KS_KP_Enter,
    KC(150),                    KS_KP_1,
    KC(151),                    KS_KP_2,
    KC(152),                    KS_KP_3,
    KC(153),                    KS_KP_4,
    KC(154),                    KS_KP_5,
    KC(155),                    KS_KP_6,
    KC(156),                    KS_KP_Separator,
    KC(157),                    KS_KP_7,
    KC(158),                    KS_KP_8,
    KC(159),                    KS_KP_9,
    KC(160),                    KS_KP_Subtract,
    KC(161),                    KS_KP_F1,
    KC(162),                    KS_KP_F2,
    KC(163),                    KS_KP_F3,
    KC(164),                    KS_KP_F4,
    KC(167),                    KS_Left,
    KC(168),                    KS_Right,
    KC(169),                    KS_Down,
    KC(170),                    KS_Up,
    KC(174),                    KS_Shift_L,
    KC(175),    KS_Cmd1,        KS_Control_L,
    KC(176),                    KS_Caps_Lock,
    KC(177),    KS_Cmd2,        KS_Multi_key, /* (left) compose */
    KC(188),                    KS_Delete,
    KC(189),                    KS_Return,
    KC(190),                    KS_Tab,
    KC(191),                    KS_grave,       KS_asciitilde,
    KC(192),                    KS_1,           KS_exclam,
    KC(193),                    KS_q,
    KC(194),                    KS_a,
    KC(195),                    KS_z,
    KC(197),                    KS_2,           KS_at,
    KC(198),                    KS_w,
    KC(199),                    KS_s,
    KC(200),                    KS_x,
    KC(201),                    KS_less,        KS_greater,
    KC(203),                    KS_3,           KS_numbersign,
    KC(204),                    KS_e,
    KC(205),                    KS_d,
    KC(206),                    KS_c,
    KC(208),                    KS_4,           KS_dollar,
    KC(209),                    KS_r,
    KC(210),                    KS_f,
    KC(211),                    KS_v,
    KC(212),                    KS_space,
    KC(214),                    KS_5,           KS_percent,
    KC(215),                    KS_t,
    KC(216),                    KS_g,
    KC(217),                    KS_b,
    KC(219),                    KS_6,           KS_asciicircum,
    KC(220),                    KS_y,
    KC(221),                    KS_h,
    KC(222),                    KS_n,
    KC(224),                    KS_7,           KS_ampersand,
    KC(225),                    KS_u,
    KC(226),                    KS_j,
    KC(227),                    KS_m,
    KC(229),                    KS_8,           KS_asterisk,
    KC(230),                    KS_i,
    KC(231),                    KS_k,
    KC(232),                    KS_comma,       KS_less,
    KC(234),                    KS_9,           KS_parenleft,
    KC(235),                    KS_o,
    KC(236),                    KS_l,
    KC(237),                    KS_period,      KS_greater,
    KC(239),                    KS_0,           KS_parenright,
    KC(240),                    KS_p,
    KC(242),                    KS_semicolon,   KS_colon,
    KC(243),                    KS_slash,       KS_question,
    KC(245),                    KS_equal,       KS_plus,
    KC(246),                    KS_bracketright,        KS_braceright,
    KC(247),                    KS_backslash,   KS_bar,
    KC(249),                    KS_minus,       KS_underscore,
    KC(250),                    KS_bracketleft, KS_braceleft,
    KC(251),                    KS_apostrophe,  KS_quotedbl,
};

static const keysym_t lkkbd_keydesc_us_lk401[] = {
    KC(171),                    KS_Shift_R,
    KC(172),    KS_Cmd2,        KS_Alt_L,
    KC(173),                    KS_Multi_key, /* right compose */
    KC(177),                    KS_Multi_key, /* left compose, not "cmd" */
    KC(178),                    KS_Alt_R,
};

#define KBD_MAP(name, base, map) \
                        { name, base, sizeof(map)/sizeof(keysym_t), map }

const struct wscons_keydesc lkkbd_keydesctab[] = {
        KBD_MAP(KB_US,                  0,      lkkbd_keydesc_us),
        KBD_MAP(KB_US | KB_LK401,       KB_US,  lkkbd_keydesc_us_lk401),
        {0, 0, 0, 0}
};

#undef KBD_MAP
#undef KC