11.13Sjoerg/* $NetBSD: kbdmap.c,v 1.13 2014/08/08 21:13:05 joerg 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.13Sjoerg__KERNEL_RCSID(0, "$NetBSD: kbdmap.c,v 1.13 2014/08/08 21:13:05 joerg 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.13Sjoerg { 0, '\xb9' }, 2581.13Sjoerg { 0, '\xb2' }, 2591.13Sjoerg { 0, '\xb3' }, 2601.13Sjoerg { 0, '\xa2' }, 2611.13Sjoerg { 0, '\xbc' }, 2621.13Sjoerg { 0, '\xbd' }, 2631.13Sjoerg { 0, '\xbe' }, 2641.13Sjoerg { 0, '\xb7' }, /* 0x08 */ 2651.13Sjoerg { 0, '\xab' }, 2661.13Sjoerg { 0, '\xbb' }, 2671.10Sveego { 0, '-' }, 2681.10Sveego { 0, '=' }, 2691.10Sveego { 0, '\\' }, 2701.10Sveego { 0, 0 }, 2711.10Sveego { K, '0' }, 2721.13Sjoerg { C, '\xe5' }, /* 0x10 */ 2731.13Sjoerg { 0, '\xb0' }, 2741.13Sjoerg { 0, '\xa9' }, 2751.13Sjoerg { 0, '\xae' }, 2761.13Sjoerg { C, '\xfe' }, 2771.13Sjoerg { 0, '\xa4' }, 2781.13Sjoerg { 0, '\xb5' }, 2791.13Sjoerg { 0, '\xa1' }, 2801.13Sjoerg { C, '\xf8' }, /* 0x18 */ 2811.13Sjoerg { 0, '\xb6' }, 2821.10Sveego { 0, '[' }, 2831.10Sveego { 0, ']' }, 2841.10Sveego { 0, 0 }, 2851.10Sveego { K, '1' }, 2861.10Sveego { K, '2' }, 2871.10Sveego { K, '3' }, 2881.13Sjoerg { C, '\xe6' }, /* 0x20 */ 2891.13Sjoerg { 0, '\xdf' }, 2901.13Sjoerg { C, '\xf0' }, 2911.13Sjoerg { DA, '\xb4' }, 2921.10Sveego { DG, '`' }, 2931.10Sveego { DC, '^' }, 2941.10Sveego { DT, '~' }, 2951.13Sjoerg { DD, '\xa8' }, 2961.13Sjoerg { 0, '\xa3' }, /* 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.13Sjoerg { 0, '\xb1' }, 3061.13Sjoerg { 0, '\xd7' }, 3071.13Sjoerg { C, '\xe7' }, 3081.13Sjoerg { 0, '\xaa' }, 3091.13Sjoerg { 0, '\xba' }, 3101.13Sjoerg { 0, '\xad' }, 3111.13Sjoerg { 0, '\xb8' }, 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.13Sjoerg { C, '\xc5' }, /* 0x10 */ 3731.13Sjoerg { 0, '\xb0' }, 3741.13Sjoerg { 0, '\xa9' }, 3751.13Sjoerg { 0, '\xae' }, 3761.13Sjoerg { C, '\xde' }, 3771.13Sjoerg { 0, '\xa5' }, 3781.13Sjoerg { 0, '\xb5' }, 3791.13Sjoerg { 0, '\xa6' }, 3801.13Sjoerg { C, '\xd8' }, /* 0x18 */ 3811.13Sjoerg { 0, '\xb6' }, 3821.10Sveego { 0, '[' }, 3831.10Sveego { 0, ']' }, 3841.10Sveego { 0, 0 }, 3851.10Sveego { K, '1' }, 3861.10Sveego { K, '2' }, 3871.10Sveego { K, '3' }, 3881.13Sjoerg { C, '\xc6' }, /* 0x20 */ 3891.13Sjoerg { 0, '\xa7' }, 3901.13Sjoerg { C, '\xd0' }, 3911.13Sjoerg { DA, '\xb4' }, 3921.10Sveego { DG, '`' }, 3931.10Sveego { DC, '^' }, 3941.10Sveego { DT, '~' }, 3951.13Sjoerg { DD, '\xa8' }, 3961.13Sjoerg { 0, '\xa3' }, /* 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.13Sjoerg { 0, '\xb1' }, 4061.13Sjoerg { 0, '\xd7' }, 4071.13Sjoerg { C, '\xe7' }, 4081.13Sjoerg { 0, '\xaa' }, 4091.13Sjoerg { 0, '\xba' }, 4101.13Sjoerg { 0, '\xad' }, 4111.13Sjoerg { 0, '\xb8' }, 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.13Sjoerg { "@\xc0""BCD\xc8""FGH\xccJKLMN\xd2PQRST\xd9VWXYZ[\\]^_" 4991.13Sjoerg "`\xe0""bcd\xe8""fgh\xecjklmn\xf2pqrst\xf9vwxyz{|}~\177"}, /* KBD_ACC_GRAVE */ 5001.11Saymeric 5011.13Sjoerg { "@\xc1""BCD\xc9""FGH\xcdJKLMN\xd3PQRST\xdaVWXYZ[\\]^_" 5021.13Sjoerg "`\xe1""bcd\xe9""fgh\xedjklmn\xf3pqrst\xfavwxyz{|}~\177"}, /* KBD_ACC_ACUTE */ 5031.11Saymeric 5041.13Sjoerg { "@\xc2""BCD\xca""FGH\xceJKLMN\xd4PQRST\xdbVWXYZ[\\]^_" 5051.13Sjoerg "`\xe2""bcd\xea""fgh\xeejklmn\xf4pqrst\xfbvwxyz{|}~\177"}, /* KBD_ACC_CIRC */ 5061.1Smw 5071.13Sjoerg { "@\xc3""BCDEFGHIJKLM\xd1\xd5PQRSTUVWXYZ[\\]^_" 5081.13Sjoerg "`\xe3""bcdefghijklm\xf1\xd5pqrstuvwxyz{|}~\177"}, /* KBD_ACC_TILDE */ 5091.11Saymeric 5101.13Sjoerg { "@\xc4""BCD\xcb""FGH\xcfJKLMN\xd6PQRST\xdcVWXYZ[\\]^_" 5111.13Sjoerg "`\xe4""bcd\xeb""fgh\xefjklmn\xf6pqrst\xfcvwxyz{|}~\177"}, /* KBD_ACC_DIER */ 5121.1Smw}; 5131.1Smw 514