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