#define KEYMAP_SIZE_VARIABLE
#include <sys/param.h>
#include <sys/kbd.h>
#define c(ch) (ch&0x1F)
#define ESC 0x1B
#define DEL 0x7F
#define KEYMAP_SIZE_PC 160
static keymap_entry_t keytab_pc_lc[KEYMAP_SIZE_PC] = {
HOLE, '`', '1', '2', '3', '4', '5', '6',
'7', '8', '9', '0', '-', '=', HOLE, '\b',
'\t', 'q', 'w', 'e', 'r', 't', 'y', 'u',
'i', 'o', 'p', '[', ']', '\\',
SHIFTKEYS+CAPSLOCK,
'a',
's', 'd', 'f', 'g', 'h', 'j', 'k', 'l',
';', '\'', '\\', '\r',
SHIFTKEYS+LEFTSHIFT,
HOLE, 'z', 'x',
'c', 'v', 'b', 'n', 'm', ',', '.', '/',
NOP, SHIFTKEYS+RIGHTSHIFT,
SHIFTKEYS+LEFTCTRL,
HOLE, SHIFTKEYS+LEFTALT,
' ', SHIFTKEYS+
RIGHTALT,
HOLE,
SHIFTKEYS+RIGHTCTRL,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, BF(8), DEL,
NOP, HOLE,
STRING+LEFTARROW,
RF(7), RF(13), HOLE,
STRING+UPARROW,
STRING+DOWNARROW,
RF(9), RF(15), HOLE,
HOLE,
STRING+RIGHTARROW,
SHIFTKEYS+NUMLOCK,
RF(7), STRING+LEFTARROW,
RF(13), HOLE,
PADSLASH,
STRING+UPARROW,
RF(11), STRING+DOWNARROW,
BF(8), PADSTAR,
RF(9),
STRING+RIGHTARROW,
RF(15),
DEL, PADMINUS,
PADPLUS,
HOLE, PADENTER,
HOLE, ESC, HOLE,
TF(1), TF(2), TF(3), TF(4), TF(5), TF(6), TF(7), TF(8),
TF(9), TF(10), TF(11), TF(12), 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, HOLE, HOLE, HOLE,
};
static keymap_entry_t keytab_pc_uc[KEYMAP_SIZE_PC] = {
HOLE, '~', '!', '@', '#', '$', '%', '^',
'&', '*', '(', ')', '_', '+', HOLE, '\b',
'\t', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U',
'I', 'O', 'P', '{', '}', '|',
SHIFTKEYS+CAPSLOCK,
'A',
'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L',
':', '"', '|', '\r',
SHIFTKEYS+LEFTSHIFT,
HOLE, 'Z', 'X',
'C', 'V', 'B', 'N', 'M', '<', '>', '?',
NOP, SHIFTKEYS+RIGHTSHIFT,
SHIFTKEYS+LEFTCTRL,
HOLE,
SHIFTKEYS+LEFTALT,
' ', SHIFTKEYS+
RIGHTALT,
HOLE,
SHIFTKEYS+RIGHTCTRL,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, BF(8), DEL, NOP, HOLE,
STRING+LEFTARROW,
RF(7), RF(13), HOLE, STRING+UPARROW,
STRING+DOWNARROW,
RF(9), RF(15), HOLE,
HOLE,
STRING+RIGHTARROW,
SHIFTKEYS+NUMLOCK,
'7', '4', '1', HOLE, '/',
'8', '5', '2', '0', '*', '9', '6', '3',
'.', '-', '+', HOLE, '\n', HOLE, ESC, HOLE,
TF(1), TF(2), TF(3), TF(4), TF(5), TF(6), TF(7), TF(8),
TF(9), TF(10), TF(11), TF(12), 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, HOLE, HOLE, HOLE,
};
static keymap_entry_t keytab_pc_cl[KEYMAP_SIZE_PC] = {
HOLE, '`', '1', '2', '3', '4', '5', '6',
'7', '8', '9', '0', '-', '=', HOLE, '\b',
'\t', 'Q', 'W', 'E', 'R', 'T', 'Y', 'U',
'I', 'O', 'P', '[', ']', '\\',
SHIFTKEYS+CAPSLOCK,
'A',
'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L',
';', '\'', '\\', '\r',
SHIFTKEYS+LEFTSHIFT,
HOLE, 'Z', 'X',
'C', 'V', 'B', 'N', 'M', ',', '.', '/',
NOP, SHIFTKEYS+RIGHTSHIFT,
SHIFTKEYS+LEFTCTRL,
HOLE,
SHIFTKEYS+LEFTALT,
' ', SHIFTKEYS+
RIGHTALT,
HOLE,
SHIFTKEYS+RIGHTCTRL,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, BF(8), DEL, NOP, HOLE,
STRING+LEFTARROW,
RF(7),
RF(13), HOLE,
STRING+UPARROW,
STRING+DOWNARROW,
RF(9), RF(15), HOLE,
HOLE,
STRING+RIGHTARROW,
SHIFTKEYS+NUMLOCK,
RF(7), STRING+LEFTARROW,
RF(13), HOLE, PADSLASH,
STRING+UPARROW,
RF(11), STRING+DOWNARROW,
BF(8), PADSTAR,
RF(9),
STRING+RIGHTARROW,
RF(15),
DEL, PADMINUS,
PADPLUS,
HOLE, PADENTER,
HOLE, ESC, HOLE,
TF(1), TF(2), TF(3), TF(4), TF(5), TF(6), TF(7), TF(8),
TF(9), TF(10), TF(11), TF(12), 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, HOLE, HOLE, HOLE,
};
static keymap_entry_t keytab_pc_ag[KEYMAP_SIZE_PC] = {
HOLE, 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,
SHIFTKEYS+CAPSLOCK,
NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, NOP,
SHIFTKEYS+LEFTSHIFT,
HOLE, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, SHIFTKEYS+RIGHTSHIFT,
SHIFTKEYS+LEFTCTRL,
HOLE,
SHIFTKEYS+LEFTALT,
' ', SHIFTKEYS+
RIGHTALT,
HOLE,
SHIFTKEYS+RIGHTCTRL,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, BF(8), DEL, NOP, HOLE,
STRING+
LEFTARROW,
RF(7), RF(13), HOLE, STRING+
UPARROW,STRING+
DOWNARROW,RF(9), RF(15), HOLE,
HOLE, STRING+
RIGHTARROW,
SHIFTKEYS+NUMLOCK,
NOP, NOP, NOP, HOLE, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, HOLE, NOP, HOLE, ESC, HOLE,
TF(1), TF(2), TF(3), TF(4), TF(5), TF(6), TF(7), TF(8),
TF(9), TF(10), TF(11), TF(12), 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, HOLE, HOLE, HOLE,
};
static keymap_entry_t keytab_pc_nl[KEYMAP_SIZE_PC] = {
HOLE, 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, HOLE, NONL, NONL,
NONL, NONL, NONL, NONL, NONL, NONL, NONL, NONL,
NONL, NONL, NONL, HOLE, NONL, NONL, NONL, HOLE,
NONL, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, NONL, NONL, NONL, HOLE, NONL,
NONL, NONL, HOLE, NONL, NONL, NONL, NONL, HOLE,
HOLE, NONL, NONL, PAD7, PAD4, PAD1, HOLE, NONL,
PAD8, PAD5, PAD2, PAD0, NONL, PAD9, PAD6, PAD3,
PADDOT, NONL, NONL, HOLE, NONL, HOLE, NONL, HOLE,
NONL, NONL, NONL, NONL, NONL, NONL, NONL, 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, HOLE, HOLE,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
};
static keymap_entry_t keytab_pc_ct[KEYMAP_SIZE_PC] = {
HOLE, c('^'), '1', c('@'), '3', '4', '5', c('^'),
'7', '8', '9', '0', c('_'), '=', HOLE, '\b',
'\t', c('q'), c('w'), c('e'), c('r'), c('t'), c('y'), c('u'),
c('i'), c('o'), c('p'), c('['), c(']'), c('\\'),
SHIFTKEYS+CAPSLOCK,
c('a'),
c('s'), c('d'), c('f'), c('g'), c('h'), c('j'), c('k'), c('l'),
';', '\'', '\\', '\r',
SHIFTKEYS+LEFTSHIFT,
HOLE, c('z'), c('x'),
c('c'), c('v'), c('b'), c('n'), c('m'), ',', '.', c('_'),
NOP, SHIFTKEYS+RIGHTSHIFT,
SHIFTKEYS+LEFTCTRL,
HOLE,
SHIFTKEYS+LEFTALT,
' ', SHIFTKEYS+
RIGHTALT,
HOLE,
SHIFTKEYS+RIGHTCTRL,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, BF(8), DEL, NOP, HOLE,
STRING+LEFTARROW,
RF(7), RF(13), HOLE,
STRING+UPARROW,
STRING+DOWNARROW,
RF(9), RF(15), HOLE,
HOLE,
STRING+RIGHTARROW,
SHIFTKEYS+NUMLOCK,
PAD7, PAD4, PAD1, HOLE,
PADSLASH,
PAD8, PAD5, PAD2, PAD0, PADSTAR,
PAD9, PAD6, PAD3,
PADDOT, PADMINUS,
PADPLUS,
HOLE, PADENTER,
HOLE, ESC, HOLE,
TF(1), TF(2), TF(3), TF(4), TF(5), TF(6), TF(7), TF(8),
TF(9), TF(10), TF(11), TF(12), 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, HOLE, HOLE, HOLE,
};
static keymap_entry_t keytab_pc_up[KEYMAP_SIZE_PC] = {
HOLE, 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,
SHIFTKEYS+LEFTSHIFT,
HOLE, NOP, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, SHIFTKEYS+RIGHTSHIFT,
SHIFTKEYS+LEFTCTRL,
HOLE, SHIFTKEYS+LEFTALT,
NOP, SHIFTKEYS+
RIGHTALT,
HOLE,
SHIFTKEYS+RIGHTCTRL,
HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, HOLE,
HOLE, HOLE, HOLE, NOP, NOP, NOP, HOLE, NOP,
NOP, NOP, HOLE, NOP, NOP, NOP, NOP, HOLE,
HOLE, NOP, NOP, NOP, NOP, NOP, HOLE, NOP,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
NOP, NOP, NOP, HOLE, NOP, HOLE, NOP, HOLE,
NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
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, HOLE, HOLE, HOLE,
};
#define M(x) (1 << (x))
#define MASK_ALL (M(LEFTSHIFT) | \
M(RIGHTSHIFT) | \
CTRLMASK | \
ALTMASK | \
ALTGRAPHMASK)
static struct exception_map exceptions_pc[] = {
{ MASK_ALL, M(LEFTSHIFT)|M(LEFTCTRL), 112, COMPOSE, },
{ MASK_ALL, M(LEFTSHIFT)|M(RIGHTCTRL), 112, COMPOSE, },
{ MASK_ALL, M(RIGHTSHIFT)|M(LEFTCTRL), 112, COMPOSE, },
{ MASK_ALL, M(RIGHTSHIFT)|M(RIGHTCTRL), 112, COMPOSE, },
{ 0, },
};
struct keyboard keyindex_pc = {
KEYMAP_SIZE_PC,
keytab_pc_lc,
keytab_pc_uc,
keytab_pc_cl,
keytab_pc_ag,
keytab_pc_nl,
keytab_pc_ct,
keytab_pc_up,
0x0000,
0x0000,
112, 0, 31,
CAPSMASK|NUMLOCKMASK,
exceptions_pc,
44, 57, 126,
};