11.7Sisaki/* $NetBSD: jis_kmap.c,v 1.7 2024/01/07 07:58:34 isaki Exp $ */ 21.1Soki/* from: arch/amiga/dev/kbdmap.c */ 31.1Soki/* modified for X680x0 by Masaru Oki */ 41.3Slukem 51.3Slukem#include <sys/cdefs.h> 61.7Sisaki__RCSID("$NetBSD: jis_kmap.c,v 1.7 2024/01/07 07:58:34 isaki Exp $"); 71.1Soki 81.4Sminoura#include <machine/kbdmap.h> 91.1Soki 101.7Sisaki/* define a default keymap. This can be changed by keyboard ioctl's 111.1Soki (later at least..) */ 121.1Soki 131.1Soki/* mode shortcuts: */ 141.1Soki#define S KBD_MODE_STRING 151.1Soki#define C KBD_MODE_CAPS 161.1Soki#define K KBD_MODE_KPAD 171.1Soki#define D KBD_MODE_DEAD 181.1Soki 191.1Sokistruct kbdmap ascii_kbdmap = { 201.1Soki /* normal map */ 211.1Soki { 221.6Stsutsui {0, 0}, /* 0x00 */ 231.6Stsutsui {0, ESC}, 241.6Stsutsui {0, '1'}, 251.6Stsutsui {0, '2'}, 261.6Stsutsui {0, '3'}, 271.6Stsutsui {0, '4'}, 281.6Stsutsui {0, '5'}, 291.6Stsutsui {0, '6'}, 301.6Stsutsui {0, '7'}, /* 0x08 */ 311.6Stsutsui {0, '8'}, 321.6Stsutsui {0, '9'}, 331.6Stsutsui {0, '0'}, 341.6Stsutsui {0, '-'}, 351.6Stsutsui {0, '^'}, 361.6Stsutsui {0, '\\'}, 371.6Stsutsui {0, DEL}, /* really BS, DEL & BS swapped */ 381.6Stsutsui {0, '\t'}, /* 0x10 */ 391.6Stsutsui {C, 'q'}, 401.6Stsutsui {C, 'w'}, 411.6Stsutsui {C, 'e'}, 421.6Stsutsui {C, 'r'}, 431.6Stsutsui {C, 't'}, 441.6Stsutsui {C, 'y'}, 451.6Stsutsui {C, 'u'}, 461.6Stsutsui {C, 'i'}, /* 0x18 */ 471.6Stsutsui {C, 'o'}, 481.6Stsutsui {C, 'p'}, 491.6Stsutsui {0, '@'}, 501.6Stsutsui {0, '['}, 511.6Stsutsui {0, '\r'}, /* return */ 521.6Stsutsui {C, 'a'}, 531.6Stsutsui {C, 's'}, 541.6Stsutsui {C, 'd'}, /* 0x20 */ 551.6Stsutsui {C, 'f'}, 561.6Stsutsui {C, 'g'}, 571.6Stsutsui {C, 'h'}, 581.6Stsutsui {C, 'j'}, 591.6Stsutsui {C, 'k'}, 601.6Stsutsui {C, 'l'}, 611.6Stsutsui {0, ';'}, 621.6Stsutsui {0, ':'}, /* 0x28 */ 631.6Stsutsui {0, ']'}, 641.6Stsutsui {C, 'z'}, 651.6Stsutsui {C, 'x'}, 661.6Stsutsui {C, 'c'}, 671.6Stsutsui {C, 'v'}, 681.6Stsutsui {C, 'b'}, 691.6Stsutsui {C, 'n'}, 701.6Stsutsui {C, 'm'}, /* 0x30 */ 711.6Stsutsui {0, ','}, 721.6Stsutsui {0, '.'}, 731.6Stsutsui {0, '/'}, 741.6Stsutsui {0, '_'}, 751.6Stsutsui {0, ' '}, 761.6Stsutsui {0, 0}, /* HOME */ 771.6Stsutsui {0, '\b'}, /* really DEL, BS & DEL swapped */ 781.6Stsutsui {0, 0}, /* 0x38 ROLLUP */ 791.6Stsutsui {0, 0}, /* ROLLDOWN */ 801.6Stsutsui {0, 0}, /* UNDO */ 811.6Stsutsui {S, 0x0C}, /* CRSR LEFT */ 821.6Stsutsui {S, 0x00}, /* now it gets hairy.. CRSR UP */ 831.6Stsutsui {S, 0x08}, /* CRSR RIGHT */ 841.6Stsutsui {S, 0x04}, /* CRSR DOWN */ 851.6Stsutsui {0, 0}, /* CLR */ 861.6Stsutsui {K, '/'}, /* 0x40 */ 871.6Stsutsui {K, '*'}, 881.6Stsutsui {K, '-'}, 891.6Stsutsui {K, '7'}, 901.6Stsutsui {K, '8'}, 911.6Stsutsui {K, '9'}, 921.6Stsutsui {K, '+'}, 931.6Stsutsui {K, '4'}, 941.6Stsutsui {K, '5'}, /* 0x48 */ 951.6Stsutsui {K, '6'}, 961.6Stsutsui {K, '='}, 971.6Stsutsui {K, '1'}, 981.6Stsutsui {K, '2'}, 991.6Stsutsui {K, '3'}, 1001.6Stsutsui {K, '\r'}, /* enter */ 1011.6Stsutsui {K, '0'}, 1021.6Stsutsui {K, ','}, /* 0x50 */ 1031.6Stsutsui {K, '.'}, 1041.6Stsutsui {0, 0}, 1051.6Stsutsui {0, 0}, 1061.6Stsutsui {S, 0x42}, /* HELP */ 1071.6Stsutsui {0, 0}, 1081.6Stsutsui {0, 0}, 1091.6Stsutsui {0, 0}, 1101.6Stsutsui {0, 0}, /* 0x58 */ 1111.6Stsutsui {0, 0}, 1121.6Stsutsui {0, 0}, 1131.6Stsutsui {0, 0}, 1141.6Stsutsui {0, 0}, 1151.6Stsutsui {0, 0}, 1161.6Stsutsui {0, 0}, 1171.6Stsutsui {0, 0}, 1181.6Stsutsui {0, 0}, /* 0x60 */ 1191.6Stsutsui {0, 0}, 1201.6Stsutsui {0, 0}, 1211.6Stsutsui {S, 0x10}, /* F1 */ 1221.6Stsutsui {S, 0x15}, /* F2 */ 1231.6Stsutsui {S, 0x1A}, /* F3 */ 1241.6Stsutsui {S, 0x1F}, /* F4 */ 1251.6Stsutsui {S, 0x24}, /* F5 */ 1261.6Stsutsui {S, 0x29}, /* F6 */ 1271.6Stsutsui {S, 0x2E}, /* F7 */ 1281.6Stsutsui {S, 0x33}, /* 0x58 F8 */ 1291.6Stsutsui {S, 0x38}, /* F9 */ 1301.6Stsutsui {S, 0x3D}, /* F10 */ 1311.1Soki }, 1321.1Soki 1331.1Soki /* shifted map */ 1341.1Soki { 1351.6Stsutsui {0, 0}, /* 0x00 */ 1361.6Stsutsui {0, ESC}, 1371.6Stsutsui {0, '!'}, 1381.6Stsutsui {0, '\"'}, 1391.6Stsutsui {0, '#'}, 1401.6Stsutsui {0, '$'}, 1411.6Stsutsui {0, '%'}, 1421.6Stsutsui {0, '&'}, 1431.6Stsutsui {0, '\''}, /* 0x08 */ 1441.6Stsutsui {0, '('}, 1451.6Stsutsui {0, ')'}, 1461.6Stsutsui {0, 0}, 1471.6Stsutsui {0, '='}, 1481.6Stsutsui {0, '~'}, 1491.6Stsutsui {0, '|'}, 1501.6Stsutsui {0, DEL}, /* really BS, DEL & BS swapped */ 1511.6Stsutsui {0, '\t'}, /* 0x10 shift TAB */ 1521.6Stsutsui {C, 'Q'}, 1531.6Stsutsui {C, 'W'}, 1541.6Stsutsui {C, 'E'}, 1551.6Stsutsui {C, 'R'}, 1561.6Stsutsui {C, 'T'}, 1571.6Stsutsui {C, 'Y'}, 1581.6Stsutsui {C, 'U'}, 1591.6Stsutsui {C, 'I'}, /* 0x18 */ 1601.6Stsutsui {C, 'O'}, 1611.6Stsutsui {C, 'P'}, 1621.6Stsutsui {0, '`'}, 1631.6Stsutsui {0, '{'}, 1641.6Stsutsui {0, '\r'}, /* return */ 1651.6Stsutsui {C, 'A'}, 1661.6Stsutsui {C, 'S'}, 1671.6Stsutsui {C, 'D'}, /* 0x20 */ 1681.6Stsutsui {C, 'F'}, 1691.6Stsutsui {C, 'G'}, 1701.6Stsutsui {C, 'H'}, 1711.6Stsutsui {C, 'J'}, 1721.6Stsutsui {C, 'K'}, 1731.6Stsutsui {C, 'L'}, 1741.6Stsutsui {0, '+'}, 1751.6Stsutsui {0, '*'}, /* 0x28 */ 1761.6Stsutsui {0, '}'}, 1771.7Sisaki {C, 'Z'}, 1781.6Stsutsui {C, 'X'}, 1791.6Stsutsui {C, 'C'}, 1801.6Stsutsui {C, 'V'}, 1811.6Stsutsui {C, 'B'}, 1821.6Stsutsui {C, 'N'}, 1831.6Stsutsui {C, 'M'}, /* 0x30 */ 1841.6Stsutsui {0, '<'}, /* 0x38 */ 1851.6Stsutsui {0, '>'}, 1861.6Stsutsui {0, '?'}, 1871.6Stsutsui {0, '_'}, 1881.6Stsutsui {0, ' '}, 1891.6Stsutsui {0, 0}, /* HOME */ 1901.6Stsutsui {0, '\b'}, /* really DEL, BS & DEL swapped */ 1911.6Stsutsui {0, 0}, /* 0x38 ROLLUP */ 1921.6Stsutsui {0, 0}, /* ROLLDOWN */ 1931.6Stsutsui {0, 0}, /* UNDO */ 1941.6Stsutsui {0, 0}, /* shift CRSR LEFT */ 1951.6Stsutsui {0, 0}, /* shift CRSR UP */ 1961.6Stsutsui {0, 0}, /* shift CRSR RIGHT */ 1971.6Stsutsui {0, 0}, /* shift CRSR DOWN */ 1981.6Stsutsui {D, 0}, /* CLR */ 1991.6Stsutsui {D, '/'}, /* 0x40 */ 2001.6Stsutsui {D, '*'}, 2011.6Stsutsui {D, '-'}, 2021.6Stsutsui {D, '7'}, 2031.6Stsutsui {D, '8'}, 2041.6Stsutsui {D, '9'}, 2051.6Stsutsui {D, '+'}, 2061.6Stsutsui {D, '4'}, 2071.6Stsutsui {D, '5'}, /* 0x48 */ 2081.6Stsutsui {D, '6'}, 2091.6Stsutsui {D, '='}, 2101.6Stsutsui {D, '1'}, 2111.6Stsutsui {D, '2'}, 2121.6Stsutsui {D, '3'}, 2131.6Stsutsui {K, '\r'}, /* enter */ 2141.6Stsutsui {D, '0'}, 2151.6Stsutsui {D, ','}, /* 0x50 */ 2161.6Stsutsui {D, '.'}, 2171.6Stsutsui {0, 0}, 2181.6Stsutsui {0, 0}, 2191.6Stsutsui {S, 0x42}, /* HELP */ 2201.6Stsutsui {0, 0}, 2211.6Stsutsui {0, 0}, 2221.6Stsutsui {0, 0}, 2231.6Stsutsui {0, 0}, /* 0x58 */ 2241.6Stsutsui {0, 0}, 2251.6Stsutsui {0, 0}, 2261.6Stsutsui {0, 0}, 2271.6Stsutsui {0, 0}, 2281.6Stsutsui {0, 0}, 2291.6Stsutsui {0, 0}, 2301.6Stsutsui {0, 0}, 2311.6Stsutsui {0, 0}, /* 0x60 */ 2321.6Stsutsui {0, 0}, 2331.6Stsutsui {0, 0}, 2341.6Stsutsui {S, 0x5D}, /* shift F1 */ 2351.6Stsutsui {S, 0x63}, /* shift F2 */ 2361.6Stsutsui {S, 0x69}, /* shift F3 */ 2371.6Stsutsui {S, 0x6F}, /* shift F4 */ 2381.6Stsutsui {S, 0x75}, /* shift F5 */ 2391.6Stsutsui {S, 0x7B}, /* shift F6 */ 2401.6Stsutsui {S, 0x81}, /* shift F7 */ 2411.6Stsutsui {S, 0x87}, /* 0x58 shift F8 */ 2421.6Stsutsui {S, 0x8D}, /* shift F9 */ 2431.6Stsutsui {S, 0x93}, /* shift F10 */ 2441.1Soki }, 2451.1Soki 2461.1Soki 2471.1Soki /* alt map */ 2481.1Soki { 2491.1Soki }, 2501.1Soki 2511.1Soki /* shift alt map */ 2521.1Soki { 2531.1Soki }, 2541.1Soki 2551.7Sisaki { 2561.1Soki /* string table. If there's a better way to get the offsets into the 2571.1Soki above table, please tell me.. 2581.7Sisaki 2591.1Soki NOTE: save yourself and others a lot of grief by *not* using 2601.1Soki CSI == 0x9b, using the two-character sequence gives 2611.1Soki much less trouble, especially in GNU-Emacs.. */ 2621.7Sisaki 2631.1Soki 3, ESC, '[', 'A', /* 0x00: CRSR UP */ 2641.1Soki 3, ESC, '[', 'B', /* 0x04: CRSR DOWN */ 2651.1Soki 3, ESC, '[', 'C', /* 0x08: CRSR RIGHT */ 2661.1Soki 3, ESC, '[', 'D', /* 0x0C: CRSR LEFT */ 2671.1Soki 4, ESC, '[', '0', '~', /* 0x10: F1 */ 2681.1Soki 4, ESC, '[', '1', '~', /* 0x15: F2 */ 2691.1Soki 4, ESC, '[', '2', '~', /* 0x1A: F3 */ 2701.1Soki 4, ESC, '[', '3', '~', /* 0x1F: F4 */ 2711.1Soki 4, ESC, '[', '4', '~', /* 0x24: F5 */ 2721.1Soki 4, ESC, '[', '5', '~', /* 0x29: F6 */ 2731.1Soki 4, ESC, '[', '6', '~', /* 0x2E: F7 */ 2741.1Soki 4, ESC, '[', '7', '~', /* 0x33: F8 */ 2751.1Soki 4, ESC, '[', '8', '~', /* 0x38: F9 */ 2761.1Soki 4, ESC, '[', '9', '~', /* 0x3D: F10 */ 2771.1Soki 4, ESC, '[', '?', '~', /* 0x42: HELP */ 2781.1Soki 2791.1Soki 4, ESC, '[', 'T', '~', /* 0x47: shift CRSR UP */ 2801.1Soki 4, ESC, '[', 'S', '~', /* 0x4C: shift CRSR DOWN */ 2811.1Soki 5, ESC, '[', ' ', '@', '~', /* 0x51: shift CRSR RIGHT */ 2821.1Soki 5, ESC, '[', ' ', 'A', '~', /* 0x57: shift CRSR LEFT */ 2831.1Soki 5, ESC, '[', '1', '0', '~', /* 0x5D: shift F1 */ 2841.1Soki 5, ESC, '[', '1', '1', '~', /* 0x63: shift F2 */ 2851.1Soki 5, ESC, '[', '1', '2', '~', /* 0x69: shift F3 */ 2861.1Soki 5, ESC, '[', '1', '3', '~', /* 0x6F: shift F4 */ 2871.1Soki 5, ESC, '[', '1', '4', '~', /* 0x75: shift F5 */ 2881.1Soki 5, ESC, '[', '1', '5', '~', /* 0x7B: shift F6 */ 2891.1Soki 5, ESC, '[', '1', '6', '~', /* 0x81: shift F7 */ 2901.1Soki 5, ESC, '[', '1', '7', '~', /* 0x87: shift F8 */ 2911.1Soki 5, ESC, '[', '1', '8', '~', /* 0x8D: shift F9 */ 2921.1Soki 5, ESC, '[', '1', '9', '~', /* 0x93: shift F10 */ 2931.1Soki 3, ESC, '[', 'Z', /* 0x99: shift TAB */ 2941.1Soki 2, ESC, '[', /* 0x9d: alt ESC == CSI */ 2951.1Soki }, 2961.1Soki}; 297