kbdmap.c revision 1.12
11.12Saymeric/* $NetBSD: kbdmap.c,v 1.12 2002/01/28 09:57:00 aymeric Exp $ */ 21.5Schopps 31.8Schopps/* 41.8Schopps * Copyright (c) 1993 Markus Wild 51.8Schopps * All rights reserved. 61.8Schopps * 71.8Schopps * Redistribution and use in source and binary forms, with or without 81.8Schopps * modification, are permitted provided that the following conditions 91.8Schopps * are met: 101.8Schopps * 1. Redistributions of source code must retain the above copyright 111.8Schopps * notice, this list of conditions and the following disclaimer. 121.8Schopps * 2. Redistributions in binary form must reproduce the above copyright 131.8Schopps * notice, this list of conditions and the following disclaimer in the 141.8Schopps * documentation and/or other materials provided with the distribution. 151.8Schopps * 3. All advertising materials mentioning features or use of this software 161.8Schopps * must display the following acknowledgement: 171.8Schopps * This product includes software developed by Markus Wild. 181.8Schopps * 4. The name of the author may not be used to endorse or promote products 191.8Schopps * derived from this software without specific prior written permission 201.8Schopps * 211.8Schopps * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 221.8Schopps * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 231.8Schopps * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 241.8Schopps * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 251.8Schopps * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 261.8Schopps * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 271.8Schopps * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 281.8Schopps * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 291.8Schopps * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 301.8Schopps * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 311.8Schopps */ 321.12Saymeric 331.12Saymeric#include <sys/cdefs.h> 341.12Saymeric__KERNEL_RCSID(0, "$NetBSD: kbdmap.c,v 1.12 2002/01/28 09:57:00 aymeric Exp $"); 351.12Saymeric 361.6Schopps#include <amiga/dev/kbdmap.h> 371.1Smw 381.11Saymeric/* define a default keymap. This can be changed by keyboard ioctl's 391.1Smw (later at least..) */ 401.1Smw 411.1Smw/* mode shortcuts: */ 421.1Smw#define S KBD_MODE_STRING 431.1Smw#define DG (KBD_MODE_DEAD | KBD_MODE_GRAVE) 441.1Smw#define DA (KBD_MODE_DEAD | KBD_MODE_ACUTE) 451.1Smw#define DC (KBD_MODE_DEAD | KBD_MODE_CIRC) 461.1Smw#define DT (KBD_MODE_DEAD | KBD_MODE_TILDE) 471.1Smw#define DD (KBD_MODE_DEAD | KBD_MODE_DIER) 481.1Smw#define C KBD_MODE_CAPS 491.1Smw#define K KBD_MODE_KPAD 501.1Smw 511.3Smwstruct kbdmap kbdmap; 521.3Smwstruct kbdmap ascii_kbdmap = { 531.1Smw /* normal map */ 541.1Smw { 551.9Sveego { 0, '`' }, /* 0x00 */ 561.9Sveego { 0, '1' }, 571.9Sveego { 0, '2' }, 581.9Sveego { 0, '3' }, 591.9Sveego { 0, '4' }, 601.9Sveego { 0, '5' }, 611.9Sveego { 0, '6' }, 621.9Sveego { 0, '7' }, 631.9Sveego { 0, '8' }, /* 0x08 */ 641.9Sveego { 0, '9' }, 651.9Sveego { 0, '0' }, 661.9Sveego { 0, '-' }, 671.9Sveego { 0, '=' }, 681.9Sveego { 0, '\\' }, 691.9Sveego { 0, 0 }, 701.9Sveego { K, '0' }, 711.9Sveego { C, 'q' }, /* 0x10 */ 721.9Sveego { C, 'w' }, 731.9Sveego { C, 'e' }, 741.9Sveego { C, 'r' }, 751.9Sveego { C, 't' }, 761.9Sveego { C, 'y' }, 771.9Sveego { C, 'u' }, 781.9Sveego { C, 'i' }, 791.9Sveego { C, 'o' }, /* 0x18 */ 801.9Sveego { C, 'p' }, 811.9Sveego { 0, '[' }, 821.9Sveego { 0, ']' }, 831.9Sveego { 0, 0 }, 841.9Sveego { K, '1' }, 851.9Sveego { K, '2' }, 861.9Sveego { K, '3' }, 871.9Sveego { C, 'a' }, /* 0x20 */ 881.9Sveego { C, 's' }, 891.9Sveego { C, 'd' }, 901.9Sveego { C, 'f' }, 911.9Sveego { C, 'g' }, 921.9Sveego { C, 'h' }, 931.9Sveego { C, 'j' }, 941.9Sveego { C, 'k' }, 951.9Sveego { C, 'l' }, /* 0x28 */ 961.9Sveego { 0, ';' }, 971.9Sveego { 0, '\'' }, 981.9Sveego { 0, 0 }, 991.9Sveego { 0, 0 }, 1001.9Sveego { K, '4' }, 1011.9Sveego { K, '5' }, 1021.9Sveego { K, '6' }, 1031.9Sveego { 0, 0 }, /* 0x30 */ 1041.11Saymeric { C, 'z' }, 1051.9Sveego { C, 'x' }, 1061.9Sveego { C, 'c' }, 1071.9Sveego { C, 'v' }, 1081.9Sveego { C, 'b' }, 1091.9Sveego { C, 'n' }, 1101.9Sveego { C, 'm' }, 1111.9Sveego { 0, ',' }, /* 0x38 */ 1121.9Sveego { 0, '.' }, 1131.9Sveego { 0, '/' }, 1141.9Sveego { 0, 0 }, 1151.9Sveego { K, '.' }, 1161.9Sveego { K, '7' }, 1171.9Sveego { K, '8' }, 1181.9Sveego { K, '9' }, 1191.9Sveego { 0, ' ' }, /* 0x40 */ 1201.9Sveego { 0, DEL }, /* really BS, DEL & BS swapped */ 1211.9Sveego { 0, '\t' }, 1221.9Sveego { K, '\r' }, /* enter */ 1231.9Sveego { 0, '\r' }, /* return */ 1241.9Sveego { 0, ESC }, 1251.9Sveego { 0, '\b' }, /* really DEL, BS & DEL swapped */ 1261.9Sveego { 0, 0 }, 1271.9Sveego { 0, 0 }, /* 0x48 */ 1281.9Sveego { 0, 0 }, 1291.9Sveego { K, '-' }, 1301.9Sveego { 0, 0 }, 1311.9Sveego { S, 0x00 }, /* now it gets hairy.. CRSR UP */ 1321.9Sveego { S, 0x04 }, /* CRSR DOWN */ 1331.9Sveego { S, 0x08 }, /* CRSR RIGHT */ 1341.9Sveego { S, 0x0C }, /* CRSR LEFT */ 1351.9Sveego { S, 0x10 }, /* 0x50 F1 */ 1361.9Sveego { S, 0x15 }, /* F2 */ 1371.9Sveego { S, 0x1A }, /* F3 */ 1381.9Sveego { S, 0x1F }, /* F4 */ 1391.9Sveego { S, 0x24 }, /* F5 */ 1401.9Sveego { S, 0x29 }, /* F6 */ 1411.9Sveego { S, 0x2E }, /* F7 */ 1421.10Sveego { S, 0x33 }, /* F8 */ 1431.10Sveego { S, 0x38 }, /* 0x58 F9 */ 1441.9Sveego { S, 0x3D }, /* F10 */ 1451.9Sveego { K, '(' }, 1461.9Sveego { K, ')' }, 1471.9Sveego { K, '/' }, 1481.9Sveego { K, '*' }, 1491.10Sveego { K, '+' }, 1501.9Sveego { S, 0x42 } /* HELP */ 1511.1Smw }, 1521.1Smw 1531.1Smw /* shifted map */ 1541.1Smw { 1551.9Sveego { 0, '~' }, /* 0x00 */ 1561.9Sveego { 0, '!' }, 1571.9Sveego { 0, '@' }, 1581.9Sveego { 0, '#' }, 1591.9Sveego { 0, '$' }, 1601.9Sveego { 0, '%' }, 1611.9Sveego { 0, '^' }, 1621.9Sveego { 0, '&' }, 1631.9Sveego { 0, '*' }, /* 0x08 */ 1641.9Sveego { 0, '(' }, 1651.9Sveego { 0, ')' }, 1661.9Sveego { 0, '_' }, 1671.9Sveego { 0, '+' }, 1681.9Sveego { 0, '|' }, 1691.9Sveego { 0, 0 }, 1701.9Sveego { K, '0' }, 1711.9Sveego { C, 'Q' }, /* 0x10 */ 1721.9Sveego { C, 'W' }, 1731.9Sveego { C, 'E' }, 1741.9Sveego { C, 'R' }, 1751.9Sveego { C, 'T' }, 1761.9Sveego { C, 'Y' }, 1771.9Sveego { C, 'U' }, 1781.9Sveego { C, 'I' }, 1791.9Sveego { C, 'O' }, /* 0x18 */ 1801.9Sveego { C, 'P' }, 1811.9Sveego { 0, '{' }, 1821.9Sveego { 0, '}' }, 1831.9Sveego { 0, 0 }, 1841.9Sveego { K, '1' }, 1851.9Sveego { K, '2' }, 1861.9Sveego { K, '3' }, 1871.9Sveego { C, 'A' }, /* 0x20 */ 1881.9Sveego { C, 'S' }, 1891.9Sveego { C, 'D' }, 1901.9Sveego { C, 'F' }, 1911.9Sveego { C, 'G' }, 1921.9Sveego { C, 'H' }, 1931.9Sveego { C, 'J' }, 1941.9Sveego { C, 'K' }, 1951.9Sveego { C, 'L' }, /* 0x28 */ 1961.9Sveego { 0, ':' }, 1971.9Sveego { 0, '\"' }, 1981.9Sveego { 0, 0 }, 1991.9Sveego { 0, 0 }, 2001.9Sveego { K, '4' }, 2011.9Sveego { K, '5' }, 2021.9Sveego { K, '6' }, 2031.9Sveego { 0, 0 }, /* 0x30 */ 2041.11Saymeric { C, 'Z' }, 2051.9Sveego { C, 'X' }, 2061.9Sveego { C, 'C' }, 2071.9Sveego { C, 'V' }, 2081.9Sveego { C, 'B' }, 2091.9Sveego { C, 'N' }, 2101.9Sveego { C, 'M' }, 2111.9Sveego { 0, '<' }, /* 0x38 */ 2121.9Sveego { 0, '>' }, 2131.9Sveego { 0, '?' }, 2141.9Sveego { 0, 0 }, 2151.9Sveego { K, '.' }, 2161.9Sveego { K, '7' }, 2171.9Sveego { K, '8' }, 2181.9Sveego { K, '9' }, 2191.9Sveego { 0, ' ' }, /* 0x40 */ 2201.9Sveego { 0, DEL }, /* really BS, DEL & BS swapped */ 2211.9Sveego { S, 0x99 }, /* shift TAB */ 2221.9Sveego { K, '\r' }, /* enter */ 2231.9Sveego { 0, '\r' }, /* return */ 2241.9Sveego { 0, ESC }, 2251.9Sveego { 0, '\b' }, /* really DEL, BS & DEL swapped */ 2261.9Sveego { 0, 0 }, 2271.9Sveego { 0, 0 }, /* 0x48 */ 2281.9Sveego { 0, 0 }, 2291.9Sveego { K, '-' }, 2301.9Sveego { 0, 0 }, 2311.9Sveego { S, 0x47 }, /* shift CRSR UP */ 2321.9Sveego { S, 0x4C }, /* shift CRSR DOWN */ 2331.9Sveego { S, 0x51 }, /* shift CRSR RIGHT */ 2341.9Sveego { S, 0x57 }, /* shift CRSR LEFT */ 2351.9Sveego { S, 0x5D }, /* 0x50 shift F1 */ 2361.9Sveego { S, 0x63 }, /* shift F2 */ 2371.9Sveego { S, 0x69 }, /* shift F3 */ 2381.9Sveego { S, 0x6F }, /* shift F4 */ 2391.9Sveego { S, 0x75 }, /* shift F5 */ 2401.9Sveego { S, 0x7B }, /* shift F6 */ 2411.9Sveego { S, 0x81 }, /* shift F7 */ 2421.10Sveego { S, 0x87 }, /* shift F8 */ 2431.10Sveego { S, 0x8D }, /* 0x58 shift F9 */ 2441.9Sveego { S, 0x93 }, /* shift F10 */ 2451.9Sveego { K, '(' }, 2461.9Sveego { K, ')' }, 2471.9Sveego { K, '/' }, 2481.9Sveego { K, '*' }, 2491.10Sveego { K, '+' }, 2501.9Sveego { S, 0x42 } /* HELP (no special shift code) */ 2511.1Smw }, 2521.1Smw 2531.1Smw 2541.1Smw /* alt map */ 2551.1Smw { 2561.10Sveego { 0, '`' }, /* 0x00 */ 2571.9Sveego { 0, '�' }, 2581.9Sveego { 0, '�' }, 2591.9Sveego { 0, '�' }, 2601.9Sveego { 0, '�' }, 2611.9Sveego { 0, '�' }, 2621.9Sveego { 0, '�' }, 2631.9Sveego { 0, '�' }, 2641.9Sveego { 0, '�' }, /* 0x08 */ 2651.9Sveego { 0, '�' }, 2661.9Sveego { 0, '�' }, 2671.10Sveego { 0, '-' }, 2681.10Sveego { 0, '=' }, 2691.10Sveego { 0, '\\' }, 2701.10Sveego { 0, 0 }, 2711.10Sveego { K, '0' }, 2721.9Sveego { C, '�' }, /* 0x10 */ 2731.9Sveego { 0, '�' }, 2741.9Sveego { 0, '�' }, 2751.9Sveego { 0, '�' }, 2761.9Sveego { C, '�' }, 2771.9Sveego { 0, '�' }, 2781.9Sveego { 0, '�' }, 2791.9Sveego { 0, '�' }, 2801.9Sveego { C, '�' }, /* 0x18 */ 2811.9Sveego { 0, '�' }, 2821.10Sveego { 0, '[' }, 2831.10Sveego { 0, ']' }, 2841.10Sveego { 0, 0 }, 2851.10Sveego { K, '1' }, 2861.10Sveego { K, '2' }, 2871.10Sveego { K, '3' }, 2881.9Sveego { C, '�' }, /* 0x20 */ 2891.9Sveego { 0, '�' }, 2901.9Sveego { C, '�' }, 2911.9Sveego { DA, '�' }, 2921.10Sveego { DG, '`' }, 2931.10Sveego { DC, '^' }, 2941.10Sveego { DT, '~' }, 2951.9Sveego { DD, '�' }, 2961.9Sveego { 0, '�' }, /* 0x28 */ 2971.10Sveego { 0, ';' }, 2981.10Sveego { 0, '\'' }, 2991.10Sveego { 0, 0 }, 3001.10Sveego { 0, 0 }, 3011.10Sveego { K, '4' }, 3021.10Sveego { K, '5' }, 3031.10Sveego { K, '6' }, 3041.10Sveego { 0, 0 }, /* 0x30 */ 3051.11Saymeric { 0, '�' }, 3061.9Sveego { 0, '�' }, 3071.9Sveego { C, '�' }, 3081.9Sveego { 0, '�' }, 3091.9Sveego { 0, '�' }, 3101.9Sveego { 0, '�' }, 3111.9Sveego { 0, '�' }, 3121.10Sveego { 0, ',' }, /* 0x38 */ 3131.10Sveego { 0, '.' }, 3141.10Sveego { 0, '/' }, 3151.10Sveego { 0, 0 }, 3161.10Sveego { K, '.' }, 3171.10Sveego { K, '7' }, 3181.10Sveego { K, '8' }, 3191.10Sveego { K, '9' }, 3201.10Sveego { 0, ' ' }, /* 0x40 */ 3211.10Sveego { 0, DEL }, /* really BS, DEL & BS swapped */ 3221.10Sveego { 0, '\t' }, 3231.10Sveego { K, '\r' }, /* enter */ 3241.10Sveego { 0, '\r' }, /* return */ 3251.10Sveego { S, 0x9d }, /* CSI */ 3261.10Sveego { 0, '\b' }, /* really DEL, BS & DEL swapped */ 3271.10Sveego { 0, 0 }, 3281.10Sveego { 0, 0 }, /* 0x48 */ 3291.10Sveego { 0, 0 }, 3301.10Sveego { K, '-' }, 3311.10Sveego { 0, 0 }, 3321.10Sveego { S, 0x00 }, /* now it gets hairy.. CRSR UP */ 3331.10Sveego { S, 0x04 }, /* CRSR DOWN */ 3341.10Sveego { S, 0x08 }, /* CRSR RIGHT */ 3351.10Sveego { S, 0x0C }, /* CRSR LEFT */ 3361.10Sveego { S, 0x10 }, /* 0x50 F1 */ 3371.10Sveego { S, 0x15 }, /* F2 */ 3381.10Sveego { S, 0x1A }, /* F3 */ 3391.10Sveego { S, 0x1F }, /* F4 */ 3401.10Sveego { S, 0x24 }, /* F5 */ 3411.10Sveego { S, 0x29 }, /* F6 */ 3421.10Sveego { S, 0x2E }, /* F7 */ 3431.10Sveego { S, 0x33 }, /* F8 */ 3441.10Sveego { S, 0x38 }, /* 0x58 F9 */ 3451.10Sveego { S, 0x3D }, /* F10 */ 3461.10Sveego { K, '(' }, 3471.10Sveego { K, ')' }, 3481.10Sveego { K, '/' }, 3491.10Sveego { K, '*' }, 3501.10Sveego { K, '+' }, 3511.10Sveego { S, 0x42 } /* HELP */ 3521.1Smw }, 3531.1Smw 3541.1Smw /* shift alt map */ 3551.1Smw { 3561.10Sveego { 0, '~' }, /* 0x00 */ 3571.10Sveego { 0, '!' }, 3581.10Sveego { 0, '@' }, 3591.10Sveego { 0, '#' }, 3601.10Sveego { 0, '$' }, 3611.10Sveego { 0, '%' }, 3621.10Sveego { 0, '^' }, 3631.10Sveego { 0, '&' }, 3641.10Sveego { 0, '*' }, /* 0x08 */ 3651.10Sveego { 0, '(' }, 3661.10Sveego { 0, ')' }, 3671.10Sveego { 0, '_' }, 3681.10Sveego { 0, '+' }, 3691.10Sveego { 0, '|' }, 3701.10Sveego { 0, 0 }, 3711.10Sveego { K, '0' }, 3721.9Sveego { C, '�' }, /* 0x10 */ 3731.9Sveego { 0, '�' }, 3741.9Sveego { 0, '�' }, 3751.9Sveego { 0, '�' }, 3761.9Sveego { C, '�' }, 3771.9Sveego { 0, '�' }, 3781.9Sveego { 0, '�' }, 3791.9Sveego { 0, '�' }, 3801.9Sveego { C, '�' }, /* 0x18 */ 3811.9Sveego { 0, '�' }, 3821.10Sveego { 0, '[' }, 3831.10Sveego { 0, ']' }, 3841.10Sveego { 0, 0 }, 3851.10Sveego { K, '1' }, 3861.10Sveego { K, '2' }, 3871.10Sveego { K, '3' }, 3881.9Sveego { C, '�' }, /* 0x20 */ 3891.9Sveego { 0, '�' }, 3901.9Sveego { C, '�' }, 3911.9Sveego { DA, '�' }, 3921.10Sveego { DG, '`' }, 3931.10Sveego { DC, '^' }, 3941.10Sveego { DT, '~' }, 3951.9Sveego { DD, '�' }, 3961.9Sveego { 0, '�' }, /* 0x28 */ 3971.10Sveego { 0, ';' }, 3981.10Sveego { 0, '\'' }, 3991.10Sveego { 0, 0 }, 4001.10Sveego { 0, 0 }, 4011.10Sveego { K, '4' }, 4021.10Sveego { K, '5' }, 4031.10Sveego { K, '6' }, 4041.10Sveego { 0, 0 }, /* 0x30 */ 4051.11Saymeric { 0, '�' }, 4061.9Sveego { 0, '�' }, 4071.9Sveego { C, '�' }, 4081.9Sveego { 0, '�' }, 4091.9Sveego { 0, '�' }, 4101.9Sveego { 0, '�' }, 4111.9Sveego { 0, '�' }, 4121.10Sveego { 0, ',' }, /* 0x38 */ 4131.10Sveego { 0, '.' }, 4141.10Sveego { 0, '/' }, 4151.10Sveego { 0, 0 }, 4161.10Sveego { K, '.' }, 4171.10Sveego { K, '7' }, 4181.10Sveego { K, '8' }, 4191.10Sveego { K, '9' }, 4201.10Sveego { 0, ' ' }, /* 0x40 */ 4211.10Sveego { 0, DEL }, /* really BS, DEL & BS swapped */ 4221.10Sveego { 0, '\t' }, 4231.10Sveego { K, '\r' }, /* enter */ 4241.10Sveego { 0, '\r' }, /* return */ 4251.10Sveego { S, 0x9d }, /* CSI */ 4261.10Sveego { 0, '\b' }, /* really DEL, BS & DEL swapped */ 4271.10Sveego { 0, 0 }, 4281.10Sveego { 0, 0 }, /* 0x48 */ 4291.10Sveego { 0, 0 }, 4301.10Sveego { K, '-' }, 4311.10Sveego { 0, 0 }, 4321.10Sveego { S, 0x00 }, /* now it gets hairy.. CRSR UP */ 4331.10Sveego { S, 0x04 }, /* CRSR DOWN */ 4341.10Sveego { S, 0x08 }, /* CRSR RIGHT */ 4351.10Sveego { S, 0x0C }, /* CRSR LEFT */ 4361.10Sveego { S, 0x10 }, /* 0x50 F1 */ 4371.10Sveego { S, 0x15 }, /* F2 */ 4381.10Sveego { S, 0x1A }, /* F3 */ 4391.10Sveego { S, 0x1F }, /* F4 */ 4401.10Sveego { S, 0x24 }, /* F5 */ 4411.10Sveego { S, 0x29 }, /* F6 */ 4421.10Sveego { S, 0x2E }, /* F7 */ 4431.10Sveego { S, 0x33 }, /* F8 */ 4441.10Sveego { S, 0x38 }, /* 0x58 F9 */ 4451.10Sveego { S, 0x3D }, /* F10 */ 4461.10Sveego { K, '(' }, 4471.10Sveego { K, ')' }, 4481.10Sveego { K, '/' }, 4491.10Sveego { K, '*' }, 4501.10Sveego { K, '+' }, 4511.10Sveego { S, 0x42 } /* HELP */ 4521.1Smw }, 4531.1Smw 4541.11Saymeric { 4551.1Smw /* string table. If there's a better way to get the offsets into the 4561.1Smw above table, please tell me.. 4571.11Saymeric 4581.1Smw NOTE: save yourself and others a lot of grief by *not* using 4591.1Smw CSI == 0x9b, using the two-character sequence gives 4601.1Smw much less trouble, especially in GNU-Emacs.. */ 4611.11Saymeric 4621.1Smw 3, ESC, '[', 'A', /* 0x00: CRSR UP */ 4631.1Smw 3, ESC, '[', 'B', /* 0x04: CRSR DOWN */ 4641.1Smw 3, ESC, '[', 'C', /* 0x08: CRSR RIGHT */ 4651.1Smw 3, ESC, '[', 'D', /* 0x0C: CRSR LEFT */ 4661.1Smw 4, ESC, '[', '0', '~', /* 0x10: F1 */ 4671.1Smw 4, ESC, '[', '1', '~', /* 0x15: F2 */ 4681.1Smw 4, ESC, '[', '2', '~', /* 0x1A: F3 */ 4691.1Smw 4, ESC, '[', '3', '~', /* 0x1F: F4 */ 4701.1Smw 4, ESC, '[', '4', '~', /* 0x24: F5 */ 4711.1Smw 4, ESC, '[', '5', '~', /* 0x29: F6 */ 4721.1Smw 4, ESC, '[', '6', '~', /* 0x2E: F7 */ 4731.1Smw 4, ESC, '[', '7', '~', /* 0x33: F8 */ 4741.1Smw 4, ESC, '[', '8', '~', /* 0x38: F9 */ 4751.1Smw 4, ESC, '[', '9', '~', /* 0x3D: F10 */ 4761.1Smw 4, ESC, '[', '?', '~', /* 0x42: HELP */ 4771.1Smw 4781.1Smw 4, ESC, '[', 'T', '~', /* 0x47: shift CRSR UP */ 4791.1Smw 4, ESC, '[', 'S', '~', /* 0x4C: shift CRSR DOWN */ 4801.1Smw 5, ESC, '[', ' ', '@', '~', /* 0x51: shift CRSR RIGHT */ 4811.1Smw 5, ESC, '[', ' ', 'A', '~', /* 0x57: shift CRSR LEFT */ 4821.1Smw 5, ESC, '[', '1', '0', '~', /* 0x5D: shift F1 */ 4831.1Smw 5, ESC, '[', '1', '1', '~', /* 0x63: shift F2 */ 4841.1Smw 5, ESC, '[', '1', '2', '~', /* 0x69: shift F3 */ 4851.1Smw 5, ESC, '[', '1', '3', '~', /* 0x6F: shift F4 */ 4861.1Smw 5, ESC, '[', '1', '4', '~', /* 0x75: shift F5 */ 4871.1Smw 5, ESC, '[', '1', '5', '~', /* 0x7B: shift F6 */ 4881.1Smw 5, ESC, '[', '1', '6', '~', /* 0x81: shift F7 */ 4891.1Smw 5, ESC, '[', '1', '7', '~', /* 0x87: shift F8 */ 4901.1Smw 5, ESC, '[', '1', '8', '~', /* 0x8D: shift F9 */ 4911.1Smw 5, ESC, '[', '1', '9', '~', /* 0x93: shift F10 */ 4921.1Smw 3, ESC, '[', 'Z', /* 0x99: shift TAB */ 4931.3Smw 2, ESC, '[', /* 0x9d: alt ESC == CSI */ 4941.1Smw }, 4951.1Smw}; 4961.1Smw 4971.1Smwunsigned char acctable[KBD_NUM_ACC][64] = { 4981.1Smw { "@�BCD�FGH�JKLMN�PQRST�VWXYZ[\\]^_" 4991.1Smw "`�bcd�fgh�jklmn�pqrst�vwxyz{|}~\177"}, /* KBD_ACC_GRAVE */ 5001.11Saymeric 5011.1Smw { "@�BCD�FGH�JKLMN�PQRST�VWXYZ[\\]^_" 5021.1Smw "`�bcd�fgh�jklmn�pqrst�vwxyz{|}~\177"}, /* KBD_ACC_ACUTE */ 5031.11Saymeric 5041.1Smw { "@�BCD�FGH�JKLMN�PQRST�VWXYZ[\\]^_" 5051.1Smw "`�bcd�fgh�jklmn�pqrst�vwxyz{|}~\177"}, /* KBD_ACC_CIRC */ 5061.1Smw 5071.1Smw { "@�BCDEFGHIJKLM��PQRSTUVWXYZ[\\]^_" 5081.1Smw "`�bcdefghijklm��pqrstuvwxyz{|}~\177"}, /* KBD_ACC_TILDE */ 5091.11Saymeric 5101.1Smw { "@�BCD�FGH�JKLMN�PQRST�VWXYZ[\\]^_" 5111.1Smw "`�bcd�fgh�jklmn�pqrst�vwxyz{|}~\177"}, /* KBD_ACC_DIER */ 5121.1Smw}; 5131.1Smw 514