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