#include <sys/usb/usba/usbai_version.h>
#define KEYMAP_SIZE_VARIABLE
#include <sys/param.h>
#include <sys/kbd.h>
#include <sys/stream.h>
#include <sys/consdev.h>
#include <sys/note.h>
#include <sys/usb/clients/hid/hid.h>
#include <sys/usb/clients/hid/hid_polled.h>
#include <sys/usb/clients/hidparser/hidparser.h>
#include <sys/kbtrans.h>
#include <sys/usb/clients/usbkbm/usbkbm.h>
#include <sys/types.h>
#include <sys/kmem.h>
#include <sys/sunddi.h>
#define c(char)(char&0x1F)
#define ESC 0x1B
#define DEL 0x7F
static keymap_entry_t keytab_usb_lc[KEYMAP_SIZE_USB] = {
HOLE, HOLE, HOLE, ERROR, 'a', 'b', 'c', 'd',
'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
'u', 'v', 'w', 'x', 'y', 'z', '1', '2',
'3', '4', '5', '6', '7', '8', '9', '0',
'\r', ESC, '\b', '\t', ' ', '-', '=', '[',
']', '\\', HOLE, ';', '\'', '`', ',', '.',
'/', SHIFTKEYS+CAPSLOCK, TF(1), TF(2), TF(3),
TF(4), TF(5), TF(6),
TF(7), TF(8), TF(9), TF(10), TF(11), TF(12),
RF(2), RF(3),
RF(1), BF(8), RF(7), RF(9), DEL, RF(13), RF(15),
STRING+RIGHTARROW,
STRING+LEFTARROW, STRING+DOWNARROW, STRING+UPARROW,
SHIFTKEYS+NUMLOCK, RF(5),
RF(6), BF(15), BF(14),
BF(11), RF(13), STRING+DOWNARROW, RF(15), STRING+LEFTARROW, \
RF(11), STRING+RIGHTARROW, RF(7),
STRING+UPARROW, RF(9), BF(8), BF(10), HOLE, COMPOSE,
BF(13), HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, LF(7), LF(16), LF(3), LF(5),
BUCKYBITS+SYSTEMBIT, LF(2), LF(4), LF(10), LF(6), LF(8), \
LF(9), RF(4),
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, '\r', HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
SHIFTKEYS+LEFTCTRL, SHIFTKEYS+LEFTSHIFT, SHIFTKEYS+ALT,
BUCKYBITS+METABIT, SHIFTKEYS+RIGHTCTRL, SHIFTKEYS+RIGHTSHIFT,
SHIFTKEYS+ALTGRAPH, BUCKYBITS+METABIT,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
};
static keymap_entry_t keytab_usb_uc[KEYMAP_SIZE_USB] = {
HOLE, HOLE, HOLE, ERROR, 'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z', '!', '@',
'#', '$', '%', '^', '&', '*', '(', ')',
'\r', ESC, '\b', '\t', ' ', '_', '+', '{',
'}', '|', HOLE, ':', '"', '~', '<', '>',
'?', SHIFTKEYS+CAPSLOCK, TF(1), TF(2), TF(3),
TF(4), TF(5), TF(6),
TF(7), TF(8), TF(9), TF(10), TF(11), TF(12),
RF(2), RF(3),
RF(1), BF(8), RF(7), RF(9), DEL, RF(13), RF(15),
STRING+RIGHTARROW,
STRING+LEFTARROW, STRING+DOWNARROW, STRING+UPARROW,
SHIFTKEYS+NUMLOCK, RF(5), RF(6), \
BF(15), BF(14), \
BF(11), RF(13), STRING+DOWNARROW, RF(15), \
STRING+LEFTARROW, RF(11), STRING+RIGHTARROW, RF(7),
STRING+UPARROW, RF(9), BF(8), BF(10), HOLE, COMPOSE,
BF(13), HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, LF(7), LF(16), LF(3), LF(5),
BUCKYBITS+SYSTEMBIT, LF(2), LF(4), LF(10), LF(6), \
LF(8), LF(9), RF(4),
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, '\r', HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
SHIFTKEYS+LEFTCTRL, SHIFTKEYS+LEFTSHIFT, SHIFTKEYS+ALT,
BUCKYBITS+METABIT, SHIFTKEYS+RIGHTCTRL, SHIFTKEYS+RIGHTSHIFT,
SHIFTKEYS+ALTGRAPH, BUCKYBITS+METABIT,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
};
static keymap_entry_t keytab_usb_cl[KEYMAP_SIZE_USB] = {
HOLE, HOLE, HOLE, ERROR, 'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2',
'3', '4', '5', '6', '7', '8', '9', '0',
'\r', ESC, '\b', '\t', ' ', '-', '=', '[',
']', '\\', HOLE, ';', '\'', '`', ',', '.',
'/', SHIFTKEYS+CAPSLOCK, TF(1), TF(2), TF(3),
TF(4), TF(5), TF(6),
TF(7), TF(8), TF(9), TF(10), TF(11), TF(12),
RF(2), RF(3),
RF(1), BF(8), RF(7), RF(9), DEL, RF(13), RF(15),
STRING+RIGHTARROW,
STRING+LEFTARROW, STRING+DOWNARROW, STRING+UPARROW,
SHIFTKEYS+NUMLOCK, RF(5), RF(6), BF(15), BF(14),
BF(11), RF(13), STRING+DOWNARROW, RF(15),
STRING+LEFTARROW, RF(11), STRING+RIGHTARROW, RF(7),
STRING+UPARROW, RF(9), BF(8), BF(10), HOLE, COMPOSE,
BF(13), HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, LF(7), LF(16), LF(3), LF(5),
BUCKYBITS+SYSTEMBIT, LF(2), LF(4), LF(10), LF(6),
LF(8), LF(9), RF(4),
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, '\r', HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
SHIFTKEYS+LEFTCTRL, SHIFTKEYS+LEFTSHIFT,
SHIFTKEYS+ALT, BUCKYBITS+METABIT, SHIFTKEYS+RIGHTCTRL,
SHIFTKEYS+RIGHTSHIFT,
SHIFTKEYS+ALTGRAPH, BUCKYBITS+METABIT,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
};
static keymap_entry_t keytab_usb_ag[KEYMAP_SIZE_USB] = {
HOLE, HOLE, HOLE, ERROR, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
'\r', ESC, '\b', '\t', ' ', NOP, NOP, NOP,
NOP, NOP, HOLE, NOP, NOP, NOP, NOP, NOP,
NOP, SHIFTKEYS+CAPSLOCK, TF(1), TF(2),
TF(3), TF(4), TF(5), TF(6),
TF(7), TF(8), TF(9), TF(10),
TF(11), TF(12), RF(2), RF(3),
RF(1), BF(8), RF(7), RF(9), DEL, RF(13), RF(15),
STRING+RIGHTARROW,
STRING+LEFTARROW, STRING+DOWNARROW, STRING+UPARROW,
SHIFTKEYS+NUMLOCK, RF(5), RF(6), BF(15), BF(14),
BF(11), RF(13), STRING+DOWNARROW, RF(15),
STRING+LEFTARROW, RF(11), STRING+RIGHTARROW, RF(7),
STRING+UPARROW, RF(9), BF(8), BF(10),
HOLE, COMPOSE, BF(13), HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, LF(7), LF(16), LF(3), LF(5),
BUCKYBITS+SYSTEMBIT, LF(2), LF(4), LF(10), LF(6),
LF(8), LF(9), RF(4),
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, '\r', HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
SHIFTKEYS+LEFTCTRL, SHIFTKEYS+LEFTSHIFT, SHIFTKEYS+ALT,
BUCKYBITS+METABIT, SHIFTKEYS+RIGHTCTRL, SHIFTKEYS+RIGHTSHIFT,
SHIFTKEYS+ALTGRAPH, BUCKYBITS+METABIT,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
};
static keymap_entry_t keytab_usb_nl[KEYMAP_SIZE_USB] = {
HOLE, HOLE, HOLE, NONL, NONL, NONL, NONL, NONL,
NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL,
NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL,
NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL,
NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL,
NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL,
NONL, NONL, HOLE, NONL, NONL, NONL, NONL, NONL,
NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL,
NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL,
NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL,
NONL, NONL, NONL, NONL, PADSLASH, PADSTAR, PADMINUS, PADPLUS,
PADENTER, PAD1, PAD2, PAD3, PAD4, PAD5, PAD6, PAD7,
PAD8, PAD9, PAD0, PADDOT, HOLE, NONL, NONL, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, NONL, NONL, NONL, NONL,
NONL, NONL, NONL, NONL, NONL, NONL, NONL, PADEQUAL,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, NONL, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
};
static keymap_entry_t keytab_usb_ct[KEYMAP_SIZE_USB] = {
HOLE, HOLE, HOLE, ERROR, c('a'), c('b'), c('c'), c('d'),
c('e'), c('f'), c('g'), c('h'), c('i'), c('j'), c('k'), c('l'),
c('m'), c('n'), c('o'), c('p'), c('q'), c('r'), c('s'), c('t'),
c('u'), c('v'), c('w'), c('x'), c('y'), c('z'), '1', c(' '),
'3', '4', '5', c('^'), '7', '8', '9', '0',
'\r', ESC, '\b', '\t', c(' '), c('_'), '=', ESC,
c(']'), c('\\'), HOLE, ';', '\'', c('^'),
',', '.',
c('_'), SHIFTKEYS+CAPSLOCK, TF(1), TF(2), TF(3),
TF(4), TF(5), TF(6),
TF(7), TF(8), TF(9), TF(10), TF(11), TF(12),
RF(2), RF(3),
RF(1), BF(8), RF(7), RF(9), DEL, RF(13), RF(15),
STRING+RIGHTARROW,
STRING+LEFTARROW, STRING+DOWNARROW, STRING+UPARROW,
SHIFTKEYS+NUMLOCK, RF(5), RF(6), BF(15), BF(14),
BF(11), RF(13), STRING+DOWNARROW, RF(15),
STRING+LEFTARROW, RF(11), STRING+RIGHTARROW, RF(7),
STRING+UPARROW, RF(9), BF(8), BF(10), HOLE, COMPOSE,
BF(13), HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, LF(7), LF(16), LF(3), LF(5),
BUCKYBITS+SYSTEMBIT, LF(2), LF(4), LF(10), LF(6),
LF(8), LF(9), RF(4),
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, '\r', HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
SHIFTKEYS+LEFTCTRL, SHIFTKEYS+LEFTSHIFT, SHIFTKEYS+ALT,
BUCKYBITS+METABIT, SHIFTKEYS+RIGHTCTRL, SHIFTKEYS+RIGHTSHIFT,
SHIFTKEYS+ALTGRAPH, BUCKYBITS+METABIT,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
};
static keymap_entry_t keytab_usb_up[KEYMAP_SIZE_USB] = {
HOLE, HOLE, HOLE, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, HOLE, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP, HOLE, NOP, NOP, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, NOP, NOP, NOP, NOP,
BUCKYBITS+SYSTEMBIT, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, NOP, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
SHIFTKEYS+LEFTCTRL, SHIFTKEYS+LEFTSHIFT, SHIFTKEYS+ALT,
BUCKYBITS+METABIT, SHIFTKEYS+RIGHTCTRL, SHIFTKEYS+RIGHTSHIFT,
SHIFTKEYS+ALTGRAPH, BUCKYBITS+METABIT,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
};
static keymap_entry_t keytab_usb2pc[KEYMAP_SIZE_USB] = {
0, 0, 0, 0, 31, 50, 48, 33,
19, 34, 35, 36, 24, 37, 38, 39,
52, 51, 25, 26, 17, 20, 32, 21,
23, 49, 18, 47, 22, 46, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11,
43, 110, 15, 16, 61, 12, 13, 27,
28, 29, 0, 40, 41, 1, 53, 54,
55, 30, 112, 113, 114, 115, 116, 117,
118, 119, 120, 121, 122, 123, 124, 125,
126, 75, 80, 85, 76, 81, 86, 89,
79, 84, 83, 90, 95, 100, 105, 106,
108, 93, 98, 103, 92, 97, 102, 91,
96, 101, 99, 104, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
58, 44, 60, 0, 64, 57, 62, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0
};
static struct keyboard kbtrans_usb_keyindex = {
KEYMAP_SIZE_USB,
keytab_usb_lc,
keytab_usb_uc,
keytab_usb_cl,
keytab_usb_ag,
keytab_usb_nl,
keytab_usb_ct,
keytab_usb_up,
0x0000,
0x0000,
120,
#if defined(__sparc)
0,
#else
58,
#endif
4,
CAPSMASK|NUMLOCKMASK,
NULL,
225,
229,
72,
};
struct keyboard *
kbtrans_usbkb_maptab_init(void)
{
struct keyboard *pkbd;
pkbd = (struct keyboard *)
kmem_alloc(sizeof (struct keyboard), KM_SLEEP);
bcopy(&kbtrans_usb_keyindex, pkbd, sizeof (*pkbd));
return (pkbd);
}
void
kbtrans_usbkb_maptab_fini(struct keyboard **ppkbd)
{
kmem_free(*ppkbd, sizeof (struct keyboard));
*ppkbd = NULL;
}
keymap_entry_t
kbtrans_keycode_usb2pc(int key)
{
ASSERT(key >= 0 && key <= 255);
return (keytab_usb2pc[key]);
}