File:  [Research Unix] / researchv9 / sys / sundev / keytables.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:21:59 2018 UTC (8 years, 3 months ago) by root
Branches: belllabs, MAIN
CVS tags: researchv9-SUN3_old, researchv9-SUN3, HEAD
researchv9-SUN3(old)

#ifndef lint
static	char sccsid[] = "@(#)keytables.c 1.1 86/02/03 Copyr 1985 Sun Micro";
#endif

/*
 * Copyright (C) 1983 by Sun Microsystems, Inc.
 */

/*
 * keytables.c
 *
 * This module contains the translation tables for the up-down encoded
 * Sun keyboards.
 */
#include "../sundev/kbdvar.h"

/* handy way to define control characters in the tables */
#define	c(char)	(char&0x1F)
#define ESC 0x1B


/* Unshifted keyboard table for Micro Switch 103SD32-2 */

static struct keymap keytab_ms_lc = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				LF(2),	LF(3),	HOLE,	TF(1),	TF(2),	TF(3),
/*  8 */	TF(4), 	TF(5), 	TF(6),	TF(7),	TF(8),	TF(9),	TF(10),	TF(11),
/* 16 */	TF(12), TF(13), TF(14),	c('['),	HOLE,	RF(1),	'+',	'-',
/* 24 */	HOLE, 	LF(4), 	'\f',	LF(6),	HOLE,	SHIFTKEYS+CAPSLOCK,
								'1',	'2',
/* 32 */	'3',	'4',	'5',	'6',	'7',	'8',	'9',	'0',
/* 40 */	'-',	'~',	'`',	'\b',	HOLE,	'7',	'8',	'9',
/* 48 */	HOLE,	LF(7),	STRING+UPARROW,
					LF(9),	HOLE,	'\t',	'q',	'w',
/* 56 */	'e',	'r',	't',	'y',	'u',	'i',	'o',	'p',
/* 64 */	'{',	'}',	'_',	HOLE,	'4',	'5',	'6',	HOLE,
/* 72 */	STRING+LEFTARROW,
			STRING+HOMEARROW,
				STRING+RIGHTARROW,
					HOLE,	SHIFTKEYS+SHIFTLOCK,
							'a', 	's',	'd',
/* 80 */	'f',	'g',	'h',	'j',	'k',	'l',	';',	':',
/* 88 */	'|',	'\r',	HOLE,	'1',	'2',	'3',	HOLE,	NOSCROLL,
/* 96 */	STRING+DOWNARROW,
			LF(15),	HOLE,	HOLE,	SHIFTKEYS+LEFTSHIFT,
							'z',	'x',	'c',
/*104 */	'v',	'b',	'n',	'm',	',',	'.',	'/',	SHIFTKEYS+RIGHTSHIFT,
/*112 */	NOP,	0x7F,	'0',	NOP,	'.',	HOLE,	HOLE,	HOLE,
/*120 */	HOLE,	HOLE,	SHIFTKEYS+LEFTCTRL,
					' ',	SHIFTKEYS+RIGHTCTRL,
							HOLE,	HOLE,	IDLE,
};

/* Shifted keyboard table for Micro Switch 103SD32-2 */

static struct keymap keytab_ms_uc = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				LF(2),	LF(3),	HOLE,	TF(1),	TF(2),	TF(3),
/*  8 */	TF(4), 	TF(5), 	TF(6),	TF(7),	TF(8),	TF(9),	TF(10),	TF(11),
/* 16 */	TF(12), TF(13), TF(14),	c('['),	HOLE,	RF(1),	'+',	'-',
/* 24 */	HOLE, 	LF(4), 	'\f',	LF(6),	HOLE,	SHIFTKEYS+CAPSLOCK,
								'!',	'"',
/* 32 */	'#',	'$',	'%',	'&',	'\'',	'(',	')',	'0',
/* 40 */	'=',	'^',	'@',	'\b',	HOLE,	'7',	'8',	'9',
/* 48 */	HOLE,	LF(7),	STRING+UPARROW,
					LF(9),	HOLE,	'\t',	'Q',	'W',
/* 56 */	'E',	'R',	'T',	'Y',	'U',	'I',	'O',	'P',
/* 64 */	'[',	']',	'_',	HOLE,	'4',	'5',	'6',	HOLE,
/* 72 */	STRING+LEFTARROW,
			STRING+HOMEARROW,
				STRING+RIGHTARROW,
					HOLE,	SHIFTKEYS+SHIFTLOCK,
							'A', 	'S',	'D',
/* 80 */	'F',	'G',	'H',	'J',	'K',	'L',	'+',	'*',
/* 88 */	'\\',	'\r',	HOLE,	'1',	'2',	'3',	HOLE,	NOSCROLL,
/* 96 */	STRING+DOWNARROW,
			LF(15),	HOLE,	HOLE,	SHIFTKEYS+LEFTSHIFT,
							'Z',	'X',	'C',
/*104 */	'V',	'B',	'N',	'M',	'<',	'>',	'?',	SHIFTKEYS+RIGHTSHIFT,
/*112 */	NOP,	0x7F,	'0',	NOP,	'.',	HOLE,	HOLE,	HOLE,
/*120 */	HOLE,	HOLE,	SHIFTKEYS+LEFTCTRL,
					' ',	SHIFTKEYS+RIGHTCTRL,
							HOLE,	HOLE,	IDLE,
};


/* Caps Locked keyboard table for Micro Switch 103SD32-2 */

static struct keymap keytab_ms_cl = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				LF(2),	LF(3),	HOLE,	TF(1),	TF(2),	TF(3),
/*  8 */	TF(4), 	TF(5), 	TF(6),	TF(7),	TF(8),	TF(9),	TF(10),	TF(11),
/* 16 */	TF(12), TF(13), TF(14),	c('['),	HOLE,	RF(1),	'+',	'-',
/* 24 */	HOLE, 	LF(4), 	'\f',	LF(6),	HOLE,	SHIFTKEYS+CAPSLOCK,
								'1',	'2',
/* 32 */	'3',	'4',	'5',	'6',	'7',	'8',	'9',	'0',
/* 40 */	'-',	'~',	'`',	'\b',	HOLE,	'7',	'8',	'9',
/* 48 */	HOLE,	LF(7),	STRING+UPARROW,
	 				LF(9),	HOLE,	'\t',	'Q',	'W',
/* 56 */	'E',	'R',	'T',	'Y',	'U',	'I',	'O',	'P',
/* 64 */	'{',	'}',	'_',	HOLE,	'4',	'5',	'6',	HOLE,
/* 72 */	STRING+LEFTARROW,
			STRING+HOMEARROW,
				STRING+RIGHTARROW,
					HOLE,	SHIFTKEYS+SHIFTLOCK,
							'A', 	'S',	'D',
/* 80 */	'F',	'G',	'H',	'J',	'K',	'L',	';',	':',
/* 88 */	'|',	'\r',	HOLE,	'1',	'2',	'3',	HOLE,	NOSCROLL,
/* 96 */	STRING+DOWNARROW,
			LF(15),	HOLE,	HOLE,	SHIFTKEYS+LEFTSHIFT,
							'Z',	'X',	'C',
/*104 */	'V',	'B',	'N',	'M',	',',	'.',	'/',	SHIFTKEYS+RIGHTSHIFT,
/*112 */	NOP,	0x7F,	'0',	NOP,	'.',	HOLE,	HOLE,	HOLE,
/*120 */	HOLE,	HOLE,	SHIFTKEYS+LEFTCTRL,
					' ',	SHIFTKEYS+RIGHTCTRL,
							HOLE,	HOLE,	IDLE,
};

/* Controlled keyboard table for Micro Switch 103SD32-2 */

static struct keymap keytab_ms_ct = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				LF(2),	LF(3),	HOLE,	TF(1),	TF(2),	TF(3),
/*  8 */	TF(4), 	TF(5), 	TF(6),	TF(7),	TF(8),	TF(9),	TF(10),	TF(11),
/* 16 */	TF(12), TF(13), TF(14),	c('['),	HOLE,	RF(1),	OOPS, OOPS,
/* 24 */	HOLE, 	LF(4), 	'\f',	LF(6),	HOLE,	SHIFTKEYS+CAPSLOCK,
								OOPS,	OOPS,
/* 32 */	OOPS,	OOPS,	OOPS,	OOPS,	OOPS,	OOPS,	OOPS,	OOPS,
/* 40 */	OOPS,	c('^'),	c('@'),	'\b',	HOLE,	OOPS,	OOPS,	OOPS,
/* 48 */	HOLE,	LF(7),	STRING+UPARROW,
					LF(9),	HOLE,	'\t',	CTRLQ,	c('W'),
/* 56 */	c('E'),	c('R'),	c('T'),	c('Y'),	c('U'),	c('I'),	c('O'),	c('P'),
/* 64 */	c('['),	c(']'),	c('_'),	HOLE,	OOPS,	OOPS,	OOPS,	HOLE,
/* 72 */	STRING+LEFTARROW,
			STRING+HOMEARROW,
				STRING+RIGHTARROW,
					HOLE,	SHIFTKEYS+SHIFTLOCK,
							c('A'),	CTRLS,	c('D'),
/* 80 */	c('F'),	c('G'),	c('H'),	c('J'),	c('K'),	c('L'),	OOPS,	OOPS,
/* 88 */	c('\\'),
			'\r',	HOLE,	OOPS,	OOPS,	OOPS,	HOLE,	NOSCROLL,
/* 96 */	STRING+DOWNARROW,
			LF(15),	HOLE,	HOLE,	SHIFTKEYS+LEFTSHIFT,
							c('Z'),	c('X'),	c('C'),
/*104 */	c('V'),	c('B'),	c('N'),	c('M'),	OOPS,	OOPS,	OOPS,	SHIFTKEYS+RIGHTSHIFT,
/*112 */	NOP,	0x7F,	OOPS,	NOP,	OOPS,	HOLE,	HOLE,	HOLE,
/*120 */	HOLE,	HOLE,	SHIFTKEYS+LEFTCTRL,
					'\0',	SHIFTKEYS+RIGHTCTRL,
							HOLE,	HOLE,	IDLE,
};


/* "Key Up" keyboard table for Micro Switch 103SD32-2 */

static struct keymap keytab_ms_up = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				OOPS,	OOPS,	HOLE,	OOPS,	OOPS,	OOPS,
/*  8 */	OOPS, 	OOPS, 	OOPS,	OOPS,	OOPS,	OOPS,	OOPS,	OOPS,
/* 16 */	OOPS, 	OOPS, 	OOPS,	NOP,	HOLE,	OOPS,	NOP,	NOP,
/* 24 */	HOLE, 	OOPS, 	NOP,	OOPS,	HOLE,	SHIFTKEYS+CAPSLOCK,
								NOP,	NOP,
/* 32 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 40 */	NOP,	NOP,	NOP,	NOP,	HOLE,	NOP,	NOP,	NOP,
/* 48 */	HOLE,	OOPS,	NOP,	OOPS,	HOLE,	NOP,	NOP,	NOP,
/* 56 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 64 */	NOP,	NOP,	NOP,	HOLE,	NOP,	NOP,	NOP,	HOLE,
/* 72 */	NOP,	NOP,	NOP,	HOLE,	SHIFTKEYS+SHIFTLOCK,
							NOP, 	NOP,	NOP,
/* 80 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 88 */	NOP,	NOP,	HOLE,	NOP,	NOP,	NOP,	HOLE,	NOP,
/* 96 */	NOP,	OOPS,	HOLE,	HOLE,	SHIFTKEYS+LEFTSHIFT,
							NOP,	NOP,	NOP,
/*104 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	SHIFTKEYS+RIGHTSHIFT,
/*112 */	NOP,	NOP,	NOP,	NOP,	NOP,	HOLE,	HOLE,	HOLE,
/*120 */	HOLE,	HOLE,	SHIFTKEYS+LEFTCTRL,
					NOP,	SHIFTKEYS+RIGHTCTRL,
							HOLE,	HOLE,	RESET,
};


/* Index to keymaps for Micro Switch 103SD32-2 */
static struct keyboard keyindex_ms = {
	&keytab_ms_lc,
	&keytab_ms_uc,
	&keytab_ms_cl,
	&keytab_ms_ct,
	&keytab_ms_up,
	CTLSMASK,	/* Shift bits which stay on with idle keyboard */
	0x0000,		/* Bucky bits which stay on with idle keyboard */
	1,	77,	/* abort keys */
	0x0000,		/* Shift bits which toggle on down event */
};

/* Unshifted keyboard table for Sun-2 keyboard */

static struct keymap keytab_s2_lc = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				LF(11),	LF(2),	HOLE,	TF(1),	TF(2),	TF(11),
/*  8 */	TF(3), 	TF(12),	TF(4),	TF(13),	TF(5),	TF(14),	TF(6),	TF(15),
/* 16 */	TF(7),	TF(8),	TF(9),	TF(10),	HOLE,	RF(1),	RF(2),	RF(3),
/* 24 */	HOLE, 	LF(3), 	LF(4),	LF(12),	HOLE,	c('['),	'1',	'2',
/* 32 */	'3',	'4',	'5',	'6',	'7',	'8',	'9',	'0',
/* 40 */	'-',	'=',	'`',	'\b',	HOLE,	RF(4),	RF(5),	RF(6),
/* 48 */	HOLE,	LF(5),	LF(13),	LF(6),	HOLE,	'\t',	'q',	'w',
/* 56 */	'e',	'r',	't',	'y',	'u',	'i',	'o',	'p',
/* 64 */	'[',	']',	0x7F,	HOLE,	RF(7),	STRING+UPARROW,
								RF(9),	HOLE,
/* 72 */	LF(7),	LF(8),	LF(14),	HOLE,	SHIFTKEYS+LEFTCTRL,
							'a', 	's',	'd',
/* 80 */	'f',	'g',	'h',	'j',	'k',	'l',	';',	'\'',
/* 88 */	'\\',	'\r',	HOLE,	STRING+LEFTARROW,
						RF(11),	STRING+RIGHTARROW,
								HOLE,	LF(9),
/* 96 */	LF(15),	LF(10),	HOLE,	SHIFTKEYS+LEFTSHIFT,
						'z',	'x',	'c',	'v',
/*104 */	'b',	'n',	'm',	',',	'.',	'/',	SHIFTKEYS+RIGHTSHIFT,
									'\n',
/*112 */	RF(13),	STRING+DOWNARROW,
				RF(15),	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*120 */	BUCKYBITS+METABIT,
			' ',	BUCKYBITS+METABIT,
					HOLE,	HOLE,	HOLE,	ERROR,	IDLE,
};

/* Shifted keyboard table for Sun-2 keyboard */

static struct keymap keytab_s2_uc = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				LF(11),	LF(2),	HOLE,	TF(1),	TF(2),	TF(11),
/*  8 */	TF(3), 	TF(12),	TF(4),	TF(13),	TF(5),	TF(14),	TF(6),	TF(15),
/* 16 */	TF(7),	TF(8),	TF(9),	TF(10),	HOLE,	RF(1),	RF(2),	RF(3),
/* 24 */	HOLE, 	LF(3), 	LF(4),	LF(12),	HOLE,	c('['),	'!',    '@',
/* 32 */	'#',	'$',	'%',	'^',	'&',	'*',	'(',	')',
/* 40 */	'_',	'+',	'~',	'\b',	HOLE,	RF(4),	RF(5),	RF(6),
/* 48 */	HOLE,	LF(5),	LF(13),	LF(6),	HOLE,	'\t',	'Q',	'W',
/* 56 */	'E',	'R',	'T',	'Y',	'U',	'I',	'O',	'P',
/* 64 */	'{',	'}',	0x7F,	HOLE,	RF(7),	STRING+UPARROW,
								RF(9),	HOLE,
/* 72 */	LF(7),	LF(8),	LF(14),	HOLE,	SHIFTKEYS+LEFTCTRL,
							'A', 	'S',	'D',
/* 80 */	'F',	'G',	'H',	'J',	'K',	'L',	':',	'"',
/* 88 */	'|',	'\r',	HOLE,	STRING+LEFTARROW,
						RF(11),	STRING+RIGHTARROW,
								HOLE,	LF(9),
/* 96 */	LF(15),	LF(10),	HOLE,	SHIFTKEYS+LEFTSHIFT,
						'Z',	'X',	'C',	'V',
/*104 */	'B',	'N',	'M',	'<',	'>',	'?',	SHIFTKEYS+RIGHTSHIFT,
									'\n',
/*112 */	RF(13),	STRING+DOWNARROW,
				RF(15),	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*120 */	BUCKYBITS+METABIT,
			' ',	BUCKYBITS+METABIT,
					HOLE,	HOLE,	HOLE,	ERROR,	IDLE,
};


/* Caps Locked keyboard table for Sun-2 keyboard */

static struct keymap keytab_s2_cl = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				LF(11),	LF(2),	HOLE,	TF(1),	TF(2),	TF(11),
/*  8 */	TF(3), 	TF(12),	TF(4),	TF(13),	TF(5),	TF(14),	TF(6),	TF(15),
/* 16 */	TF(7),	TF(8),	TF(9),	TF(10),	HOLE,	RF(1),	RF(2),	RF(3),
/* 24 */	HOLE, 	LF(3), 	LF(4),	LF(12),	HOLE,	c('['),	'1',	'2',
/* 32 */	'3',	'4',	'5',	'6',	'7',	'8',	'9',	'0',
/* 40 */	'-',	'=',	'`',	'\b',	HOLE,	RF(4),	RF(5),	RF(6),
/* 48 */	HOLE,	LF(5),	LF(13),	LF(6),	HOLE,	'\t',	'Q',	'W',
/* 56 */	'E',	'R',	'T',	'Y',	'U',	'I',	'O',	'P',
/* 64 */	'[',	']',	0x7F,	HOLE,	RF(7),	STRING+UPARROW,
								RF(9),	HOLE,
/* 72 */	LF(7),	LF(8),	LF(14),	HOLE,	SHIFTKEYS+LEFTCTRL,
							'A', 	'S',	'D',
/* 80 */	'F',	'G',	'H',	'J',	'K',	'L',	';',	'\'',
/* 88 */	'\\',	'\r',	HOLE,	STRING+LEFTARROW,
						RF(11),	STRING+RIGHTARROW,
								HOLE,	LF(9),
/* 96 */	LF(15),	LF(10),	HOLE,	SHIFTKEYS+LEFTSHIFT,
						'Z',	'X',	'C',	'V',
/*104 */	'B',	'N',	'M',	',',	'.',	'/',	SHIFTKEYS+RIGHTSHIFT,
									'\n',
/*112 */	RF(13),	STRING+DOWNARROW,
				RF(15),	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*120 */	BUCKYBITS+METABIT,
			' ',	BUCKYBITS+METABIT,
					HOLE,	HOLE,	HOLE,	ERROR,	IDLE,
};

/* Controlled keyboard table for Sun-2 keyboard */

static struct keymap keytab_s2_ct = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				LF(11),	LF(2),	HOLE,	TF(1),	TF(2),	TF(11),
/*  8 */	TF(3), 	TF(12),	TF(4),	TF(13),	TF(5),	TF(14),	TF(6),	TF(15),
/* 16 */	TF(7),	TF(8),	TF(9),	TF(10),	HOLE,	RF(1),	RF(2),	RF(3),
/* 24 */	HOLE, 	LF(3), 	LF(4),	LF(12),	HOLE,	c('['),	'1',	c('@'),
/* 32 */	'3',	'4',	'5',	c('^'),	'7',	'8',	'9',	'0',
/* 40 */	c('_'),	'=',	c('^'),	'\b',	HOLE,	RF(4),	RF(5),	RF(6),
/* 48 */	HOLE,	LF(5),	LF(13),	LF(6),	HOLE,	'\t',   c('q'),	c('w'),
/* 56 */	c('e'),	c('r'),	c('t'),	c('y'),	c('u'),	c('i'),	c('o'),	c('p'),
/* 64 */	c('['),	c(']'),	0x7F,	HOLE,	RF(7),	STRING+UPARROW,
								RF(9),	HOLE,
/* 72 */	LF(7),	LF(8),	LF(14),	HOLE,	SHIFTKEYS+LEFTCTRL,
							c('a'),	c('s'),	c('d'),
/* 80 */	c('f'),	c('g'),	c('h'),	c('j'),	c('k'),	c('l'),	';',	'\'',
/* 88 */	c('\\'),
			'\r',	HOLE,	STRING+LEFTARROW,
						RF(11),	STRING+RIGHTARROW,
								HOLE,	LF(9),
/* 96 */	LF(15),	LF(10),	HOLE,	SHIFTKEYS+LEFTSHIFT,
						c('z'),	c('x'),	c('c'),	c('v'),
/*104 */	c('b'),	c('n'),	c('m'),	',',	'.',	c('_'),	SHIFTKEYS+RIGHTSHIFT,
									'\n',
/*112 */	RF(13),	STRING+DOWNARROW,
				RF(15),	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*120 */	BUCKYBITS+METABIT,
			c(' '),	BUCKYBITS+METABIT,
					HOLE,	HOLE,	HOLE,	ERROR,	IDLE,
};



/* "Key Up" keyboard table for Sun-2 keyboard */

static struct keymap keytab_s2_up = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				OOPS,	OOPS,	HOLE,	OOPS,	OOPS,	OOPS,
/*  8 */	OOPS, 	OOPS, 	OOPS,	OOPS,	OOPS,	OOPS,	OOPS,	OOPS,
/* 16 */	OOPS, 	OOPS, 	OOPS,	OOPS,	HOLE,	OOPS,	OOPS,	NOP,
/* 24 */	HOLE, 	OOPS, 	OOPS,	OOPS,	HOLE,	NOP,	NOP,	NOP,
/* 32 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 40 */	NOP,	NOP,	NOP,	NOP,	HOLE,	OOPS,	OOPS,	NOP,
/* 48 */	HOLE,	OOPS,	OOPS,	OOPS,	HOLE,	NOP,	NOP,	NOP,
/* 56 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 64 */	NOP,	NOP,	NOP,	HOLE,	OOPS,	OOPS,	NOP,	HOLE,
/* 72 */	OOPS,	OOPS,	OOPS,	HOLE,	SHIFTKEYS+LEFTCTRL,
							NOP, 	NOP,	NOP,
/* 80 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 88 */	NOP,	NOP,	HOLE,	OOPS,	OOPS,	NOP,	HOLE,	OOPS,
/* 96 */	OOPS,	OOPS,	HOLE,	SHIFTKEYS+LEFTSHIFT,
						NOP,	NOP,	NOP,	NOP,
/*104 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	SHIFTKEYS+RIGHTSHIFT,
									NOP,
/*112 */	OOPS,	OOPS,	NOP,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*120 */	BUCKYBITS+METABIT,
			NOP,	BUCKYBITS+METABIT,
					HOLE,	HOLE,	HOLE,	HOLE,	RESET,
};

/* Index to keymaps for Sun-2 keyboard */
static struct keyboard keyindex_s2 = {
	&keytab_s2_lc,
	&keytab_s2_uc,
	&keytab_s2_cl,
	&keytab_s2_ct,
	&keytab_s2_up,
	CAPSMASK,	/* Shift bits which stay on with idle keyboard */
	0x0000,		/* Bucky bits which stay on with idle keyboard */
	1,	77,	/* abort keys */
	0x0000,		/* Shift bits which toggle on down event */
};

/* Unshifted keyboard table for "VT100 style" */

static struct keymap keytab_vt_lc = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*  8 */	HOLE, 	HOLE, 	STRING+UPARROW,
					STRING+DOWNARROW,
						STRING+LEFTARROW,
							STRING+RIGHTARROW,
								HOLE,	TF(1),
/* 16 */	TF(2),	TF(3),	TF(4),	c('['),	'1',	'2',	'3',	'4',
/* 24 */	'5', 	'6', 	'7',	'8',	'9',	'0',	'-',	'=',
/* 32 */	'`',	c('H'),	BUCKYBITS+METABIT,
					'7',	'8',	'9',	'-',	'\t',
/* 40 */	'q',	'w',	'e',	'r',	't',	'y',	'u',	'i',
/* 48 */	'o',	'p',	'[',	']',	0x7F,	'4',	'5',	'6',
/* 56 */	',',	SHIFTKEYS+LEFTCTRL,
				SHIFTKEYS+CAPSLOCK,
					'a',	's',	'd',	'f',	'g',
/* 64 */	'h',	'j',	'k',	'l',	';',	'\'',	'\r',	'\\',
/* 72 */	'1',	'2',	'3',	NOP,	NOSCROLL,
							SHIFTKEYS+LEFTSHIFT,
							 	'z',	'x',
/* 80 */	'c',	'v',	'b',	'n',	'm',	',',	'.',	'/',
/* 88 */	SHIFTKEYS+RIGHTSHIFT,
			'\n',	'0',	HOLE,	'.',	'\r',	HOLE,	HOLE,
/* 96 */	HOLE,	HOLE,	' ',	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*104 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*112 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*120 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	IDLE,
};


/* Shifted keyboard table for "VT100 style" */

static struct keymap keytab_vt_uc = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*  8 */	HOLE, 	HOLE, 	STRING+UPARROW,
					STRING+DOWNARROW,
						STRING+LEFTARROW,
							STRING+RIGHTARROW,
								HOLE,	TF(1),
/* 16 */	TF(2),	TF(3),	TF(4),	c('['),	'!',	'@',	'#',	'$',
/* 24 */	'%', 	'^', 	'&',	'*',	'(',	')',	'_',	'+',
/* 32 */	'~',	c('H'),	BUCKYBITS+METABIT,
					'7',	'8',	'9',	'-',	'\t',
/* 40 */	'Q',	'W',	'E',	'R',	'T',	'Y',	'U',	'I',
/* 48 */	'O',	'P',	'{',	'}',	0x7F,	'4',	'5',	'6',
/* 56 */	',',	SHIFTKEYS+LEFTCTRL,
				SHIFTKEYS+CAPSLOCK,
					'A',	'S',	'D',	'F',	'G',
/* 64 */	'H',	'J',	'K',	'L',	':',	'"',	'\r',	'|',
/* 72 */	'1',	'2',	'3',	NOP,	NOSCROLL,
							SHIFTKEYS+LEFTSHIFT,
							 	'Z',	'X',
/* 80 */	'C',	'V',	'B',	'N',	'M',	'<',	'>',	'?',
/* 88 */	SHIFTKEYS+RIGHTSHIFT,
			'\n',	'0',	HOLE,	'.',	'\r',	HOLE,	HOLE,
/* 96 */	HOLE,	HOLE,	' ',	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*104 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*112 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*120 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	IDLE,
};

/* Caps Locked keyboard table for "VT100 style" */

static struct keymap keytab_vt_cl = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*  8 */	HOLE, 	HOLE, 	STRING+UPARROW,
					STRING+DOWNARROW,
						STRING+LEFTARROW,
							STRING+RIGHTARROW,
								HOLE,	TF(1),
/* 16 */	TF(2),	TF(3),	TF(4),	c('['),	'1',	'2',	'3',	'4',
/* 24 */	'5', 	'6', 	'7',	'8',	'9',	'0',	'-',	'=',
/* 32 */	'`',	c('H'),	BUCKYBITS+METABIT,
					'7',	'8',	'9',	'-',	'\t',
/* 40 */	'Q',	'W',	'E',	'R',	'T',	'Y',	'U',	'I',
/* 48 */	'O',	'P',	'[',	']',	0x7F,	'4',	'5',	'6',
/* 56 */	',',	SHIFTKEYS+LEFTCTRL,
				SHIFTKEYS+CAPSLOCK,
					'A',	'S',	'D',	'F',	'G',
/* 64 */	'H',	'J',	'K',	'L',	';',	'\'',	'\r',	'\\',
/* 72 */	'1',	'2',	'3',	NOP,	NOSCROLL,
							SHIFTKEYS+LEFTSHIFT,
							 	'Z',	'X',
/* 80 */	'C',	'V',	'B',	'N',	'M',	',',	'.',	'/',
/* 88 */	SHIFTKEYS+RIGHTSHIFT,
			'\n',	'0',	HOLE,	'.',	'\r',	HOLE,	HOLE,
/* 96 */	HOLE,	HOLE,	' ',	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*104 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*112 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*120 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	IDLE,
};

/* Controlled keyboard table for "VT100 style" */

static struct keymap keytab_vt_ct = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*  8 */	HOLE, 	HOLE, 	STRING+UPARROW,
					STRING+DOWNARROW,
						STRING+LEFTARROW,
							STRING+RIGHTARROW,
								HOLE,	TF(1),
/* 16 */	TF(2),	TF(3),	TF(4),	c('['),	'1',	c('@'),	'3',	'4',
/* 24 */	'5',	c('^'),	'7',	'8',	'9',	'0',	c('_'),	'=',
/* 32 */	c('^'),	c('H'),	BUCKYBITS+METABIT,
					'7',	'8',	'9',	'-',	'\t',
/* 40 */	CTRLQ,	c('W'),	c('E'),	c('R'),	c('T'),	c('Y'),	c('U'),	c('I'),
/* 48 */	c('O'),	c('P'),	c('['),	c(']'),	0x7F,	'4',	'5',	'6',
/* 56 */	',',	SHIFTKEYS+LEFTCTRL,
				SHIFTKEYS+CAPSLOCK,
					c('A'),	CTRLS,	c('D'),	c('F'),	c('G'),
/* 64 */	c('H'),	c('J'),	c('K'),	c('L'),	':',	'"',	'\r',	c('\\'),
/* 72 */	'1',	'2',	'3',	NOP,	NOSCROLL,
							SHIFTKEYS+LEFTSHIFT,
							 	c('Z'),	c('X'),
/* 80 */	c('C'),	c('V'),	c('B'),	c('N'),	c('M'),	',',	'.',	c('_'),
/* 88 */	SHIFTKEYS+RIGHTSHIFT,
			'\n',	'0',	HOLE,	'.',	'\r',	HOLE,	HOLE,
/* 96 */	HOLE,	HOLE,	c(' '),	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*104 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*112 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*120 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	IDLE,
};


/* "Key Up" keyboard table for "VT100 style" */

static struct keymap keytab_vt_up = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*  8 */	HOLE, 	HOLE, 	NOP,	NOP,	NOP,	NOP,	HOLE,	OOPS,
/* 16 */	OOPS,	OOPS,	OOPS,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 24 */	NOP, 	NOP, 	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 32 */	NOP,	NOP,	BUCKYBITS+METABIT,
					NOP,	NOP,	NOP,	NOP,	NOP,
/* 40 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 48 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 56 */	NOP,	SHIFTKEYS+LEFTCTRL,
				SHIFTKEYS+CAPSLOCK,
					NOP,	NOP,	NOP,	NOP,	NOP,
/* 64 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 72 */	NOP,	NOP,	NOP,	NOP,	NOP,	SHIFTKEYS+LEFTSHIFT,
							 	NOP,	NOP,
/* 80 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 88 */	SHIFTKEYS+RIGHTSHIFT,
			NOP,	NOP,	HOLE,	NOP,	NOP,	HOLE,	HOLE,
/* 96 */	HOLE,	HOLE,	NOP,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*104 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*112 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,
/*120 */	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	HOLE,	RESET,
};


/* Index to keymaps for "VT100 style" keyboard */
static struct keyboard keyindex_vt = {
	&keytab_vt_lc,
	&keytab_vt_uc,
	&keytab_vt_cl,
	&keytab_vt_ct,
	&keytab_vt_up,
	CAPSMASK+CTLSMASK, 	/* Shift keys that stay on at idle keyboard */
	0x0000,		/* Bucky bits that stay on at idle keyboard */
	1,	59,	/* abort keys */
	0x0000,		/* Shift bits which toggle on down event */
};

/* Unshifted keyboard table for Sun-3 keyboard */

static struct keymap keytab_s3_lc = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				HOLE,	LF(2),	HOLE,	TF(1),	TF(2),	HOLE,
/*  8 */	TF(3), 	HOLE,	TF(4),	HOLE,	TF(5),	HOLE,	TF(6),	HOLE,
/* 16 */	TF(7),	TF(8),	TF(9),	ALT,	HOLE,	RF(1),	RF(2),	RF(3),
/* 24 */	HOLE, 	LF(3), 	LF(4),	HOLE,	HOLE,	c('['),	'1',	'2',
/* 32 */	'3',	'4',	'5',	'6',	'7',	'8',	'9',	'0',
/* 40 */	'-',	'=',	'`',	'\b',	HOLE,	RF(4),	RF(5),	RF(6),
/* 48 */	HOLE,	LF(5),	HOLE,	LF(6),	HOLE,	'\t',	'q',	'w',
/* 56 */	'e',	'r',	't',	'y',	'u',	'i',	'o',	'p',
/* 64 */	'[',	']',	0x7F,	HOLE,	RF(7),	STRING+UPARROW,
								RF(9),	HOLE,
/* 72 */	LF(7),	LF(8),	LF(14),	HOLE,	SHIFTKEYS+LEFTCTRL,
							'a', 	's',	'd',
/* 80 */	'f',	'g',	'h',	'j',	'k',	'l',	';',	'\'',
/* 88 */	'\\',	'\r',	HOLE,	STRING+LEFTARROW,
						RF(11),	STRING+RIGHTARROW,
								HOLE,	LF(9),
/* 96 */	LF(15),	LF(10),	HOLE,	SHIFTKEYS+LEFTSHIFT,
						'z',	'x',	'c',	'v',
/*104 */	'b',	'n',	'm',	',',	'.',	'/',	SHIFTKEYS+RIGHTSHIFT,
									'\n',
/*112 */	RF(13),	STRING+DOWNARROW,
				RF(15),	HOLE,	HOLE,	HOLE,	HOLE,	SHIFTKEYS+CAPSLOCK,
/*120 */	BUCKYBITS+METABIT,
			' ',	BUCKYBITS+METABIT,
					HOLE,	HOLE,	HOLE,	ERROR,	IDLE,
};

/* Shifted keyboard table for Sun-3 keyboard */

static struct keymap keytab_s3_uc = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				HOLE,	LF(2),	HOLE,	TF(1),	TF(2),	HOLE,
/*  8 */	TF(3), 	HOLE,	TF(4),	HOLE,	TF(5),	HOLE,	TF(6),	HOLE,
/* 16 */	TF(7),	TF(8),	TF(9),	ALT,	HOLE,	RF(1),	RF(2),	RF(3),
/* 24 */	HOLE, 	LF(3), 	LF(4),	HOLE,	HOLE,	c('['),	'!',    '@',
/* 32 */	'#',	'$',	'%',	'^',	'&',	'*',	'(',	')',
/* 40 */	'_',	'+',	'~',	'\b',	HOLE,	RF(4),	RF(5),	RF(6),
/* 48 */	HOLE,	LF(5),	HOLE,	LF(6),	HOLE,	'\t',	'Q',	'W',
/* 56 */	'E',	'R',	'T',	'Y',	'U',	'I',	'O',	'P',
/* 64 */	'{',	'}',	0x7F,	HOLE,	RF(7),	STRING+UPARROW,
								RF(9),	HOLE,
/* 72 */	LF(7),	LF(8),	HOLE,	HOLE,	SHIFTKEYS+LEFTCTRL,
							'A', 	'S',	'D',
/* 80 */	'F',	'G',	'H',	'J',	'K',	'L',	':',	'"',
/* 88 */	'|',	'\r',	HOLE,	STRING+LEFTARROW,
						RF(11),	STRING+RIGHTARROW,
								HOLE,	LF(9),
/* 96 */	LF(15),	LF(10),	HOLE,	SHIFTKEYS+LEFTSHIFT,
						'Z',	'X',	'C',	'V',
/*104 */	'B',	'N',	'M',	'<',	'>',	'?',	SHIFTKEYS+RIGHTSHIFT,
									'\n',
/*112 */	RF(13),	STRING+DOWNARROW,
				RF(15),	HOLE,	HOLE,	HOLE,	HOLE,	SHIFTKEYS+CAPSLOCK,
/*120 */	BUCKYBITS+METABIT,
			' ',	BUCKYBITS+METABIT,
					HOLE,	HOLE,	HOLE,	ERROR,	IDLE,
};


/* Caps Locked keyboard table for Sun-3 keyboard */

static struct keymap keytab_s3_cl = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				HOLE,	LF(2),	HOLE,	TF(1),	TF(2),	HOLE,
/*  8 */	TF(3), 	HOLE,	TF(4),	HOLE,	TF(5),	HOLE,	TF(6),	HOLE,
/* 16 */	TF(7),	TF(8),	TF(9),	ALT,	HOLE,	RF(1),	RF(2),	RF(3),
/* 24 */	HOLE, 	LF(3), 	LF(4),	HOLE,	HOLE,	c('['),	'1',	'2',
/* 32 */	'3',	'4',	'5',	'6',	'7',	'8',	'9',	'0',
/* 40 */	'-',	'=',	'`',	'\b',	HOLE,	RF(4),	RF(5),	RF(6),
/* 48 */	HOLE,	LF(5),	HOLE,	LF(6),	HOLE,	'\t',	'Q',	'W',
/* 56 */	'E',	'R',	'T',	'Y',	'U',	'I',	'O',	'P',
/* 64 */	'[',	']',	0x7F,	HOLE,	RF(7),	STRING+UPARROW,
								RF(9),	HOLE,
/* 72 */	LF(7),	LF(8),	HOLE,	HOLE,	SHIFTKEYS+LEFTCTRL,
							'A', 	'S',	'D',
/* 80 */	'F',	'G',	'H',	'J',	'K',	'L',	';',	'\'',
/* 88 */	'\\',	'\r',	HOLE,	STRING+LEFTARROW,
						RF(11),	STRING+RIGHTARROW,
								HOLE,	LF(9),
/* 96 */	LF(15),	LF(10),	HOLE,	SHIFTKEYS+LEFTSHIFT,
						'Z',	'X',	'C',	'V',
/*104 */	'B',	'N',	'M',	',',	'.',	'/',	SHIFTKEYS+RIGHTSHIFT,
									'\n',
/*112 */	RF(13),	STRING+DOWNARROW,
				RF(15),	HOLE,	HOLE,	HOLE,	HOLE,	SHIFTKEYS+CAPSLOCK,
/*120 */	BUCKYBITS+METABIT,
			' ',	BUCKYBITS+METABIT,
					HOLE,	HOLE,	HOLE,	ERROR,	IDLE,
};

/* Controlled keyboard table for Sun-3 keyboard */

static struct keymap keytab_s3_ct = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				HOLE,	LF(2),	HOLE,	TF(1),	TF(2),	HOLE,
/*  8 */	TF(3), 	HOLE,	TF(4),	HOLE,	TF(5),	HOLE,	TF(6),	HOLE,
/* 16 */	TF(7),	TF(8),	TF(9),	ALT,	HOLE,	RF(1),	RF(2),	RF(3),
/* 24 */	HOLE, 	LF(3), 	LF(4),	HOLE,	HOLE,	c('['),	'1',	c('@'),
/* 32 */	'3',	'4',	'5',	c('^'),	'7',	'8',	'9',	'0',
/* 40 */	c('_'),	'=',	c('^'),	'\b',	HOLE,	RF(4),	RF(5),	RF(6),
/* 48 */	HOLE,	LF(5),	HOLE,	LF(6),	HOLE,	'\t',   c('q'),	c('w'),
/* 56 */	c('e'),	c('r'),	c('t'),	c('y'),	c('u'),	c('i'),	c('o'),	c('p'),
/* 64 */	c('['),	c(']'),	0x7F,	HOLE,	RF(7),	STRING+UPARROW,
								RF(9),	HOLE,
/* 72 */	LF(7),	LF(8),	HOLE,	HOLE,	SHIFTKEYS+LEFTCTRL,
							c('a'),	c('s'),	c('d'),
/* 80 */	c('f'),	c('g'),	c('h'),	c('j'),	c('k'),	c('l'),	';',	'\'',
/* 88 */	c('\\'),
			'\r',	HOLE,	STRING+LEFTARROW,
						RF(11),	STRING+RIGHTARROW,
								HOLE,	LF(9),
/* 96 */	LF(15),	LF(10),	HOLE,	SHIFTKEYS+LEFTSHIFT,
						c('z'),	c('x'),	c('c'),	c('v'),
/*104 */	c('b'),	c('n'),	c('m'),	',',	'.',	c('_'),	SHIFTKEYS+RIGHTSHIFT,
									'\n',
/*112 */	RF(13),	STRING+DOWNARROW,
				RF(15),	HOLE,	HOLE,	HOLE,	HOLE,	SHIFTKEYS+CAPSLOCK,
/*120 */	BUCKYBITS+METABIT,
			c(' '),	BUCKYBITS+METABIT,
					HOLE,	HOLE,	HOLE,	ERROR,	IDLE,
};



/* "Key Up" keyboard table for Sun-3 keyboard */

static struct keymap keytab_s3_up = {
/*  0 */	HOLE,	BUCKYBITS+SYSTEMBIT,
				HOLE,	OOPS,	HOLE,	OOPS,	OOPS,	HOLE,
/*  8 */	OOPS, 	HOLE, 	OOPS,	HOLE,	OOPS,	HOLE,	OOPS,	HOLE,
/* 16 */	OOPS, 	OOPS, 	OOPS,	OOPS,	HOLE,	OOPS,	OOPS,	NOP,
/* 24 */	HOLE, 	OOPS, 	OOPS,	HOLE,	HOLE,	NOP,	NOP,	NOP,
/* 32 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 40 */	NOP,	NOP,	NOP,	NOP,	HOLE,	OOPS,	OOPS,	NOP,
/* 48 */	HOLE,	OOPS,	HOLE,	OOPS,	HOLE,	NOP,	NOP,	NOP,
/* 56 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 64 */	NOP,	NOP,	NOP,	HOLE,	OOPS,	OOPS,	NOP,	HOLE,
/* 72 */	OOPS,	OOPS,	HOLE,	HOLE,	SHIFTKEYS+LEFTCTRL,
							NOP, 	NOP,	NOP,
/* 80 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,
/* 88 */	NOP,	NOP,	HOLE,	OOPS,	OOPS,	NOP,	HOLE,	OOPS,
/* 96 */	OOPS,	OOPS,	HOLE,	SHIFTKEYS+LEFTSHIFT,
						NOP,	NOP,	NOP,	NOP,
/*104 */	NOP,	NOP,	NOP,	NOP,	NOP,	NOP,	SHIFTKEYS+RIGHTSHIFT,
									NOP,
/*112 */	OOPS,	OOPS,	NOP,	HOLE,	HOLE,	HOLE,	HOLE,	NOP,
/*120 */	BUCKYBITS+METABIT,
			NOP,	BUCKYBITS+METABIT,
					HOLE,	HOLE,	HOLE,	HOLE,	RESET,
};

/* Index to keymaps for Sun-3 keyboard */
static struct keyboard keyindex_s3 = {
	&keytab_s3_lc,
	&keytab_s3_uc,
	&keytab_s3_cl,
	&keytab_s3_ct,
	&keytab_s3_up,
	0x0000,		/* Shift bits which stay on with idle keyboard */
	0x0000,		/* Bucky bits which stay on with idle keyboard */
	1,	77,	/* abort keys */
	CAPSMASK,	/* Shift bits which toggle on down event */
};

/***************************************************************************/
/*   Index table for the whole shebang					   */
/***************************************************************************/
int nkeytables = 4;	/* max 16 */
struct keyboard *keytables[] = {
	&keyindex_ms,
	&keyindex_vt,
	&keyindex_s2,
	&keyindex_s3,
};

/* 
	Keyboard String Table

 	This defines the strings sent by various keys (as selected in the
	tables above).

	The first byte of each string is its length, the rest is data.
*/

#define	kstescinit(c)	{'\033', '[', 'c', '\0'}
char keystringtab[16][KTAB_STRLEN] = {
	kstescinit(H) /*home*/,
	kstescinit(A) /*up*/,
	kstescinit(B) /*down*/,
	kstescinit(D) /*left*/,
	kstescinit(C) /*right*/,
};

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.