xref: /csrg-svn/sys/news3400/bm/keyconf.c (revision 63252)
153889Smckusick /*
2*63252Sbostic  * Copyright (c) 1992, 1993
3*63252Sbostic  *	The Regents of the University of California.  All rights reserved.
453889Smckusick  *
553889Smckusick  * This code is derived from software contributed to Berkeley by
653889Smckusick  * Sony Corp. and Kazumasa Utashiro of Software Research Associates, Inc.
753889Smckusick  *
853889Smckusick  * %sccs.include.redist.c%
953889Smckusick  *
1053889Smckusick  * from: $Hdr: keyconf.c,v 4.300 91/06/09 06:14:53 root Rel41 $ SONY
1153889Smckusick  *
12*63252Sbostic  *	@(#)keyconf.c	8.1 (Berkeley) 06/10/93
1353889Smckusick  */
1453889Smckusick 
1553889Smckusick #ifdef CPU_DOUBLE
1657177Sutashiro #include <news3400/iop/keyboard.h>
1757177Sutashiro #include <news3400/iop/kbreg.h>
1853889Smckusick #else
1957177Sutashiro #include <news3400/iop/keyboard.h>
2057177Sutashiro #include <news3400/iop/kbreg.h>
2153889Smckusick #endif
2253889Smckusick 
2353889Smckusick #ifndef NULL
2453889Smckusick #define	    NULL	(char *)0
2553889Smckusick #endif /* NULL */
2653889Smckusick 
2753889Smckusick Pfk_table pfk_init[] = {
2853889Smckusick /* 00 */	/*	*/	0,	0,	NULL,	0,	NULL,
2953889Smckusick /* 01 */	/* F1	*/	1,	3,  "\033OP",	0,	NULL,
3053889Smckusick /* 02 */	/* F2	*/	2,	3,  "\033OQ",	0,	NULL,
3153889Smckusick /* 03 */	/* F3	*/	3,	3,  "\033OR",	0,	NULL,
3253889Smckusick /* 04 */	/* F4	*/	4,	3,  "\033OS",	0,	NULL,
3353889Smckusick /* 05 */	/* F5	*/	5,	3,  "\033OT",	0,	NULL,
3453889Smckusick /* 06 */	/* F6	*/	6,	3,  "\033OU",	0,	NULL,
3553889Smckusick /* 07 */	/* F7	*/	7,	3,  "\033OV",	0,	NULL,
3653889Smckusick /* 08 */	/* F8	*/	8,	3,  "\033OW",	0,	NULL,
3753889Smckusick /* 09 */	/* F9	*/	9,	3,  "\033OX",	0,	NULL,
3853889Smckusick /* 10 */	/* F10	*/	10,	3,  "\033OY",	0,	NULL,
3953889Smckusick /* 11 */	/* PF1	*/	12,	0,	NULL,	0,	NULL,
4053889Smckusick /* 12 */	/* PF2	*/	13,	0,	NULL,	0,	NULL,
4153889Smckusick /* 13 */	/* PF3	*/	14,	0,	NULL,	0,	NULL,
4253889Smckusick /* 14 */	/* PF4	*/	15,	0,	NULL,	0,	NULL,
4353889Smckusick /* 15 */	/* PF5	*/	16,	0,	NULL,	0,	NULL,
4453889Smckusick /* 16 */	/* PF6	*/	17,	0,	NULL,	0,	NULL,
4553889Smckusick /* 17 */	/* PF7	*/	18,	0,	NULL,	0,	NULL,
4653889Smckusick /* 18 */	/* PF8	*/	19,	0,	NULL,	0,	NULL,
4753889Smckusick /* 19 */	/* PF9	*/	20,	0,	NULL,	0,	NULL,
4853889Smckusick /* 20 */	/* PF10	*/	21,	0,	NULL,	0,	NULL,
4953889Smckusick /* 21 */	/* PF11	*/	22,	0,	NULL,	0,	NULL,
5053889Smckusick /* 22 */	/* PF12	*/	23,	0,	NULL,	0,	NULL,
5153889Smckusick /* 23 */	/* ncnv	*/	69,	0,	NULL,	0,	NULL,
5253889Smckusick /* 24 */	/* conv	*/	71,	0,	NULL,	0,	NULL,
5353889Smckusick /* 25 */	/* enter*/	74,	0,	NULL,	0,	NULL,
5453889Smckusick /* 26 */	/* 0	*/	87,	1,	"0",	1,	"0",
5553889Smckusick /* 27 */	/* 1	*/	83,	1,	"1",	1,	"1",
5653889Smckusick /* 28 */	/* 2	*/	84,	1,	"2",	1,	"2",
5753889Smckusick /* 29 */	/* 3	*/	85,	1,	"3",	1,	"3",
5853889Smckusick /* 30 */	/* 4	*/	79,	1,	"4",	1,	"4",
5953889Smckusick /* 31 */	/* 5	*/	80,	1,	"5",	1,	"5",
6053889Smckusick /* 32 */	/* 6	*/	81,	1,	"6",	1,	"6",
6153889Smckusick /* 33 */	/* 7	*/	75,	1,	"7",	1,	"7",
6253889Smckusick /* 34 */	/* 8	*/	76,	1,	"8",	1,	"8",
6353889Smckusick /* 35 */	/* 9	*/	77,	1,	"9",	1,	"9",
6453889Smckusick /* 36 */	/* .	*/	89,	1,	".",	1,	".",
6553889Smckusick /* 37 */	/* -	*/	78,	1,	"-",	1,	"/",
6653889Smckusick /* 38 */	/* +	*/	82,	1,	"+",	1,	"*",
6753889Smckusick /* 39 */	/* ,	*/	86,	1,	",",	1,	"=",
6853889Smckusick /* 40 */	/*nenter*/	90,	1,	"\r",	1,	"\r",
6953889Smckusick /* 41 */	/* up	*/	88,	3,  "\033[A",	3,  "\033[A",
7053889Smckusick /* 42 */	/* down	*/	92,	3,  "\033[B",	3,  "\033[B",
7153889Smckusick /* 43 */	/* rignt*/	93,	3,  "\033[C",	3,  "\033[C",
7253889Smckusick /* 44 */	/* left	*/	91,	3,  "\033[D",	3,  "\033[D",
7353889Smckusick };
7453889Smckusick 
7553889Smckusick Key_table default_table[] = {
7653889Smckusick /*	key_flags		normal	shift	ctrl	alt	kana	kshft */
7753889Smckusick /*  0*/	0,			0,	0,	0,	0,	0,	0,
7853889Smckusick /*  1*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
7953889Smckusick /*  2*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
8053889Smckusick /*  3*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
8153889Smckusick /*  4*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
8253889Smckusick /*  5*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
8353889Smckusick /*  6*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
8453889Smckusick /*  7*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
8553889Smckusick /*  8*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
8653889Smckusick /*  9*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
8753889Smckusick /* 10*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
8853889Smckusick /* 11*/	N|S|C|K|J|O,		0x1b,	0x1b,	0x1b,	0,	0x1b,	0x1b,
8953889Smckusick /* 12*/	N|S|K|L|ALT_FUNC,	'1',	'!',	0,	0,	0xc7,	0,
9053889Smckusick /* 13*/ N|S|C|K|L|ALT_FUNC,	'2',	'@',	0x00,	0,	0xcc,	0,
9153889Smckusick /* 14*/	N|S|C|K|J|L|ALT_FUNC,	'3',	'#',	0x1b,	0,	0xb1,	0xa7,
9253889Smckusick /* 15*/	N|S|C|K|J|L|ALT_FUNC,	'4',	'$',	0x1c,	0,	0xb3,	0xa9,
9353889Smckusick /* 16*/	N|S|C|K|J|L|ALT_FUNC,	'5',	'%',	0x1d,	0,	0xb4,	0xaa,
9453889Smckusick /* 17*/	N|S|C|K|J|R|ALT_FUNC,	'6',	'^',	0x1e,	0,	0xb5,	0xab,
9553889Smckusick /* 18*/	N|S|C|K|J|R|ALT_FUNC,	'7',	'&',	0x1f,	0,	0xd4,	0xac,
9653889Smckusick /* 19*/	N|S|C|K|J|R|ALT_FUNC,	'8',	'*',	0x0f,	0,	0xd5,	0xad,
9753889Smckusick /* 20*/	N|S|K|K|J|R|ALT_FUNC,	'9',	'(',	0,	0,	0xd6,	0xae,
9853889Smckusick /* 21*/ N|S|K|K|J|R|ALT_FUNC,	'0',	')',	0,	0,	0xdc,	0xa6,
9953889Smckusick /* 22*/ N|S|K|R|ALT_FUNC,	'-',	'_',	0,	0,	0xce,	0,
10053889Smckusick /* 23*/ N|S|K|R|ALT_FUNC,	'=',	'+',	0,	0,	0xcd,	0,
10153889Smckusick /* 24*/	N|S|C|L,		'\\',	'|',	0x1c,	0,	0,	0,
10253889Smckusick /* 25*/ N|S|C|K|J|O,		'\b',	'\b',	'\b',	0,	'\b',	'\b',
10353889Smckusick /* 26*/	N|S|C|K|J|O,		'\t',	'\t',	'\t',	0,	'\t',	'\t',
10453889Smckusick /* 27*/	N|S|C|K|L|CAP_LOCK,	'q',	'Q',	0x11,	0,	0xc0,	0,
10553889Smckusick /* 28*/	N|S|C|K|L|CAP_LOCK,	'w',	'W',	0x17,	0,	0xc3,	0,
10653889Smckusick /* 29*/	N|S|C|K|L|J|CAP_LOCK,	'e',	'E',	0x05,	0,	0xb2,	0xa8,
10753889Smckusick /* 30*/	N|S|C|K|L|CAP_LOCK,	'r',	'R',	0x12,	0,	0xbd,	0,
10853889Smckusick /* 31*/	N|S|C|K|L|CAP_LOCK,	't',	'T',	0x14,	0,	0xb6,	0,
10953889Smckusick /* 32*/	N|S|C|K|R|CAP_LOCK,	'y',	'Y',	0x19,	0,	0xdd,	0,
11053889Smckusick /* 33*/	N|S|C|K|R|CAP_LOCK,	'u',	'U',	0x15,	0,	0xc5,	0,
11153889Smckusick /* 34*/	N|S|C|K|R|CAP_LOCK,	'i',	'I',	'\t',	0,	0xc6,	0,
11253889Smckusick /* 35*/	N|S|C|K|R|CAP_LOCK,	'o',	'O',	0x0f,	0,	0xd7,	0,
11353889Smckusick /* 36*/	N|S|C|K|R|CAP_LOCK,	'p',	'P',	0x10,	0,	0xbe,	0,
11453889Smckusick /* 37*/	N|S|C|K|R,		'[',	'{',	0x1b,	0,	0xde,	0,
11553889Smckusick /* 38*/	N|S|C|K|R|J,		']',	'}',	0x1d,	0,	0xdf,	0xa2,
11653889Smckusick /* 39*/	N|C|K|O,		0x7f,	0,	0x7f,	0,	0x7f,	0,
11753889Smckusick /* 40*/	PSH_SHFT,		S_CTRL,	0,	0,	0,	0,	0,
11853889Smckusick /* 41*/	N|S|C|K|L|CAP_LOCK,	'a',	'A',	0x01,	0,	0xc1,	0,
11953889Smckusick /* 42*/	N|S|C|K|L|CAP_LOCK,	's',	'S',	0x13,	0,	0xc4,	0,
12053889Smckusick /* 43*/	N|S|C|K|L|CAP_LOCK,	'd',	'D',	0x04,	0,	0xbc,	0,
12153889Smckusick /* 44*/	N|S|C|K|L|CAP_LOCK,	'f',	'F',	0x06,	0,	0xca,	0,
12253889Smckusick /* 45*/	N|S|C|K|L|CAP_LOCK,	'g',	'G',	0x07,	0,	0xb7,	0,
12353889Smckusick /* 46*/	N|S|C|K|R|CAP_LOCK,	'h',	'H',	'\b',	0,	0xb8,	0,
12453889Smckusick /* 47*/	N|S|C|K|R|CAP_LOCK,	'j',	'J',	'\n',	0,	0xcf,	0,
12553889Smckusick /* 48*/	N|S|C|K|R|CAP_LOCK,	'k',	'K',	0x0b,	0,	0xc9,	0,
12653889Smckusick /* 49*/	N|S|C|K|R|CAP_LOCK,	'l',	'L',	'\f',	0,	0xd8,	0,
12753889Smckusick /* 50*/	N|S|K|R,		';',	':',	0,	0,	0xda,	0,
12853889Smckusick /* 51*/	N|S|K|L,		'\'',	'"',	0,	0,	0xb9,	0,
12953889Smckusick /* 52*/	N|S|C|K|L|J,		'`',	'~',	0x1e,	0,	0xd1,	0xa3,
13053889Smckusick /* 53*/	N|S|C|K|J|O,		'\r',	'\r',	'\r',	0,	'\r',	'\r',
13153889Smckusick /* 54*/	PSH_SHFT,		S_LSHFT,0,	0,	0,	0,	0,
13253889Smckusick /* 55*/	N|S|C|K|J|L|CAP_LOCK,	'z',	'Z',	0x1a,	0,	0xc2,	0xaf,
13353889Smckusick /* 56*/	N|S|C|K|L|CAP_LOCK,	'x',	'X',	0x18,	0,	0xbb,	0,
13453889Smckusick /* 57*/	N|S|C|K|L|CAP_LOCK,	'c',	'C',	0x03,	0,	0xbf,	0,
13553889Smckusick /* 58*/	N|S|C|K|L|CAP_LOCK,	'v',	'V',	0x16,	0,	0xcb,	0,
13653889Smckusick /* 59*/	N|S|C|K|L|CAP_LOCK,	'b',	'B',	0x02,	0,	0xba,	0,
13753889Smckusick /* 60*/	N|S|C|K|R|CAP_LOCK,	'n',	'N',	0x0e,	0,	0xd0,	0,
13853889Smckusick /* 61*/	N|S|C|K|R|CAP_LOCK,	'm',	'M',	'\r',	0,	0xd3,	0,
13953889Smckusick /* 62*/	N|S|K|J|R,		',',	'<',	0,	0,	0xc8,	0xa4,
14053889Smckusick /* 63*/	N|S|K|J|R,		'.',	'>',	0,	0,	0xd9,	0xa1,
14153889Smckusick /* 64*/	N|S|C|K|J|R,		'/',	'?',	0x1f,	0,	0xd2,	0xa5,
14253889Smckusick /* 65*/	K|J,			0,	0,	0,	0,	0xdb,	0xb0,
14353889Smckusick /* 66*/	PSH_SHFT,		S_RSHFT,0,	0,	0,	0,	0,
14453889Smckusick /* 67*/	PSH_SHFT|NOT_REPT,	S_ALT,	0,	0,	0,	0,	0,
14553889Smckusick /* 68*/	PSH_SHFT|NOT_REPT,	S_CAPS,	0,	0,	0,	0,	0,
14653889Smckusick /* 69*/	PRG_FUNC|NOT_REPT,	0,	0,	0,	0,	0,	0,
14753889Smckusick /* 70*/	N|S|C|K|J|O,		' ',	' ',	0x00,	0,	' ',	' ',
14853889Smckusick /* 71*/	PRG_FUNC|NOT_REPT,	0,	0,	0,	0,	0,	0,
14953889Smckusick /* 72*/	SW_SHFT|NOT_REPT,	S_AN,	0,	0,	0,	0,	0,
15053889Smckusick /* 73*/	SW_SHFT|NOT_REPT,	S_KANA,	0,	0,	0,	0,	0,
15153889Smckusick /* 74*/	PRG_FUNC|NOT_REPT,	0,	0,	0,	0,	0,	0,
15253889Smckusick /* 75*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
15353889Smckusick /* 76*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
15453889Smckusick /* 77*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
15553889Smckusick /* 78*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
15653889Smckusick /* 79*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
15753889Smckusick /* 80*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
15853889Smckusick /* 81*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
15953889Smckusick /* 82*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
16053889Smckusick /* 83*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
16153889Smckusick /* 84*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
16253889Smckusick /* 85*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
16353889Smckusick /* 86*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
16453889Smckusick /* 87*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
16553889Smckusick /* 88*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
16653889Smckusick /* 89*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
16753889Smckusick /* 90*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
16853889Smckusick /* 91*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
16953889Smckusick /* 92*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
17053889Smckusick /* 93*/	PRG_FUNC,		0,	0,	0,	0,	0,	0,
17153889Smckusick };
17253889Smckusick 
17353889Smckusick #define	PFK_SIZE	sizeof(pfk_init)/sizeof(Pfk_table)
17453889Smckusick int N_Pfk = PFK_SIZE;
17553889Smckusick Pfk_table pfk_table[PFK_SIZE];
176