xref: /original-bsd/sys/hp/dev/hil_keymaps.c (revision e718337e)
1 /*
2  * Copyright (c) 1988 University of Utah.
3  * Copyright (c) 1990 The Regents of the University of California.
4  * All rights reserved.
5  *
6  * This code is derived from software contributed to Berkeley by
7  * the Systems Programming Group of the University of Utah Computer
8  * Science Department.
9  *
10  * %sccs.include.redist.c%
11  *
12  * from: Utah $Hdr: hil_keymaps.c 1.1 90/07/09$
13  *
14  *	@(#)hil_keymaps.c	7.2 (Berkeley) 11/04/90
15  */
16 
17 /*
18  * Keymaps for various HP-HIL keyboard layouts.
19  * These tables apply only to keyboards in "cooked" mode.
20  * Currently only one is supported as an ITE keyboard.
21  *
22  * Maps are indexed by cooked keycode and contain the ASCII
23  * character for that keycode.  The map-set used depends on the
24  * keyboard "language".  The map used within that set depends on
25  * the shift/control status that is returned by the hardware along
26  * with the keycode.  If an entry is NULL for a key in the appropriate
27  * unshifted, shifted, control, or control-shifted table, then a
28  * single "string" table is consulted.  In this fashion, a multi-
29  * character sequence can be returned for a key press.  Note that
30  * control/shift status have no effect on multi-character lookup
31  * (i.e. there is only one string table per set, not four).
32  *
33  * Someday we could allow user-definable keymaps, but we would have
34  * to come up with a better format (at least externally).  This
35  * format takes up lots of space.  Having keymaps for all 18 or so
36  * HP supported layouts would be bad news.
37  */
38 #include "param.h"
39 #include "kbdmap.h"
40 
41 char	us_keymap[] = {
42 	NULL,	'`',	'\\',	ESC,	NULL,	DEL,	NULL,	NULL,
43 	'\n',	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
44 	NULL,	'\n',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
45 	NULL,	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
46 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
47 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	'\b',	NULL,
48 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
49 	ESC,	'\r',	NULL,	'\n',	'0',	'.',	',',	'+',
50 	'1',	'2',	'3',	'-',	'4',	'5',	'6',	'*',
51 	'7',	'8',	'9',	'/',	'E',	'(',	')',	'^',
52 	'1',	'2',	'3',	'4',	'5',	'6',	'7',	'8',
53 	'9',	'0',	'-',	'=',	'[',	']',	';',	'\'',
54 	',',	'.',	'/',	'\040',	'o',	'p',	'k',	'l',
55 	'q',	'w',	'e',	'r',	't',	'y',	'u',	'i',
56 	'a',	's',	'd',	'f',	'g',	'h',	'j',	'm',
57 	'z',	'x',	'c',	'v',	'b',	'n',	NULL,	NULL
58 };
59 
60 char	us_shiftmap[] = {
61 	NULL,	'~',	'|',	DEL,	NULL,	DEL,	NULL,	NULL,
62 	'\n',	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
63 	NULL,	'\n',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
64 	NULL,	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
65 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
66 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	DEL,	NULL,
67 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
68 	ESC,	'\r',	NULL,	'\n',	'0',	'.',	',',	'+',
69 	'1',	'2',	'3',	'-',	'4',	'5',	'6',	'*',
70 	'7',	'8',	'9',	'/',	'`',	'|',	'\\',	'~',
71 	'!',	'@',	'#',	'$',	'%',	'^',	'&',	'*',
72 	'(',	')',	'_',	'+',	'{',	'}',	':',	'\"',
73 	'<',	'>',	'?',	'\040',	'O',	'P',	'K',	'L',
74 	'Q',	'W',	'E',	'R',	'T',	'Y',	'U',	'I',
75 	'A',	'S',	'D',	'F',	'G',	'H',	'J',	'M',
76 	'Z',	'X',	'C',	'V',	'B',	'N',	NULL,	NULL
77 };
78 
79 char	us_ctrlmap[] = {
80 	NULL,	'`',	'\034',	ESC,	NULL,	DEL,	NULL,	NULL,
81 	'\n',	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
82 	NULL,	'\n',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
83 	NULL,	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
84 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
85 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	'\b',	NULL,
86 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
87 	ESC,	'\r',	NULL,	'\n',	'0',	'.',	',',	'+',
88 	'1',	'2',	'3',	'-',	'4',	'5',	'6',	'*',
89 	'7',	'8',	'9',	'/',	'E',	'(',	')',	'\036',
90 	'1',	'2',	'3',	'4',	'5',	'6',	'7',	'8',
91 	'9',	'0',	'-',	'=',	'\033',	'\035',	';',	'\'',
92 	',',	'.',	'/',	'\040',	'\017',	'\020',	'\013',	'\014',
93 	'\021',	'\027',	'\005',	'\022',	'\024',	'\031',	'\025',	'\011',
94 	'\001',	'\023',	'\004',	'\006',	'\007',	'\010',	'\012',	'\015',
95 	'\032',	'\030',	'\003',	'\026',	'\002',	'\016',	NULL,	NULL
96 };
97 
98 char	us_ctrlshiftmap[] = {
99 	NULL,	'~',	'|',	DEL,	NULL,	DEL,	NULL,	NULL,
100 	'\n',	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
101 	NULL,	'\n',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
102 	NULL,	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
103 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
104 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	DEL,	NULL,
105 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
106 	ESC,	'\r',	NULL,	'\n',	'0',	'.',	',',	'+',
107 	'1',	'2',	'3',	'-',	'4',	'5',	'6',	'*',
108 	'7',	'8',	'9',	'/',	'`',	'|',	'\034',	'~',
109 	'!',	'\000',	'#',	'$',	'%',	'\036',	'&',	'*',
110 	'(',	')',	'\037',	'+',	'{',	'}',	':',	'\"',
111 	'<',	'>',	'?',	'\040',	'\017',	'\020',	'\013',	'\014',
112 	'\021',	'\027',	'\005',	'\022',	'\024',	'\031',	'\025',	'\011',
113 	'\001',	'\023',	'\004',	'\006',	'\007',	'\010',	'\012',	'\015',
114 	'\032',	'\030',	'\003',	'\026',	'\002',	'\016',	NULL,	NULL
115 };
116 
117 char	*us_stringmap[] = {
118 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
119 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	"\033V","\033h",
120 	"\033U",NULL,	NULL,	NULL,	NULL,	NULL,	"\033K","\033J",
121 	NULL,	NULL,	NULL,	"\033p","\033q","\033t","\033u","\033v",
122 	"\033r","\033s","\033B","\033A","\033w",NULL,	"\033D","\033C",
123 	"\033L","\033M",NULL,	NULL,	"\033P",NULL,	NULL,	NULL,
124 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
125 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
126 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
127 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
128 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
129 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
130 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
131 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
132 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
133 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL
134 };
135 
136 #ifdef UK_KEYBOARD
137 char	uk_keymap[] = {
138 	NULL,	'`',	'<',	ESC,	NULL,	DEL,	NULL,	NULL,
139 	'\n',	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
140 	NULL,	'\n',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
141 	NULL,	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
142 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
143 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	'\b',	NULL,
144 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
145 	ESC,	'\r',	NULL,	'\n',	'0',	'.',	',',	'+',
146 	'1',	'2',	'3',	'-',	'4',	'5',	'6',	'*',
147 	'7',	'8',	'9',	'/',	'E',	'(',	')',	'^',
148 	'1',	'2',	'3',	'4',	'5',	'6',	'7',	'8',
149 	'9',	'0',	'+',	'\'',	'[',	']',	'*',	'\\',
150 	',',	'.',	'-',	'\040',	'o',	'p',	'k',	'l',
151 	'q',	'w',	'e',	'r',	't',	'y',	'u',	'i',
152 	'a',	's',	'd',	'f',	'g',	'h',	'j',	'm',
153 	'z',	'x',	'c',	'v',	'b',	'n',	NULL,	NULL
154 };
155 
156 char	uk_shiftmap[] = {
157 	NULL,	'~',	'>',	DEL,	NULL,	DEL,	NULL,	NULL,
158 	'\n',	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
159 	NULL,	'\n',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
160 	NULL,	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
161 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
162 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	DEL,	NULL,
163 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
164 	ESC,	'\r',	NULL,	'\n',	'0',	'.',	',',	'+',
165 	'1',	'2',	'3',	'-',	'4',	'5',	'6',	'*',
166 	'7',	'8',	'9',	'/',	'`',	'|',	'\\',	'~',
167 	'!',	'\"',	'#',	'$',	'%',	'&',	'^',	'(',
168 	')',	'=',	'?',	'/',	'{',	'}',	'@',	'|',
169 	';',	':',	'_',	'\040',	'O',	'P',	'K',	'L',
170 	'Q',	'W',	'E',	'R',	'T',	'Y',	'U',	'I',
171 	'A',	'S',	'D',	'F',	'G',	'H',	'J',	'M',
172 	'Z',	'X',	'C',	'V',	'B',	'N',	NULL,	NULL
173 };
174 
175 char	uk_ctrlmap[] = {
176 	NULL,	'`',	'<',	ESC,	NULL,	DEL,	NULL,	NULL,
177 	'\n',	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
178 	NULL,	'\n',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
179 	NULL,	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
180 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
181 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	'\b',	NULL,
182 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
183 	ESC,	'\r',	NULL,	'\n',	'0',	'.',	',',	'+',
184 	'1',	'2',	'3',	'-',	'4',	'5',	'6',	'*',
185 	'7',	'8',	'9',	'/',	'E',	'(',	')',	'\036',
186 	'1',	'2',	'3',	'4',	'5',	'6',	'7',	'8',
187 	'9',	'0',	'+',	'\'',	'\033',	'\035',	'*',	'\034',
188 	',',	'.',	'/',	'\040',	'\017',	'\020',	'\013',	'\014',
189 	'\021',	'\027',	'\005',	'\022',	'\024',	'\031',	'\025',	'\011',
190 	'\001',	'\023',	'\004',	'\006',	'\007',	'\010',	'\012',	'\015',
191 	'\032',	'\030',	'\003',	'\026',	'\002',	'\016',	NULL,	NULL
192 };
193 
194 char	uk_ctrlshiftmap[] = {
195 	NULL,	'~',	'>',	DEL,	NULL,	DEL,	NULL,	NULL,
196 	'\n',	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
197 	NULL,	'\n',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
198 	NULL,	'\t',	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
199 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
200 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	DEL,	NULL,
201 	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,	NULL,
202 	ESC,	'\r',	NULL,	'\n',	'0',	'.',	',',	'+',
203 	'1',	'2',	'3',	'-',	'4',	'5',	'6',	'*',
204 	'7',	'8',	'9',	'/',	'`',	'|',	'\034',	'~',
205 	'!',	'\"',	'#',	'$',	'%',	'&',	'\036',	'(',
206 	')',	'=',	'?',	'/',	'{',	'}',	'\000',	'|',
207 	';',	':',	'\037',	'\040',	'\017',	'\020',	'\013',	'\014',
208 	'\021',	'\027',	'\005',	'\022',	'\024',	'\031',	'\025',	'\011',
209 	'\001',	'\023',	'\004',	'\006',	'\007',	'\010',	'\012',	'\015',
210 	'\032',	'\030',	'\003',	'\026',	'\002',	'\016',	NULL,	NULL
211 };
212 #endif
213 
214 /*
215  * The keyboard map table.
216  * Lookup is by hardware returned language code.
217  */
218 struct kbdmap kbd_map[] = {
219 	KBD_US,		"US ASCII",
220 	us_keymap,	us_shiftmap,	us_ctrlmap,	us_ctrlshiftmap,
221 	us_stringmap,
222 
223 #ifdef UK_KEYBOARD
224 	KBD_UK,		"United Kingdom",
225 	uk_keymap,	uk_shiftmap,	uk_ctrlmap,	uk_ctrlshiftmap,
226 	us_stringmap,
227 #endif
228 
229 	0,		NULL,
230 	NULL,		NULL,		NULL,		NULL,
231 	NULL,
232 };
233