kbdmap.c revision 1.2
11.2Sperry/* $NetBSD: kbdmap.c,v 1.2 1998/01/05 07:03:42 perry Exp $ */ 21.2Sperry 31.1Soki/* from: arch/amiga/dev/kbdmap.c */ 41.1Soki/* modified for X680x0 by Masaru Oki */ 51.1Soki 61.1Soki#include "kbdmap.h" 71.1Soki 81.1Soki/* define a default keymap. This can be changed by keyboard ioctl's 91.1Soki (later at least..) */ 101.1Soki 111.1Soki/* mode shortcuts: */ 121.1Soki#define S KBD_MODE_STRING 131.1Soki#define DG (KBD_MODE_DEAD | KBD_MODE_GRAVE) 141.1Soki#define DA (KBD_MODE_DEAD | KBD_MODE_ACUTE) 151.1Soki#define DC (KBD_MODE_DEAD | KBD_MODE_CIRC) 161.1Soki#define DT (KBD_MODE_DEAD | KBD_MODE_TILDE) 171.1Soki#define DD (KBD_MODE_DEAD | KBD_MODE_DIER) 181.1Soki#define C KBD_MODE_CAPS 191.1Soki#define K KBD_MODE_KPAD 201.1Soki#define D KBD_MODE_DEAD 211.1Soki 221.1Sokistruct kbdmap kbdmap; 231.1Sokistruct kbdmap ascii_kbdmap = { 241.1Soki /* normal map */ 251.1Soki { 261.1Soki 0, 0, /* 0x00 */ 271.1Soki 0, ESC, 281.1Soki 0, '1', 291.1Soki 0, '2', 301.1Soki 0, '3', 311.1Soki 0, '4', 321.1Soki 0, '5', 331.1Soki 0, '6', 341.1Soki 0, '7', /* 0x08 */ 351.1Soki 0, '8', 361.1Soki 0, '9', 371.1Soki 0, '0', 381.1Soki 0, '-', 391.1Soki 0, '^', 401.1Soki 0, '\\', 411.1Soki 0, DEL, /* really BS, DEL & BS swapped */ 421.1Soki 0, '\t', /* 0x10 */ 431.1Soki C, 'q', 441.1Soki C, 'w', 451.1Soki C, 'e', 461.1Soki C, 'r', 471.1Soki C, 't', 481.1Soki C, 'y', 491.1Soki C, 'u', 501.1Soki C, 'i', /* 0x18 */ 511.1Soki C, 'o', 521.1Soki C, 'p', 531.1Soki 0, '@', 541.1Soki 0, '[', 551.1Soki 0, '\r', /* return */ 561.1Soki C, 'a', 571.1Soki C, 's', 581.1Soki C, 'd', /* 0x20 */ 591.1Soki C, 'f', 601.1Soki C, 'g', 611.1Soki C, 'h', 621.1Soki C, 'j', 631.1Soki C, 'k', 641.1Soki C, 'l', 651.1Soki 0, ';', 661.1Soki 0, ':', /* 0x28 */ 671.1Soki 0, ']', 681.1Soki C, 'z', 691.1Soki C, 'x', 701.1Soki C, 'c', 711.1Soki C, 'v', 721.1Soki C, 'b', 731.1Soki C, 'n', 741.1Soki C, 'm', /* 0x30 */ 751.1Soki 0, ',', 761.1Soki 0, '.', 771.1Soki 0, '/', 781.1Soki 0, '_', 791.1Soki 0, ' ', 801.1Soki 0, 0, /* HOME */ 811.1Soki 0, '\b', /* really DEL, BS & DEL swapped */ 821.1Soki 0, 0, /* 0x38 ROLLUP */ 831.1Soki 0, 0, /* ROLLDOWN */ 841.1Soki 0, 0, /* UNDO */ 851.1Soki S, 0x0C, /* CRSR LEFT */ 861.1Soki S, 0x00, /* now it gets hairy.. CRSR UP */ 871.1Soki S, 0x08, /* CRSR RIGHT */ 881.1Soki S, 0x04, /* CRSR DOWN */ 891.1Soki D, 0, /* CLR */ 901.1Soki K, '/', /* 0x40 */ 911.1Soki K, '*', 921.1Soki K, '-', 931.1Soki K, '7', 941.1Soki K, '8', 951.1Soki K, '9', 961.1Soki K, '+', 971.1Soki K, '4', 981.1Soki K, '5', /* 0x48 */ 991.1Soki K, '6', 1001.1Soki K, '=', 1011.1Soki K, '1', 1021.1Soki K, '2', 1031.1Soki K, '3', 1041.1Soki K, '\r', /* enter */ 1051.1Soki K, '0', 1061.1Soki K, ',', /* 0x50 */ 1071.1Soki K, '.', 1081.1Soki 0, 0, 1091.1Soki 0, 0, 1101.1Soki S, 0x42, /* HELP */ 1111.1Soki 0, 0, 1121.1Soki 0, 0, 1131.1Soki 0, 0, 1141.1Soki 0, 0, /* 0x58 */ 1151.1Soki 0, 0, 1161.1Soki 0, 0, 1171.1Soki 0, 0, 1181.1Soki 0, 0, 1191.1Soki 0, 0, 1201.1Soki 0, 0, 1211.1Soki 0, 0, 1221.1Soki 0, 0, /* 0x60 */ 1231.1Soki 0, 0, 1241.1Soki 0, 0, 1251.1Soki S, 0x10, /* F1 */ 1261.1Soki S, 0x15, /* F2 */ 1271.1Soki S, 0x1A, /* F3 */ 1281.1Soki S, 0x1F, /* F4 */ 1291.1Soki S, 0x24, /* F5 */ 1301.1Soki S, 0x29, /* F6 */ 1311.1Soki S, 0x2E, /* F7 */ 1321.1Soki S, 0x33, /* 0x58 F8 */ 1331.1Soki S, 0x38, /* F9 */ 1341.1Soki S, 0x3D, /* F10 */ 1351.1Soki }, 1361.1Soki 1371.1Soki /* shifted map */ 1381.1Soki { 1391.1Soki 0, 0, /* 0x00 */ 1401.1Soki 0, ESC, 1411.1Soki 0, '!', 1421.1Soki 0, '\"', 1431.1Soki 0, '#', 1441.1Soki 0, '$', 1451.1Soki 0, '%', 1461.1Soki 0, '&', 1471.1Soki 0, '\'', /* 0x08 */ 1481.1Soki 0, '(', 1491.1Soki 0, ')', 1501.1Soki 0, 0, 1511.1Soki 0, '=', 1521.1Soki 0, '~', 1531.1Soki 0, '|', 1541.1Soki 0, DEL, /* really BS, DEL & BS swapped */ 1551.1Soki 0, '\t', /* 0x10 shift TAB */ 1561.1Soki C, 'Q', 1571.1Soki C, 'W', 1581.1Soki C, 'E', 1591.1Soki C, 'R', 1601.1Soki C, 'T', 1611.1Soki C, 'Y', 1621.1Soki C, 'U', 1631.1Soki C, 'I', /* 0x18 */ 1641.1Soki C, 'O', 1651.1Soki C, 'P', 1661.1Soki 0, '`', 1671.1Soki 0, '{', 1681.1Soki 0, '\r', /* return */ 1691.1Soki C, 'A', 1701.1Soki C, 'S', 1711.1Soki C, 'D', /* 0x20 */ 1721.1Soki C, 'F', 1731.1Soki C, 'G', 1741.1Soki C, 'H', 1751.1Soki C, 'J', 1761.1Soki C, 'K', 1771.1Soki C, 'L', 1781.1Soki 0, '+', 1791.1Soki 0, '*', /* 0x28 */ 1801.1Soki 0, '}', 1811.1Soki C, 'Z', 1821.1Soki C, 'X', 1831.1Soki C, 'C', 1841.1Soki C, 'V', 1851.1Soki C, 'B', 1861.1Soki C, 'N', 1871.1Soki C, 'M', /* 0x30 */ 1881.1Soki 0, '<', /* 0x38 */ 1891.1Soki 0, '>', 1901.1Soki 0, '?', 1911.1Soki 0, '_', 1921.1Soki 0, ' ', 1931.1Soki 0, 0, /* HOME */ 1941.1Soki 0, '\b', /* really DEL, BS & DEL swapped */ 1951.1Soki 0, 0, /* 0x38 ROLLUP */ 1961.1Soki 0, 0, /* ROLLDOWN */ 1971.1Soki 0, 0, /* UNDO */ 1981.1Soki D, 0, /* shift CRSR LEFT */ 1991.1Soki D, 0, /* shift CRSR UP */ 2001.1Soki D, 0, /* shift CRSR RIGHT */ 2011.1Soki D, 0, /* shift CRSR DOWN */ 2021.1Soki D, 0, /* CLR */ 2031.1Soki D, '/', /* 0x40 */ 2041.1Soki D, '*', 2051.1Soki D, '-', 2061.1Soki D, '7', 2071.1Soki D, '8', 2081.1Soki D, '9', 2091.1Soki D, '+', 2101.1Soki D, '4', 2111.1Soki D, '5', /* 0x48 */ 2121.1Soki D, '6', 2131.1Soki D, '=', 2141.1Soki D, '1', 2151.1Soki D, '2', 2161.1Soki D, '3', 2171.1Soki K, '\r', /* enter */ 2181.1Soki D, '0', 2191.1Soki D, ',', /* 0x50 */ 2201.1Soki D, '.', 2211.1Soki 0, 0, 2221.1Soki 0, 0, 2231.1Soki S, 0x42, /* HELP */ 2241.1Soki 0, 0, 2251.1Soki 0, 0, 2261.1Soki 0, 0, 2271.1Soki 0, 0, /* 0x58 */ 2281.1Soki 0, 0, 2291.1Soki 0, 0, 2301.1Soki 0, 0, 2311.1Soki 0, 0, 2321.1Soki 0, 0, 2331.1Soki 0, 0, 2341.1Soki 0, 0, 2351.1Soki 0, 0, /* 0x60 */ 2361.1Soki 0, 0, 2371.1Soki 0, 0, 2381.1Soki S, 0x5D, /* shift F1 */ 2391.1Soki S, 0x63, /* shift F2 */ 2401.1Soki S, 0x69, /* shift F3 */ 2411.1Soki S, 0x6F, /* shift F4 */ 2421.1Soki S, 0x75, /* shift F5 */ 2431.1Soki S, 0x7B, /* shift F6 */ 2441.1Soki S, 0x81, /* shift F7 */ 2451.1Soki S, 0x87, /* 0x58 shift F8 */ 2461.1Soki S, 0x8D, /* shift F9 */ 2471.1Soki S, 0x93, /* shift F10 */ 2481.1Soki }, 2491.1Soki 2501.1Soki 2511.1Soki /* alt map */ 2521.1Soki { 2531.1Soki }, 2541.1Soki 2551.1Soki /* shift alt map */ 2561.1Soki { 2571.1Soki }, 2581.1Soki 2591.1Soki { 2601.1Soki /* string table. If there's a better way to get the offsets into the 2611.1Soki above table, please tell me.. 2621.1Soki 2631.1Soki NOTE: save yourself and others a lot of grief by *not* using 2641.1Soki CSI == 0x9b, using the two-character sequence gives 2651.1Soki much less trouble, especially in GNU-Emacs.. */ 2661.1Soki 2671.1Soki 3, ESC, '[', 'A', /* 0x00: CRSR UP */ 2681.1Soki 3, ESC, '[', 'B', /* 0x04: CRSR DOWN */ 2691.1Soki 3, ESC, '[', 'C', /* 0x08: CRSR RIGHT */ 2701.1Soki 3, ESC, '[', 'D', /* 0x0C: CRSR LEFT */ 2711.1Soki 4, ESC, '[', '0', '~', /* 0x10: F1 */ 2721.1Soki 4, ESC, '[', '1', '~', /* 0x15: F2 */ 2731.1Soki 4, ESC, '[', '2', '~', /* 0x1A: F3 */ 2741.1Soki 4, ESC, '[', '3', '~', /* 0x1F: F4 */ 2751.1Soki 4, ESC, '[', '4', '~', /* 0x24: F5 */ 2761.1Soki 4, ESC, '[', '5', '~', /* 0x29: F6 */ 2771.1Soki 4, ESC, '[', '6', '~', /* 0x2E: F7 */ 2781.1Soki 4, ESC, '[', '7', '~', /* 0x33: F8 */ 2791.1Soki 4, ESC, '[', '8', '~', /* 0x38: F9 */ 2801.1Soki 4, ESC, '[', '9', '~', /* 0x3D: F10 */ 2811.1Soki 4, ESC, '[', '?', '~', /* 0x42: HELP */ 2821.1Soki 2831.1Soki 4, ESC, '[', 'T', '~', /* 0x47: shift CRSR UP */ 2841.1Soki 4, ESC, '[', 'S', '~', /* 0x4C: shift CRSR DOWN */ 2851.1Soki 5, ESC, '[', ' ', '@', '~', /* 0x51: shift CRSR RIGHT */ 2861.1Soki 5, ESC, '[', ' ', 'A', '~', /* 0x57: shift CRSR LEFT */ 2871.1Soki 5, ESC, '[', '1', '0', '~', /* 0x5D: shift F1 */ 2881.1Soki 5, ESC, '[', '1', '1', '~', /* 0x63: shift F2 */ 2891.1Soki 5, ESC, '[', '1', '2', '~', /* 0x69: shift F3 */ 2901.1Soki 5, ESC, '[', '1', '3', '~', /* 0x6F: shift F4 */ 2911.1Soki 5, ESC, '[', '1', '4', '~', /* 0x75: shift F5 */ 2921.1Soki 5, ESC, '[', '1', '5', '~', /* 0x7B: shift F6 */ 2931.1Soki 5, ESC, '[', '1', '6', '~', /* 0x81: shift F7 */ 2941.1Soki 5, ESC, '[', '1', '7', '~', /* 0x87: shift F8 */ 2951.1Soki 5, ESC, '[', '1', '8', '~', /* 0x8D: shift F9 */ 2961.1Soki 5, ESC, '[', '1', '9', '~', /* 0x93: shift F10 */ 2971.1Soki 3, ESC, '[', 'Z', /* 0x99: shift TAB */ 2981.1Soki 2, ESC, '[', /* 0x9d: alt ESC == CSI */ 2991.1Soki }, 3001.1Soki}; 3011.1Soki 3021.1Sokiunsigned char acctable[KBD_NUM_ACC][64] = { 3031.1Soki}; 304