1/*
2 * Keyboard mappings for DEC LK201/401/501 keyboards
3 *
4 * 17.05.99 Michael Engel (engel@unix-ag.org)
5 *
6 * DEC US keyboards generate keycodes in the range 0x55 - 0xfb
7 *
8 * This conflicts with Linux scancode conventions which define
9 * 0x00-0x7f as "normal" and 0x80-0xff as "shifted" scancodes, so we
10 * have to remap the keycodes to 0x00-0x7f with the scancodeRemap
11 * array. The generated scancode is simply the number of the key counted
12 * from the left upper to the right lower corner of the keyboard ...
13 *
14 * These scancodes are then being remapped (I hope ;-)) with the
15 * lk501*map[] arrays which define scancode -> Linux code mapping
16 *
17 * Oh man is this horrible ;-)
18 *
19 * Scancodes with dual labels exist for keyboards as follows:
20 *
21 * code:  left label          / right label
22 *
23 * 0x73:  LKx01, LK421        / LK443, LK444
24 * 0x74:  LKx01, LK421        / LK443, LK444
25 * 0x7c:  LKx01, LK421        / LK443, LK444
26 * 0x8a:  LKx01, LK421        / LK443, LK444
27 * 0x8b:  LKx01, LK421        / LK443, LK444
28 * 0x8c:  LKx01, LK421        / LK443, LK444
29 * 0x8d:  LKx01, LK421        / LK443, LK444
30 * 0x8e:  LKx01, LK421        / LK443, LK444
31 * 0x8f:  LKx01, LK421        / LK443, LK444
32 * 0x9c:  LKx01, LK421        / LK443, LK444
33 * 0xa1:  LKx01, LK421        / LK443, LK444
34 * 0xa2:  LKx01, LK421        / LK443, LK444
35 * 0xa3:  LKx01, LK421        / LK443, LK444
36 * 0xa4:  LKx01, LK421        / LK443, LK444
37 * 0xad:         LK421        / LK443, LK444
38 * 0xc9:  LKx01, LK421, LK443 /        LK444
39 * 0xf7:  LKx01,        LK443 /        LK444
40 */
41
42unsigned char scancodeRemap[256] = {
43/* ----- 								*/
44/*  0 */ 0,		0,		0,		0,
45/* ----- 								*/
46/*  4 */ 0,		0,		0,		0,
47/* ----- 								*/
48/*  8 */ 0,		0,		0,		0,
49/* ----- 								*/
50/*  c */ 0,		0,		0,		0,
51/* ----- 								*/
52/* 10 */ 0,		0,		0,		0,
53/* ----- 								*/
54/* 14 */ 0,		0,		0,		0,
55/* ----- 								*/
56/* 18 */ 0,		0,		0,		0,
57/* ----- 								*/
58/* 1c */ 0,		0,		0,		0,
59/* ----- 								*/
60/* 20 */ 0,		0,		0,		0,
61/* ----- 								*/
62/* 24 */ 0,		0,		0,		0,
63/* ----- 								*/
64/* 28 */ 0,		0,		0,		0,
65/* ----- 								*/
66/* 2c */ 0,		0,		0,		0,
67/* ----- 								*/
68/* 30 */ 0,		0,		0,		0,
69/* ----- 								*/
70/* 34 */ 0,		0,		0,		0,
71/* ----- 								*/
72/* 38 */ 0,		0,		0,		0,
73/* ----- 								*/
74/* 3c */ 0,		0,		0,		0,
75/* ----- 								*/
76/* 40 */ 0,		0,		0,		0,
77/* ----- 								*/
78/* 44 */ 0,		0,		0,		0,
79/* ----- 								*/
80/* 48 */ 0,		0,		0,		0,
81/* ----- 								*/
82/* 4c */ 0,		0,		0,		0,
83/* ----- 								*/
84/* 50 */ 0,		0,		0,		0,
85/* ----- 	 	ESC		F1		F2 		*/
86/* 54 */ 0,		0,		0x01,  		0x02,
87/* ----- F3		F4		F5				*/
88/* 58 */ 0x03,  	0x04,		0x05,		0,
89/* ----- 								*/
90/* 5c */ 0,		0,		0,		0,
91/* ----- 								*/
92/* 60 */ 0,		0,		0,		0,
93/* ----- F6		F7		F8		F9		*/
94/* 64 */ 0x06,		0x07,		0x08,		0x09,
95/* ----- F10								*/
96/* 68 */ 0x0a,		0,		0,		0,
97/* ----- 								*/
98/* 6c */ 0,		0,		0,		0,
99/* ----- 		F11   		F12		F13/PRNT SCRN	*/
100/* 70 */ 0,		0x0b,  		0x0c,		0x0d,
101/* ----- F14/SCRL LCK							*/
102/* 74 */ 0x0e,		0,		0,		0,
103/* ----- 								*/
104/* 78 */ 0,		0,		0,		0,
105/* ----- HELP/PAUSE	DO						*/
106/* 7c */ 0x0f,		0x10,		0,		0,
107/* ----- F17		F18		F19		F20		*/
108/* 80 */ 0x11,		0x12,		0x13,		0x14,
109/* ----- 								*/
110/* 84 */ 0,		0,		0,		0,
111/* ----- 				FIND/INSERT	INSERT/HOME	*/
112/* 88 */ 0,		0,		0x23,		0x24,
113/* ----- REMOVE/PG UP	SELECT/DELETE	PREVIOUS/END	NEXT/PG DN	*/
114/* 8c */ 0x25,		0x38,		0x39,		0x3a,
115/* ----- 				KP 0				*/
116/* 90 */ 0,		0,		0x6b,		0,
117/* ----- KP .		KP ENTER	KP 1		KP 2		*/
118/* 94 */ 0x6c,		0x65,		0x62,		0x63,
119/* ----- KP 3		KP 4		KP 5		KP 6		*/
120/* 98 */ 0x64,		0x4e,		0x4f,		0x50,
121/* ----- KP ,/KP +	KP 7		KP 8		KP 9		*/
122/* 9c */ 0x51,		0x3b,		0x3c,		0x3d,
123/* ----- KP -		KP F1/NUM LCK	KP F2/KP /	KP F3/KP *	*/
124/* a0 */ 0x3e,		0x26,		0x27,		0x28,
125/* ----- KP F4/KP -					LEFT		*/
126/* a4 */ 0x29,		0,		0,		0x5f,
127/* ----- RIGHT		DOWN		UP		SHIFT Rt	*/
128/* a8 */ 0x61,		0x60, 		0x4d,		0x5e,
129/* ----- ALT		COMP Rt/CTRL Rt	SHIFT		CONTROL		*/
130/* ac */ 0,		0,		0x52,		0x3f,
131/* ----- CAPS		COMPOSE		ALT Rt				*/
132/* b0 */ 0x40,		0x67,		0,		0,
133/* ----- 								*/
134/* b4 */ 0,		0,		0,		0,
135/* ----- 								*/
136/* b8 */ 0,		0,		0,		0,
137/* ----- BKSP		RET		TAB		`		*/
138/* bc */ 0x22,		0x37,		0x2a,		0x15,
139/* ----- 1		q		a		z		*/
140/* c0 */ 0x16,		0x2b,		0x41,		0x54,
141/* ----- 		2		w		s		*/
142/* c4 */ 0,		0x17,		0x2c,		0x42,
143/* ----- x		</\\				3		*/
144/* c8 */ 0x55,		0x53,		0,		0x18,
145/* ----- e		d		c				*/
146/* cc */ 0x2d,		0x43,		0x56,		0,
147/* ----- 4		r		f		v		*/
148/* d0 */ 0x19,		0x2e,		0x44,		0x57,
149/* ----- SPACE				5		t		*/
150/* d4 */ 0x68,		0,		0x1a,		0x2f,
151/* ----- g		b				6		*/
152/* d8 */ 0x45,		0x58,		0,		0x1b,
153/* ----- y		h		n				*/
154/* dc */ 0x30,		0x46,		0x59,		0,
155/* ----- 7		u		j		m		*/
156/* e0 */ 0x1c,		0x31,		0x47,		0x5a,
157/* ----- 		8		i		k		*/
158/* e4 */ 0,		0x1d,		0x32,		0x48,
159/* ----- ,				9		o		*/
160/* e8 */ 0x5b,		0,		0x1e,		0x33,
161/* ----- l		.				0		*/
162/* ec */ 0x49,		0x5c,		0,		0x1f,
163/* ----- p				;		/		*/
164/* f0 */ 0x34,		0,		0x4a,		0x5d,
165/* ----- 		=		]		\\/\'		*/
166/* f4 */ 0,		0x21,		0x36,		0x4c,
167/* ----- 		-		[		\'		*/
168/* f8 */ 0,		0x20,		0x35,		0x4b,
169/* ----- 								*/
170/* fc */ 0,		0,		0,		0,
171};
172