|
|
1.1 root 1: /* (-lgl
2: * COHERENT Version 4.0
3: * Copyright (c) 1982, 1992 by Mark Williams Company.
4: * All rights reserved. May not be copied without permission.
5: -lgl) */
6: /*
7: * Virtual console keyboard code table.
8: *
9: * See header files for definitions and constants.
10: *
11: * Version: 1.2, 07/01/91
12: * Version: 1.3, 06/25/92
13: * Version: 1.4, 07/09/92
14: * Version: 1.5, 06/14/93
15: * Version: 1.6, 09/01/93
16: */
17: #include <sys/kbscan.h>
18: #include <sys/kb.h>
19:
20: char tbl_name[] = "U.S. virtual console keyboard table - V1.6";
21:
22: #define A 0x80 |
23: #define CSI "\x1B["
24: #define END "\xFF"
25:
26: KBTBL kbtbl[] = {
27: /* AT Alt
28: *Phys Ctrl Alt Alt Ctrl Alt
29: *Key# Base Shift Ctrl Shift Alt Shift Ctrl Shift Graphic Flags
30: *---- ---- ----- ---- ----- --- ----- ---- ----- ------- -----*/
31: {K_1, '`', '~', none, none, A'`', A'~', none, none, none, O|T },
32: {K_2, '1', '!', none, none, A'1', A'!', none, none, none, O|T },
33: {K_3, '2', '@', nul, nul, A'2', A'@', A nul, A nul, none, O|T },
34: {K_4, '3', '#', none, none, A'3', A'#', none, none, none, O|T },
35: {K_5, '4', '$', none, none, A'4', A'$', none, none, none, O|T },
36: {K_6, '5', '%', none, none, A'5', A'%', none, none, none, O|T },
37: {K_7, '6', '^', rs, rs, A'6', A'^', A rs, A rs, none, O|T },
38: {K_8, '7', '&', none, none, A'7', A'&', none, none, none, O|T },
39: {K_9, '8', '*', none, none, A'8', A'*', none, none, none, O|T },
40: {K_10, '9', '(', none, none, A'9', A'(', none, none, none, O|T },
41: {K_11, '0', ')', none, none, A'0', A')', none, none, none, O|T },
42: {K_12, '-', '_', us, us, A'-', A'_', A us, A us, none, O|T },
43: {K_13, '=', '+', none, none, A'=', A'+', none, none, none, O|T },
44: /* key 14 for compatibility -- not on most 101/102 keyboards */
45: {K_14, '\\', '|', fs, fs, A'\\', A'|', A fs, A fs, none, O|T },
46: {K_15, bs, bs, del, del, A bs, A bs, A del, A del, none, O|T },
47: {K_16, f42, f43, none, none, f42, f43, none, none, none, F|T },
48: {K_17, 'q', 'Q', dc1, dc1, A'q', A'Q', A dc1, A dc1, none, C|T },
49: {K_18, 'w', 'W', etb, etb, A'w', A'W', A etb, A etb, none, C|T },
50: {K_19, 'e', 'E', enq, enq, A'e', A'E', A enq, A enq, none, C|T },
51: {K_20, 'r', 'R', dc2, dc2, A'r', A'R', A dc2, A dc2, none, C|T },
52: {K_21, 't', 'T', dc4, dc4, A't', A'T', A dc4, A dc4, none, C|T },
53: {K_22, 'y', 'Y', em, em, A'y', A'Y', A em, A em, none, C|T },
54: {K_23, 'u', 'U', nak, nak, A'u', A'U', A nak, A nak, none, C|T },
55: {K_24, 'i', 'I', ht, ht, A'i', A'I', A ht, A ht, none, C|T },
56: {K_25, 'o', 'O', si, si, A'o', A'O', A si, A si, none, C|T },
57: {K_26, 'p', 'P', dle, dle, A'p', A'P', A dle, A dle, none, C|T },
58: {K_27, '[', '{', esc, esc, A'[', A'{', A esc, A esc, none, O|T },
59: {K_28, ']', '}', gs, gs, A']', A'}', A gs, A gs, none, O|T },
60: {K_29, '\\', '|', fs, fs, A'\\', A'|', A fs, A fs, none, O|T },
61: {K_30, caps, caps, caps, caps, caps, caps, caps, caps, caps, S|M },
62: {K_31, 'a', 'A', soh, soh, A'a', A'A', A soh, A soh, none, C|T },
63: {K_32, 's', 'S', dc3, dc3, A's', A'S', A dc3, A dc3, none, C|T },
64: {K_33, 'd', 'D', eot, eot, A'd', A'D', A eot, A eot, none, C|T },
65: {K_34, 'f', 'F', ack, ack, A'f', A'F', A ack, A ack, none, C|T },
66: {K_35, 'g', 'G', bel, bel, A'g', A'G', A bel, A bel, none, C|T },
67: {K_36, 'h', 'H', bs, bs, A'h', A'H', A bs, A bs, none, C|T },
68: {K_37, 'j', 'J', nl, nl, A'j', A'J', A nl, A nl, none, C|T },
69: {K_38, 'k', 'K', vt, vt, A'k', A'K', A vt, A vt, none, C|T },
70: {K_39, 'l', 'L', ff, ff, A'l', A'L', A ff, A ff, none, C|T },
71: {K_40, ';', ':', none, none, A';', A':', none, none, none, O|T },
72: {K_41, '\'', '"', none, none, A'\'', A'"', none, none, none, O|T },
73: {K_42, '\\', '|', fs, fs, A'\\', A'|', A fs, A fs, none, O|T },
74: {K_43, cr, cr, nl, nl, A cr, A cr, A nl, A nl, none, O|T },
75: {K_44, lshift,lshift,lshift,lshift,lshift,lshift,lshift,lshift,lshift, S|MB },
76: {K_45, none, none, none, none, none, none, none, none, none, O|T },
77: {K_46, 'z', 'Z', sub, sub, A'z', A'Z', A sub, A sub, none, C|T },
78: {K_47, 'x', 'X', can, can, A'x', A'X', A can, A can, none, C|T },
79: {K_48, 'c', 'C', etx, etx, A'c', A'C', A etx, A etx, none, C|T },
80: {K_49, 'v', 'V', syn, syn, A'v', A'V', A syn, A syn, none, C|T },
81: {K_50, 'b', 'B', stx, stx, A'b', A'B', A stx, A stx, none, C|T },
82: {K_51, 'n', 'N', so, so, A'n', A'N', A so, A so, none, C|T },
83: {K_52, 'm', 'M', cr, cr, A'm', A'M', A cr, A cr, none, C|T },
84: {K_53, ',', '<', none, none, A',', A'<', none, none, none, O|T },
85: {K_54, '.', '>', none, none, A'.', A'>', none, none, none, O|T },
86: {K_55, '/', '?', none, none, A'/', A'?', none, none, none, O|T },
87: /* key 56 undefined */
88: {K_57, rshift,rshift,rshift,rshift,rshift,rshift,rshift,rshift,rshift, S|MB },
89: {K_58, lctrl, lctrl, lctrl, lctrl, lctrl, lctrl, lctrl, lctrl, lctrl, S|MB },
90: /* key 59 undefined */
91: {K_60, lalt, lalt, lalt, lalt, lalt, lalt, lalt, lalt, lalt, S|MB },
92: {K_61, ' ', ' ', ' ', ' ', A' ', A' ', A' ', A' ', none, O|T },
93: {K_62, ralt, ralt, ralt, ralt, ralt, ralt, ralt, ralt, ralt, S|MB },
94: /* key 63 undefined */
95: {K_64, rctrl, rctrl, rctrl, rctrl, rctrl, rctrl, rctrl, rctrl, rctrl, S|MB },
96: /* keys 65 through 74 could be functional keys on XT type keyboard */
97: {K_65, f2, f14, f26, f71, vt1, none, none, none, none, F|M },
98: {K_66, f4, f16, f28, f73, vt3, none, none, none, none, F|M },
99: {K_67, f6, f18, f30, f75, vt5, none, none, none, none, F|M },
100: {K_68, f8, f20, f65, f77, vt7, none, none, none, none, F|M },
101: {K_69, f10, f22, f67, f79, vtn, none, none, none, none, F|M },
102: {K_70, f1, f13, f25, f70, vt0, none, none, none, none, F|M },
103: {K_71, f3, f15, f27, f72, vt2, none, none, none, none, F|M },
104: {K_72, f5, f17, f29, f74, vt4, none, none, none, none, F|M },
105: {K_73, f7, f19, f64, f76, vt6, none, none, none, none, F|M },
106: {K_74, f9, f21, f66, f78, none, none, none, none, none, F|M },
107: {K_75, f40, f40, f40, f40, f40, f40, f40, f40, f40, F|M },
108: {K_76, f41, f41, f41, f41, f41, f41, reboot,f41, f41, F|M },
109: /* keys 77 and 78 undefined */
110: {K_79, f34, f34, f34, f34, f34, f34, f34, f34, f34, F|T },
111: {K_80, f37, f37, f37, f37, f37, f37, f37, f37, f37, F|M },
112: {K_81, f31, f31, f31, f31, f31, f31, f31, f31, f31, F|M },
113: /* key 82 undefined */
114: {K_83, f38, f38, f38, f38, f38, f38, f38, f38, f38, F|T },
115: {K_84, f32, f32, f32, f32, f32, f32, f32, f32, f32, F|T },
116: {K_85, f39, f39, f39, f39, f39, f39, f39, f39, f39, F|M },
117: {K_86, f33, f33, f33, f33, f33, f33, f33, f33, f33, F|M },
118: /* keys 87 and 88 undefined */
119: {K_89, f36, f36, f36, f36, f36, f36, f36, f36, f36, F|T },
120: {K_90, num, num, num, num, num, num, num, num, num, S|M },
121: {K_91, f37, f57, vt7, vt7, f57, f57, f57, f57, f57, F|N|M},
122: {K_92, f34, f54, vt4, vt4, f54, f54, f54, f54, f54, F|N|M},
123: {K_93, f31, f51, vt1, vt1, f51, f51, f51, f51, f51, F|N|M},
124: /* key 94 undefined */
125: {K_95, '/', '/', none, none, none, none, none, none, none, O|M },
126: {K_96, f38, f58, vt8, vt8, f58, f58, f58, f58, f58, F|N|M},
127: {K_97, f35, f55, vt5, vt5, f55, f55, f55, f55, f55, F|N|M},
128: {K_98, f32, f52, vt2, vt2, f52, f52, f52, f52, f52, F|N|M},
129: {K_99, f40, f60, vt0, vt0, f60, f60, f60, f60, f60, F|N|M},
130: {K_100, '*', '*', none, none, none, none, none, none, none, O|M },
131: {K_101, f39, f59, vt9, vt9, f59, f59, f59, f59, f59, F|N|M},
132: {K_102, f36, f56, vt6, vt6, f56, f56, f56, f56, f56, F|N|M},
133: {K_103, f33, f53, vt3, vt3, f53, f53, f53, f53, f53, F|N|M},
134: {K_104, f41, f61, vtt, vtt, f61, f61, reboot,reboot,f61, F|N|M},
135: {K_105, f63, f63, vtp, vtp, none, none, none, none, none, F|M },
136: {K_106, f62, f62, vtn, vtn, none, none, none, none, none, F|M },
137: /* key 107 undefined */
138: {K_108, cr, cr, nl, nl, cr, cr, nl, nl, none, O|M },
139: /* key 109 undefined */
140: {K_110, esc, esc, none, none, esc, esc, none, none, none, O|M },
141: /* key 111 undefined */
142: {K_112, f1, f13, f25, f70, vt0, none, none, none, none, F|M },
143: {K_113, f2, f14, f26, f71, vt1, none, none, none, none, F|M },
144: {K_114, f3, f15, f27, f72, vt2, none, none, none, none, F|M },
145: {K_115, f4, f16, f28, f73, vt3, none, none, none, none, F|M },
146: {K_116, f5, f17, f29, f74, vt4, none, none, none, none, F|M },
147: {K_117, f6, f18, f30, f75, vt5, none, none, none, none, F|M },
148: {K_118, f7, f19, f64, f76, vt6, none, none, none, none, F|M },
149: {K_119, f8, f20, f65, f77, vt7, none, none, none, none, F|M },
150: {K_120, f9, f21, f66, f78, none, none, none, none, none, F|M },
151: {K_121, f10, f22, f67, f79, vtn, none, none, none, none, F|M },
152: {K_122, f11, f23, f68, f44, vtp, none, none, none, none, F|M },
153: {K_123, f12, f24, f69, f45, vtt, none, none, none, none, F|M },
154: {K_124, none, none, none, none, none, none, none, none, none, O|M },
155: {K_125, scroll,scroll,scroll,scroll,scroll,scroll,scroll,scroll,scroll, S|M },
156: {K_126, none, none, none, none, none, none, none, none, none, O|M }
157: };
158:
159: /*
160: * Special and programmable function key definitions:
161: *
162: * Notes:
163: * 1) If a key outputs a multi-byte sequence in any mode, the key
164: * must be defined as a function key (flags field == F) and all entries
165: * for the key must be function keys (i.e., f1 through f50).
166: *
167: * 2) All key definition strings must be terminated by a \377 sequence.
168: * This allows the NUL ('\0') character to be embedded in function strings
169: */
170:
171: unsigned char *funkey[] = {
172: /* 0/reboot */ "reboot" END, /* jump to reboot code */
173: /* 1 */ CSI"M" END, /* F1 */
174: /* 2 */ CSI"N" END, /* F2 */
175: /* 3 */ CSI"O" END, /* F3 */
176: /* 4 */ CSI"P" END, /* F4 */
177: /* 5 */ CSI"Q" END, /* F5 */
178: /* 6 */ CSI"R" END, /* F6 */
179: /* 7 */ CSI"S" END, /* F7 */
180: /* 8 */ CSI"T" END, /* F8 */
181: /* 9 */ CSI"U" END, /* F9 */
182: /* 10 */ CSI"V" END, /* F10 */
183: /* 11 */ CSI"W" END, /* F11 */
184: /* 12 */ CSI"X" END, /* F12 */
185: /* 13 */ CSI"Y" END, /* sF1 */
186: /* 14 */ CSI"Z" END, /* sF2 */
187: /* 15 */ CSI"a" END, /* sF3 */
188: /* 16 */ CSI"b" END, /* sF4 */
189: /* 17 */ CSI"c" END, /* sF5 */
190: /* 18 */ CSI"d" END, /* sF6 */
191: /* 19 */ CSI"e" END, /* sF7 */
192: /* 20 */ CSI"f" END, /* sF8 */
193: /* 21 */ CSI"g" END, /* sF9 */
194: /* 22 */ CSI"h" END, /* sF10 */
195: /* 23 */ CSI"i" END, /* sF11 */
196: /* 24 */ CSI"j" END, /* sF12 */
197: /* 25 */ CSI"k" END, /* cF1 */
198: /* 26 */ CSI"l" END, /* cF2 */
199: /* 27 */ CSI"m" END, /* cF3 */
200: /* 28 */ CSI"n" END, /* cF4 */
201: /* 29 */ CSI"o" END, /* cF5 */
202: /* 30 */ CSI"p" END, /* cF6 */
203: /* 31 */ CSI"F" END, /* End */
204: /* 32 */ CSI"B" END, /* Down Arrow */
205: /* 33 */ CSI"G" END, /* Page Down */
206: /* 34 */ CSI"D" END, /* Left Arrow */
207: /* 35 */ "" END, /* Unshifted keypad 5 */
208: /* 36 */ CSI"C" END, /* Right Arrow */
209: /* 37 */ CSI"H" END, /* Home */
210: /* 38 */ CSI"A" END, /* Up Arrow */
211: /* 39 */ CSI"I" END, /* Page Up */
212: /* 40 */ CSI"L" END, /* Insert */
213: /* 41 */ "\177" END, /* Delete */
214: /* 42 */ "\t" END, /* Tab */
215: /* 43 */ CSI"Z" END, /* Back Tab */
216: /* 44 */ CSI"`" END, /* c-s-F11 */
217: /* 45 */ CSI"{" END, /* c-s-F12 */
218: /* 46 */ "F44" END, /* unused */
219: /* 47 */ "F47" END, /* unused */
220: /* 48 */ "F48" END, /* unused */
221: /* 49 */ "F49" END, /* unused */
222: /* 50 */ "F50" END, /* unused */
223: /* 51 */ "1" END, /* Keypad 1 */
224: /* 52 */ "2" END, /* Keypad 2 */
225: /* 53 */ "3" END, /* Keypad 3 */
226: /* 54 */ "4" END, /* Keypad 4 */
227: /* 55 */ "5" END, /* Keypad 5 */
228: /* 56 */ "6" END, /* Keypad 6 */
229: /* 57 */ "7" END, /* Keypad 7 */
230: /* 58 */ "8" END, /* Keypad 8 */
231: /* 59 */ "9" END, /* Keypad 9 */
232: /* 60 */ "0" END, /* Keypad 0 */
233: /* 61 */ "." END, /* Keypad . */
234: /* 62 */ "+" END, /* Keypad + */
235: /* 63 */ "-" END, /* Keypad - */
236: /* 64 */ CSI"q" END, /* cF7 */
237: /* 65 */ CSI"r" END, /* cF8 */
238: /* 66 */ CSI"s" END, /* cF9 */
239: /* 67 */ CSI"t" END, /* cF10 */
240: /* 68 */ CSI"u" END, /* cF11 */
241: /* 69 */ CSI"v" END, /* cF12 */
242: /* 70 */ CSI"w" END, /* c-s-F1 */
243: /* 71 */ CSI"x" END, /* c-s-F2 */
244: /* 72 */ CSI"y" END, /* c-s-F3 */
245: /* 73 */ CSI"z" END, /* c-s-F4 */
246: /* 74 */ CSI"@" END, /* c-s-F5 */
247: /* 75 */ CSI"[" END, /* c-s-F6 */
248: /* 76 */ CSI"\\" END, /* c-s-F7 */
249: /* 77 */ CSI"]" END, /* c-s-F8 */
250: /* 78 */ CSI"^" END, /* c-s-F9 */
251: /* 79 */ CSI"_" END /* c-s-F10 */
252: };
253:
254: int numfun = sizeof(funkey) / sizeof(funkey[0]); /* # of Fn keys */
255: int numkey = sizeof(kbtbl) / sizeof(kbtbl[0]); /* # of actual keys */
256: /* end of us.c */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.