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 
42 unsigned 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 
173