kernel reorg
[unix-history] / usr / src / sys / hp / dev / hil_keymaps.c
CommitLineData
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
40char 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
59char 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
78char 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
97char 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
116char *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
136char 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
155char 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
174char 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
193char 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 */
217struct 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};