141480Smckusick /* 241480Smckusick * Copyright (c) 1988 University of Utah. 3*63148Sbostic * Copyright (c) 1990, 1993 4*63148Sbostic * The Regents of the University of California. All rights reserved. 541480Smckusick * 641480Smckusick * This code is derived from software contributed to Berkeley by 741480Smckusick * the Systems Programming Group of the University of Utah Computer 841480Smckusick * Science Department. 941480Smckusick * 1041480Smckusick * %sccs.include.redist.c% 1141480Smckusick * 1245497Smckusick * from: Utah $Hdr: hil_keymaps.c 1.1 90/07/09$ 1341480Smckusick * 14*63148Sbostic * @(#)hil_keymaps.c 8.1 (Berkeley) 06/10/93 1541480Smckusick */ 1641480Smckusick 1741480Smckusick /* 1845788Sbostic * Keymaps for various HP-HIL keyboard layouts. These tables apply only to 1945788Sbostic * keyboards in "cooked" mode. Currently only one is supported as an ITE 2045788Sbostic * keyboard. 2141480Smckusick * 2245788Sbostic * Maps are indexed by cooked keycode and contain the ASCII character for 2345788Sbostic * that keycode. The map-set used depends on the keyboard "language". The 2445788Sbostic * map used within that set depends on the shift/control status that is 2545788Sbostic * returned by the hardware along with the keycode. If an entry is NULL for 2645788Sbostic * a key in the appropriate unshifted, shifted, control, or control-shifted 2745788Sbostic * table, then a single "string" table is consulted. In this fashion, a 2845788Sbostic * multi- character sequence can be returned for a key press. Note that 2945788Sbostic * control/shift status have no effect on multi-character lookup (i.e. there 3045788Sbostic * is only one string table per set, not four). 3141480Smckusick * 3245788Sbostic * Someday we could allow user-definable keymaps, but we would have to come up 3345788Sbostic * with a better format (at least externally). This format takes up lots of 3445788Sbostic * space. Having keymaps for all 18 or so HP supported layouts would be bad 3545788Sbostic * news. 3641480Smckusick */ 3756504Sbostic #include <sys/param.h> 3856504Sbostic #include <hp/dev/kbdmap.h> 3941480Smckusick 4041480Smckusick char us_keymap[] = { 4141480Smckusick NULL, '`', '\\', ESC, NULL, DEL, NULL, NULL, 4241480Smckusick '\n', '\t', NULL, NULL, NULL, NULL, NULL, NULL, 4341480Smckusick NULL, '\n', NULL, NULL, NULL, NULL, NULL, NULL, 4441480Smckusick NULL, '\t', NULL, NULL, NULL, NULL, NULL, NULL, 4541480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 4641480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, '\b', NULL, 4741480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 4841480Smckusick ESC, '\r', NULL, '\n', '0', '.', ',', '+', 4941480Smckusick '1', '2', '3', '-', '4', '5', '6', '*', 5041480Smckusick '7', '8', '9', '/', 'E', '(', ')', '^', 5141480Smckusick '1', '2', '3', '4', '5', '6', '7', '8', 5241480Smckusick '9', '0', '-', '=', '[', ']', ';', '\'', 5341480Smckusick ',', '.', '/', '\040', 'o', 'p', 'k', 'l', 5441480Smckusick 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 5541480Smckusick 'a', 's', 'd', 'f', 'g', 'h', 'j', 'm', 5641480Smckusick 'z', 'x', 'c', 'v', 'b', 'n', NULL, NULL 5741480Smckusick }; 5841480Smckusick 5941480Smckusick char us_shiftmap[] = { 6041480Smckusick NULL, '~', '|', DEL, NULL, DEL, NULL, NULL, 6141480Smckusick '\n', '\t', NULL, NULL, NULL, NULL, NULL, NULL, 6241480Smckusick NULL, '\n', NULL, NULL, NULL, NULL, NULL, NULL, 6341480Smckusick NULL, '\t', NULL, NULL, NULL, NULL, NULL, NULL, 6441480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 6541480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, DEL, NULL, 6641480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 6741480Smckusick ESC, '\r', NULL, '\n', '0', '.', ',', '+', 6841480Smckusick '1', '2', '3', '-', '4', '5', '6', '*', 6941480Smckusick '7', '8', '9', '/', '`', '|', '\\', '~', 7041480Smckusick '!', '@', '#', '$', '%', '^', '&', '*', 7141480Smckusick '(', ')', '_', '+', '{', '}', ':', '\"', 7241480Smckusick '<', '>', '?', '\040', 'O', 'P', 'K', 'L', 7341480Smckusick 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 7441480Smckusick 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'M', 7541480Smckusick 'Z', 'X', 'C', 'V', 'B', 'N', NULL, NULL 7641480Smckusick }; 7741480Smckusick 7841480Smckusick char us_ctrlmap[] = { 7941480Smckusick NULL, '`', '\034', ESC, NULL, DEL, NULL, NULL, 8041480Smckusick '\n', '\t', NULL, NULL, NULL, NULL, NULL, NULL, 8141480Smckusick NULL, '\n', NULL, NULL, NULL, NULL, NULL, NULL, 8241480Smckusick NULL, '\t', NULL, NULL, NULL, NULL, NULL, NULL, 8341480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8441480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, '\b', NULL, 8541480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 8641480Smckusick ESC, '\r', NULL, '\n', '0', '.', ',', '+', 8741480Smckusick '1', '2', '3', '-', '4', '5', '6', '*', 8841480Smckusick '7', '8', '9', '/', 'E', '(', ')', '\036', 8941480Smckusick '1', '2', '3', '4', '5', '6', '7', '8', 9041480Smckusick '9', '0', '-', '=', '\033', '\035', ';', '\'', 9141480Smckusick ',', '.', '/', '\040', '\017', '\020', '\013', '\014', 9241480Smckusick '\021', '\027', '\005', '\022', '\024', '\031', '\025', '\011', 9341480Smckusick '\001', '\023', '\004', '\006', '\007', '\010', '\012', '\015', 9441480Smckusick '\032', '\030', '\003', '\026', '\002', '\016', NULL, NULL 9541480Smckusick }; 9641480Smckusick 9741480Smckusick char us_ctrlshiftmap[] = { 9841480Smckusick NULL, '~', '|', DEL, NULL, DEL, NULL, NULL, 9941480Smckusick '\n', '\t', NULL, NULL, NULL, NULL, NULL, NULL, 10041480Smckusick NULL, '\n', NULL, NULL, NULL, NULL, NULL, NULL, 10141480Smckusick NULL, '\t', NULL, NULL, NULL, NULL, NULL, NULL, 10241480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10341480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, DEL, NULL, 10441480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 10541480Smckusick ESC, '\r', NULL, '\n', '0', '.', ',', '+', 10641480Smckusick '1', '2', '3', '-', '4', '5', '6', '*', 10741480Smckusick '7', '8', '9', '/', '`', '|', '\034', '~', 10841480Smckusick '!', '\000', '#', '$', '%', '\036', '&', '*', 10941480Smckusick '(', ')', '\037', '+', '{', '}', ':', '\"', 11041480Smckusick '<', '>', '?', '\040', '\017', '\020', '\013', '\014', 11141480Smckusick '\021', '\027', '\005', '\022', '\024', '\031', '\025', '\011', 11241480Smckusick '\001', '\023', '\004', '\006', '\007', '\010', '\012', '\015', 11341480Smckusick '\032', '\030', '\003', '\026', '\002', '\016', NULL, NULL 11441480Smckusick }; 11541480Smckusick 11641480Smckusick char *us_stringmap[] = { 11741480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 11841480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, "\033V","\033h", 11941480Smckusick "\033U",NULL, NULL, NULL, NULL, NULL, "\033K","\033J", 12041480Smckusick NULL, NULL, NULL, "\033p","\033q","\033t","\033u","\033v", 12141480Smckusick "\033r","\033s","\033B","\033A","\033w",NULL, "\033D","\033C", 12241480Smckusick "\033L","\033M",NULL, NULL, "\033P",NULL, NULL, NULL, 12341480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12441480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12541480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12641480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12741480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12841480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 12941480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 13041480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 13141480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 13241480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL 13341480Smckusick }; 13441480Smckusick 13541480Smckusick #ifdef UK_KEYBOARD 13641480Smckusick char uk_keymap[] = { 13741480Smckusick NULL, '`', '<', ESC, NULL, DEL, NULL, NULL, 13841480Smckusick '\n', '\t', NULL, NULL, NULL, NULL, NULL, NULL, 13941480Smckusick NULL, '\n', NULL, NULL, NULL, NULL, NULL, NULL, 14041480Smckusick NULL, '\t', NULL, NULL, NULL, NULL, NULL, NULL, 14141480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14241480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, '\b', NULL, 14341480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 14441480Smckusick ESC, '\r', NULL, '\n', '0', '.', ',', '+', 14541480Smckusick '1', '2', '3', '-', '4', '5', '6', '*', 14641480Smckusick '7', '8', '9', '/', 'E', '(', ')', '^', 14741480Smckusick '1', '2', '3', '4', '5', '6', '7', '8', 14841480Smckusick '9', '0', '+', '\'', '[', ']', '*', '\\', 14941480Smckusick ',', '.', '-', '\040', 'o', 'p', 'k', 'l', 15041480Smckusick 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 15141480Smckusick 'a', 's', 'd', 'f', 'g', 'h', 'j', 'm', 15241480Smckusick 'z', 'x', 'c', 'v', 'b', 'n', NULL, NULL 15341480Smckusick }; 15441480Smckusick 15541480Smckusick char uk_shiftmap[] = { 15641480Smckusick NULL, '~', '>', DEL, NULL, DEL, NULL, NULL, 15741480Smckusick '\n', '\t', NULL, NULL, NULL, NULL, NULL, NULL, 15841480Smckusick NULL, '\n', NULL, NULL, NULL, NULL, NULL, NULL, 15941480Smckusick NULL, '\t', NULL, NULL, NULL, NULL, NULL, NULL, 16041480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 16141480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, DEL, NULL, 16241480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 16341480Smckusick ESC, '\r', NULL, '\n', '0', '.', ',', '+', 16441480Smckusick '1', '2', '3', '-', '4', '5', '6', '*', 16541480Smckusick '7', '8', '9', '/', '`', '|', '\\', '~', 16641480Smckusick '!', '\"', '#', '$', '%', '&', '^', '(', 16741480Smckusick ')', '=', '?', '/', '{', '}', '@', '|', 16841480Smckusick ';', ':', '_', '\040', 'O', 'P', 'K', 'L', 16941480Smckusick 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 17041480Smckusick 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'M', 17141480Smckusick 'Z', 'X', 'C', 'V', 'B', 'N', NULL, NULL 17241480Smckusick }; 17341480Smckusick 17441480Smckusick char uk_ctrlmap[] = { 17541480Smckusick NULL, '`', '<', ESC, NULL, DEL, NULL, NULL, 17641480Smckusick '\n', '\t', NULL, NULL, NULL, NULL, NULL, NULL, 17741480Smckusick NULL, '\n', NULL, NULL, NULL, NULL, NULL, NULL, 17841480Smckusick NULL, '\t', NULL, NULL, NULL, NULL, NULL, NULL, 17941480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 18041480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, '\b', NULL, 18141480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 18241480Smckusick ESC, '\r', NULL, '\n', '0', '.', ',', '+', 18341480Smckusick '1', '2', '3', '-', '4', '5', '6', '*', 18441480Smckusick '7', '8', '9', '/', 'E', '(', ')', '\036', 18541480Smckusick '1', '2', '3', '4', '5', '6', '7', '8', 18641480Smckusick '9', '0', '+', '\'', '\033', '\035', '*', '\034', 18741480Smckusick ',', '.', '/', '\040', '\017', '\020', '\013', '\014', 18841480Smckusick '\021', '\027', '\005', '\022', '\024', '\031', '\025', '\011', 18941480Smckusick '\001', '\023', '\004', '\006', '\007', '\010', '\012', '\015', 19041480Smckusick '\032', '\030', '\003', '\026', '\002', '\016', NULL, NULL 19141480Smckusick }; 19241480Smckusick 19341480Smckusick char uk_ctrlshiftmap[] = { 19441480Smckusick NULL, '~', '>', DEL, NULL, DEL, NULL, NULL, 19541480Smckusick '\n', '\t', NULL, NULL, NULL, NULL, NULL, NULL, 19641480Smckusick NULL, '\n', NULL, NULL, NULL, NULL, NULL, NULL, 19741480Smckusick NULL, '\t', NULL, NULL, NULL, NULL, NULL, NULL, 19841480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 19941480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, DEL, NULL, 20041480Smckusick NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 20141480Smckusick ESC, '\r', NULL, '\n', '0', '.', ',', '+', 20241480Smckusick '1', '2', '3', '-', '4', '5', '6', '*', 20341480Smckusick '7', '8', '9', '/', '`', '|', '\034', '~', 20441480Smckusick '!', '\"', '#', '$', '%', '&', '\036', '(', 20541480Smckusick ')', '=', '?', '/', '{', '}', '\000', '|', 20641480Smckusick ';', ':', '\037', '\040', '\017', '\020', '\013', '\014', 20741480Smckusick '\021', '\027', '\005', '\022', '\024', '\031', '\025', '\011', 20841480Smckusick '\001', '\023', '\004', '\006', '\007', '\010', '\012', '\015', 20941480Smckusick '\032', '\030', '\003', '\026', '\002', '\016', NULL, NULL 21041480Smckusick }; 21141480Smckusick #endif 21241480Smckusick 21341480Smckusick /* 21441480Smckusick * The keyboard map table. 21541480Smckusick * Lookup is by hardware returned language code. 21641480Smckusick */ 21741480Smckusick struct kbdmap kbd_map[] = { 21841480Smckusick KBD_US, "US ASCII", 21941480Smckusick us_keymap, us_shiftmap, us_ctrlmap, us_ctrlshiftmap, 22041480Smckusick us_stringmap, 22141480Smckusick 22241480Smckusick #ifdef UK_KEYBOARD 22341480Smckusick KBD_UK, "United Kingdom", 22441480Smckusick uk_keymap, uk_shiftmap, uk_ctrlmap, uk_ctrlshiftmap, 22541480Smckusick us_stringmap, 22641480Smckusick #endif 22741480Smckusick 22841480Smckusick 0, NULL, 22941480Smckusick NULL, NULL, NULL, NULL, 23041480Smckusick NULL, 23141480Smckusick }; 232