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