Annotation of kernel/bsd/dev/ppc/keyboard.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
                      7:  * Reserved.  This file contains Original Code and/or Modifications of
                      8:  * Original Code as defined in and that are subject to the Apple Public
                      9:  * Source License Version 1.1 (the "License").  You may not use this file
                     10:  * except in compliance with the License.  Please obtain a copy of the
                     11:  * License at http://www.apple.com/publicsource and read it before using
                     12:  * this file.
                     13:  * 
                     14:  * The Original Code and all software distributed under the License are
                     15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     19:  * License for the specific language governing rights and limitations
                     20:  * under the License.
                     21:  * 
                     22:  * @APPLE_LICENSE_HEADER_END@
                     23:  */
                     24: 
                     25: /*
                     26:  * Copyright 1996 1995 by Open Software Foundation, Inc. 1997 1996 1995 1994 1993 1992 1991  
                     27:  *              All Rights Reserved 
                     28:  *  
                     29:  * Permission to use, copy, modify, and distribute this software and 
                     30:  * its documentation for any purpose and without fee is hereby granted, 
                     31:  * provided that the above copyright notice appears in all copies and 
                     32:  * that both the copyright notice and this permission notice appear in 
                     33:  * supporting documentation. 
                     34:  *  
                     35:  * OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE 
                     36:  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
                     37:  * FOR A PARTICULAR PURPOSE. 
                     38:  *  
                     39:  * IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR 
                     40:  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 
                     41:  * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT, 
                     42:  * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 
                     43:  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 
                     44:  * 
                     45:  */
                     46: /*
                     47:  * Copyright 1996 1995 by Apple Computer, Inc. 1997 1996 1995 1994 1993 1992 1991  
                     48:  *              All Rights Reserved 
                     49:  *  
                     50:  * Permission to use, copy, modify, and distribute this software and 
                     51:  * its documentation for any purpose and without fee is hereby granted, 
                     52:  * provided that the above copyright notice appears in all copies and 
                     53:  * that both the copyright notice and this permission notice appear in 
                     54:  * supporting documentation. 
                     55:  *  
                     56:  * APPLE COMPUTER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE 
                     57:  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
                     58:  * FOR A PARTICULAR PURPOSE. 
                     59:  *  
                     60:  * IN NO EVENT SHALL APPLE COMPUTER BE LIABLE FOR ANY SPECIAL, INDIRECT, OR 
                     61:  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 
                     62:  * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT, 
                     63:  * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 
                     64:  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 
                     65:  */
                     66: /*
                     67:  * MKLINUX-1.0DR2
                     68:  */
                     69: /*  $NetBSD: keyboard.h,v 1.4 1994/12/03 23:34:32 briggs Exp $  */
                     70: 
                     71: /*-
                     72:  * Copyright (C) 1993   Allen K. Briggs, Chris P. Caputo,
                     73:  *          Michael L. Finch, Bradley A. Grantham, and
                     74:  *          Lawrence A. Kesteloot
                     75:  * All rights reserved.
                     76:  *
                     77:  * Redistribution and use in source and binary forms, with or without
                     78:  * modification, are permitted provided that the following conditions
                     79:  * are met:
                     80:  * 1. Redistributions of source code must retain the above copyright
                     81:  *    notice, this list of conditions and the following disclaimer.
                     82:  * 2. Redistributions in binary form must reproduce the above copyright
                     83:  *    notice, this list of conditions and the following disclaimer in the
                     84:  *    documentation and/or other materials provided with the distribution.
                     85:  * 3. All advertising materials mentioning features or use of this software
                     86:  *    must display the following acknowledgement:
                     87:  *  This product includes software developed by the Alice Group.
                     88:  * 4. The names of the Alice Group or any of its members may not be used
                     89:  *    to endorse or promote products derived from this software without
                     90:  *    specific prior written permission.
                     91:  *
                     92:  * THIS SOFTWARE IS PROVIDED BY THE ALICE GROUP ``AS IS'' AND ANY EXPRESS OR
                     93:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     94:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     95:  * IN NO EVENT SHALL THE ALICE GROUP BE LIABLE FOR ANY DIRECT, INDIRECT,
                     96:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     97:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     98:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     99:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                    100:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
                    101:  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                    102:  */
                    103: 
                    104: 
                    105: /* ADB Keyboard Status - ADB Register 2 */
                    106: 
                    107: #define ADBKS_LED_NUMLOCK       0x0001
                    108: #define ADBKS_LED_CAPSLOCK      0x0002
                    109: #define ADBKS_LED_SCROLLLOCK        0x0004
                    110: #define ADBKS_SCROLL_LOCK       0x0040
                    111: #define ADBKS_NUMLOCK           0x0080
                    112: /* Bits 3 to 5 are reserved */
                    113: #define ADBKS_APPLE_CMD         0x0100
                    114: #define ADBKS_OPTION            0x0200
                    115: #define ADBKS_SHIFT         0x0400
                    116: #define ADBKS_CONTROL           0x0800
                    117: #define ADBKS_CAPSLOCK          0x1000
                    118: #define ADBKS_RESET         0x2000
                    119: #define ADBKS_DELETE            0x4000
                    120: /* bit 16 is reserved */
                    121: 
                    122: /* 
                    123:  * Special key values
                    124:  */
                    125: 
                    126: #define ADBK_LEFT   0x3B
                    127: #define ADBK_RIGHT  0x3C
                    128: #define ADBK_UP     0x3E
                    129: #define ADBK_DOWN   0x3D
                    130: #define ADBK_PGUP   0x74
                    131: #define ADBK_PGDN   0x79
                    132: #define ADBK_HOME   0x73
                    133: #define ADBK_END    0x77
                    134: #define ADBK_CONTROL    0x36
                    135: #define ADBK_CONTROL_R  0x7D
                    136: #define ADBK_FLOWER 0x37
                    137: #define ADBK_SHIFT  0x38
                    138: #define ADBK_SHIFT_R    0x7B
                    139: #define ADBK_CAPSLOCK   0x39
                    140: #define ADBK_OPTION 0x3A
                    141: #define ADBK_OPTION_R   0x7C
                    142: #define ADBK_NUMLOCK    0x47
                    143: #define ADBK_SPACE  0x31
                    144: #define ADBK_F      0x03
                    145: #define ADBK_O      0x1F
                    146: #define ADBK_P      0x23
                    147: #define ADBK_Q      0x0C
                    148: #define ADBK_V      0x09
                    149: #define ADBK_1      0x12
                    150: #define ADBK_2      0x13
                    151: #define ADBK_3      0x14
                    152: #define ADBK_4      0x15
                    153: #define ADBK_5      0x17
                    154: #define ADBK_6      0x16
                    155: #define ADBK_7      0x1A
                    156: #define ADBK_8      0x1C
                    157: #define ADBK_9      0x19
                    158: #define ADBK_0      0x1D
                    159: #define ADBK_POWER  0x7f    /* actual 0x7f 0x7f */
                    160: 
                    161: #define ADBK_KEYVAL(key)    ((key) & 0x7f)
                    162: #define ADBK_PRESS(key)     (((key) & 0x80) == 0)
                    163: #define ADBK_KEYDOWN(key)   (key)
                    164: #define ADBK_KEYUP(key)     ((key) | 0x80)
                    165: #define ADBK_MODIFIER(key)  ((((key) & 0x7f) == ADBK_SHIFT) || \
                    166:                  (((key) & 0x7f) == ADBK_SHIFT_R) || \
                    167:                  (((key) & 0x7f) == ADBK_CONTROL) || \
                    168:                  (((key) & 0x7f) == ADBK_CONTROL_R) || \
                    169:                  (((key) & 0x7f) == ADBK_FLOWER) || \
                    170:                  (((key) & 0x7f) == ADBK_OPTION) || \
                    171:                  (((key) & 0x7f) == ADBK_OPTION_R) || \
                    172:                  (((key) & 0x7f) == ADBK_NUMLOCK) || \
                    173:                  (((key) & 0x7f) == ADBK_CAPSLOCK))
                    174: 
                    175: /* Michel Pollet: small support for different keyboard layout */
                    176: #define ADB_KEYMAP_US       0
                    177: #define ADB_KEYMAP_FRENCH   1
                    178: #define ADB_KEYMAP_GERMAN       2
                    179: #define ADB_KEYMAP_MAX      3
                    180: 
                    181: #if 0
                    182: typedef unsigned char   adb_keymap_t[128][2];
                    183: 
                    184: adb_keymap_t keyboard_french = {
                    185:         /* Scan code      Normal     Shifted */
                    186:     {   /*   0x00, */       'q',       'Q' },//
                    187:     {   /*   0x01, */       's',       'S' },
                    188:     {   /*   0x02, */       'd',       'D' },
                    189:     {   /*   0x03, */       'f',       'F' },
                    190:     {   /*   0x04, */       'h',       'H' },
                    191:     {   /*   0x05, */       'g',       'G' },
                    192:     {   /*   0x06, */       'w',       'W' },//
                    193:     {   /*   0x07, */       'x',       'X' },
                    194:     {   /*   0x08, */       'c',       'C' },
                    195:     {   /*   0x09, */       'v',       'V' },
                    196:     {   /*   0x0A, */      0xff,      0xff },
                    197:     {   /*   0x0B, */       'b',       'B' },
                    198:     {   /*   0x0C, */       'a',       'A' },//
                    199:     {   /*   0x0D, */       'z',       'Z' },//
                    200:     {   /*   0x0E, */       'e',       'E' },
                    201:     {   /*   0x0F, */       'r',       'R' },
                    202:     {   /*   0x10, */       'y',       'Y' },
                    203:     {   /*   0x11, */       't',       'T' },
                    204:     {   /*   0x12, */       '1',       '&' },//
                    205:     {   /*   0x13, */       '2',       '{' },//
                    206:     {   /*   0x14, */       '3',       '"' },//
                    207:     {   /*   0x15, */       '4',       '\'' },//
                    208:     {   /*   0x16, */       '6',       '6' },//
                    209:     {   /*   0x17, */       '5',       '(' },//
                    210:     {   /*   0x18, */       '-',       '_' },//
                    211:     {   /*   0x19, */       '9',       'c' },//
                    212:     {   /*   0x1A, */       '7',       '}' },//
                    213:     {   /*   0x1B, */       ')',       ')' },//
                    214:     {   /*   0x1C, */       '8',       '!' },//
                    215:     {   /*   0x1D, */       '0',       '@' },//
                    216:     {   /*   0x1E, */       '$',       '*' },//
                    217:     {   /*   0x1F, */       'o',       'O' },
                    218:     {   /*   0x20, */       'u',       'U' },
                    219:     {   /*   0x21, */       '^',       '^' },
                    220:     {   /*   0x22, */       'i',       'I' },
                    221:     {   /*   0x23, */       'p',       'P' },
                    222:     {   /*   0x24, */      0x0D,      0x0D },
                    223:     {   /*   0x25, */       'l',       'L' },
                    224:     {   /*   0x26, */       'j',       'J' },
                    225:     {   /*   0x27, */       'u',       '%' },//
                    226:     {   /*   0x28, */       'k',       'K' },
                    227:     {   /*   0x29, */       'm',       'M' },//
                    228:     {   /*   0x2A, */       '`',       '#' },//
                    229:     {   /*   0x2B, */       ';',       '.' },//
                    230:     {   /*   0x2C, */       '=',       '+' },//
                    231:     {   /*   0x2D, */       'n',       'N' },
                    232:     {   /*   0x2E, */       ',',       '?' },//
                    233:     {   /*   0x2F, */       ':',       '/' },//
                    234:     {   /*   0x30, */      0x09,      0x09 },
                    235:     {   /*   0x31, */       ' ',       ' ' },
                    236:     {   /*   0x32, */       '<',       '>' },
                    237:     {   /*   0x33, */      0x7F,      0x7F }, /* Delete */
                    238:     {   /*   0x34, */      0xff,      0xff },
                    239:     {   /*   0x35, */      0x1B,      0x1B },
                    240:     {   /*   0x36, */      0xff,      0xff },
                    241:     {   /*   0x37, */      0xff,      0xff },
                    242:     {   /*   0x38, */      0xff,      0xff },
                    243:     {   /*   0x39, */      0xff,      0xff },
                    244:     {   /*   0x3A, */      0xff,      0xff },
                    245:     {   /*   0x3B, */       'h',      0xff },
                    246:     {   /*   0x3C, */       'l',      0xff },
                    247:     {   /*   0x3D, */       'j',      0xff },
                    248:     {   /*   0x3E, */       'k',      0xff },
                    249:     {   /*   0x3F, */      0xff,      0xff },
                    250:     {   /*   0x40, */      0xff,      0xff },
                    251:     {   /*   0x41, */       '.',       '.' },
                    252:     {   /*   0x42, */      0xff,      0xff },
                    253:     {   /*   0x43, */       '*',       '*' },
                    254:     {   /*   0x44, */      0xff,      0xff },
                    255:     {   /*   0x45, */       '+',       '+' },
                    256:     {   /*   0x46, */      0xff,      0xff },
                    257:     {   /*   0x47, */      0xff,      0xff },
                    258:     {   /*   0x48, */      0xff,      0xff },
                    259:     {   /*   0x49, */      0xff,      0xff },
                    260:     {   /*   0x4A, */      0xff,      0xff },
                    261:     {   /*   0x4B, */       '/',       '/' },
                    262:     {   /*   0x4C, */      0x0D,      0x0D },
                    263:     {   /*   0x4D, */      0xff,      0xff },
                    264:     {   /*   0x4E, */       '-',       '-' },
                    265:     {   /*   0x4F, */      0xff,      0xff },
                    266:     {   /*   0x50, */      0xff,      0xff },
                    267:     {   /*   0x51, */       '=',       '=' },
                    268:     {   /*   0x52, */       '0',       '0' },
                    269:     {   /*   0x53, */       '1',       '1' },
                    270:     {   /*   0x54, */       '2',       '2' },
                    271:     {   /*   0x55, */       '3',       '3' },
                    272:     {   /*   0x56, */       '4',       '4' },
                    273:     {   /*   0x57, */       '5',       '5' },
                    274:     {   /*   0x58, */       '6',       '6' },
                    275:     {   /*   0x59, */       '7',       '7' },
                    276:     {   /*   0x5A, */      0xff,      0xff },
                    277:     {   /*   0x5B, */       '8',       '8' },
                    278:     {   /*   0x5C, */       '9',       '9' },
                    279:     {   /*   0x5D, */      0xff,      0xff },
                    280:     {   /*   0x5E, */      0xff,      0xff },
                    281:     {   /*   0x5F, */      0xff,      0xff },
                    282:     {   /*   0x60, */      0xff,      0xff },
                    283:     {   /*   0x61, */      0xff,      0xff },
                    284:     {   /*   0x62, */      0xff,      0xff },
                    285:     {   /*   0x63, */      0xff,      0xff },
                    286:     {   /*   0x64, */      0xff,      0xff },
                    287:     {   /*   0x65, */      0xff,      0xff },
                    288:     {   /*   0x66, */      0xff,      0xff },
                    289:     {   /*   0x67, */      0xff,      0xff },
                    290:     {   /*   0x68, */      0xff,      0xff },
                    291:     {   /*   0x69, */      0xff,      0xff },
                    292:     {   /*   0x6A, */      0xff,      0xff },
                    293:     {   /*   0x6B, */      0xff,      0xff },
                    294:     {   /*   0x6C, */      0xff,      0xff },
                    295:     {   /*   0x6D, */      0xff,      0xff },
                    296:     {   /*   0x6E, */      0xff,      0xff },
                    297:     {   /*   0x6F, */      0xff,      0xff },
                    298:     {   /*   0x70, */      0xff,      0xff },
                    299:     {   /*   0x71, */      0xff,      0xff },
                    300:     {   /*   0x72, */      0xff,      0xff },
                    301:     {   /*   0x73, */      0xff,      0xff },
                    302:     {   /*   0x74, */      0xff,      0xff },
                    303:     {   /*   0x75, */      0xff,      0xff },
                    304:     {   /*   0x76, */      0xff,      0xff },
                    305:     {   /*   0x77, */      0xff,      0xff },
                    306:     {   /*   0x78, */      0xff,      0xff },
                    307:     {   /*   0x79, */      0xff,      0xff },
                    308:     {   /*   0x7A, */      0xff,      0xff },
                    309:     {   /*   0x7B, */      0xff,      0xff },
                    310:     {   /*   0x7C, */      0xff,      0xff },
                    311:     {   /*   0x7D, */      0xff,      0xff },
                    312:     {   /*   0x7E, */      0xff,      0xff },
                    313:     {   /*   0x7F, */      0xff,      0xff }
                    314: };
                    315: 
                    316: adb_keymap_t keyboard_us = {
                    317:         /* Scan code      Normal     Shifted */
                    318:     {   /*   0x00, */       'a',       'A' },
                    319:     {   /*   0x01, */       's',       'S' },
                    320:     {   /*   0x02, */       'd',       'D' },
                    321:     {   /*   0x03, */       'f',       'F' },
                    322:     {   /*   0x04, */       'h',       'H' },
                    323:     {   /*   0x05, */       'g',       'G' },
                    324:     {   /*   0x06, */       'z',       'Z' },
                    325:     {   /*   0x07, */       'x',       'X' },
                    326:     {   /*   0x08, */       'c',       'C' },
                    327:     {   /*   0x09, */       'v',       'V' },
                    328:     {   /*   0x0A, */      0xff,      0xff },
                    329:     {   /*   0x0B, */       'b',       'B' },
                    330:     {   /*   0x0C, */       'q',       'Q' },
                    331:     {   /*   0x0D, */       'w',       'W' },
                    332:     {   /*   0x0E, */       'e',       'E' },
                    333:     {   /*   0x0F, */       'r',       'R' },
                    334:     {   /*   0x10, */       'y',       'Y' },
                    335:     {   /*   0x11, */       't',       'T' },
                    336:     {   /*   0x12, */       '1',       '!' },
                    337:     {   /*   0x13, */       '2',       '@' },
                    338:     {   /*   0x14, */       '3',       '#' },
                    339:     {   /*   0x15, */       '4',       '$' },
                    340:     {   /*   0x16, */       '6',       '^' },
                    341:     {   /*   0x17, */       '5',       '%' },
                    342:     {   /*   0x18, */       '=',       '+' },
                    343:     {   /*   0x19, */       '9',       '(' },
                    344:     {   /*   0x1A, */       '7',       '&' },
                    345:     {   /*   0x1B, */       '-',       '_' },
                    346:     {   /*   0x1C, */       '8',       '*' },
                    347:     {   /*   0x1D, */       '0',       ')' },
                    348:     {   /*   0x1E, */       ']',       '}' },
                    349:     {   /*   0x1F, */       'o',       'O' },
                    350:     {   /*   0x20, */       'u',       'U' },
                    351:     {   /*   0x21, */       '[',       '{' },
                    352:     {   /*   0x22, */       'i',       'I' },
                    353:     {   /*   0x23, */       'p',       'P' },
                    354:     {   /*   0x24, */      0x0a,      0x0a },  //SDSD
                    355:     {   /*   0x25, */       'l',       'L' },
                    356:     {   /*   0x26, */       'j',       'J' },
                    357:     {   /*   0x27, */      '\'',       '"' },
                    358:     {   /*   0x28, */       'k',       'K' },
                    359:     {   /*   0x29, */       ';',       ':' },
                    360:     {   /*   0x2A, */      '\\',       '|' },
                    361:     {   /*   0x2B, */       ',',       '<' },
                    362:     {   /*   0x2C, */       '/',       '?' },
                    363:     {   /*   0x2D, */       'n',       'N' },
                    364:     {   /*   0x2E, */       'm',       'M' },
                    365:     {   /*   0x2F, */       '.',       '>' },
                    366:     {   /*   0x30, */      0x09,      0x09 },
                    367:     {   /*   0x31, */       ' ',       ' ' },
                    368:     {   /*   0x32, */       '`',       '~' },
                    369:     {   /*   0x33, */      0x7F,      0x7F }, /* Delete */
                    370:     {   /*   0x34, */      0xff,      0xff },
                    371:     {   /*   0x35, */      0x1B,      0x1B },
                    372:     {   /*   0x36, */      0xff,      0xff },
                    373:     {   /*   0x37, */      0xff,      0xff },
                    374:     {   /*   0x38, */      0xff,      0xff },
                    375:     {   /*   0x39, */      0xff,      0xff },
                    376:     {   /*   0x3A, */      0xff,      0xff },
                    377:     {   /*   0x3B, */       'h',      0xff },
                    378:     {   /*   0x3C, */       'l',      0xff },
                    379:     {   /*   0x3D, */       'j',      0xff },
                    380:     {   /*   0x3E, */       'k',      0xff },
                    381:     {   /*   0x3F, */      0xff,      0xff },
                    382:     {   /*   0x40, */      0xff,      0xff },
                    383:     {   /*   0x41, */       '.',       '.' },
                    384:     {   /*   0x42, */      0xff,      0xff },
                    385:     {   /*   0x43, */       '*',       '*' },
                    386:     {   /*   0x44, */      0xff,      0xff },
                    387:     {   /*   0x45, */       '+',       '+' },
                    388:     {   /*   0x46, */      0xff,      0xff },
                    389:     {   /*   0x47, */      0xff,      0xff },
                    390:     {   /*   0x48, */      0xff,      0xff },
                    391:     {   /*   0x49, */      0xff,      0xff },
                    392:     {   /*   0x4A, */      0xff,      0xff },
                    393:     {   /*   0x4B, */       '/',       '/' },
                    394:     {   /*   0x4C, */      0x0D,      0x0D },
                    395:     {   /*   0x4D, */      0xff,      0xff },
                    396:     {   /*   0x4E, */       '-',       '-' },
                    397:     {   /*   0x4F, */      0xff,      0xff },
                    398:     {   /*   0x50, */      0xff,      0xff },
                    399:     {   /*   0x51, */       '=',       '=' },
                    400:     {   /*   0x52, */       '0',       '0' },
                    401:     {   /*   0x53, */       '1',       '1' },
                    402:     {   /*   0x54, */       '2',       '2' },
                    403:     {   /*   0x55, */       '3',       '3' },
                    404:     {   /*   0x56, */       '4',       '4' },
                    405:     {   /*   0x57, */       '5',       '5' },
                    406:     {   /*   0x58, */       '6',       '6' },
                    407:     {   /*   0x59, */       '7',       '7' },
                    408:     {   /*   0x5A, */      0xff,      0xff },
                    409:     {   /*   0x5B, */       '8',       '8' },
                    410:     {   /*   0x5C, */       '9',       '9' },
                    411:     {   /*   0x5D, */      0xff,      0xff },
                    412:     {   /*   0x5E, */      0xff,      0xff },
                    413:     {   /*   0x5F, */      0xff,      0xff },
                    414:     {   /*   0x60, */      0xff,      0xff },
                    415:     {   /*   0x61, */      0xff,      0xff },
                    416:     {   /*   0x62, */      0xff,      0xff },
                    417:     {   /*   0x63, */      0xff,      0xff },
                    418:     {   /*   0x64, */      0xff,      0xff },
                    419:     {   /*   0x65, */      0xff,      0xff },
                    420:     {   /*   0x66, */      0xff,      0xff },
                    421:     {   /*   0x67, */      0xff,      0xff },
                    422:     {   /*   0x68, */      0xff,      0xff },
                    423:     {   /*   0x69, */      0xff,      0xff },
                    424:     {   /*   0x6A, */      0xff,      0xff },
                    425:     {   /*   0x6B, */      0xff,      0xff },
                    426:     {   /*   0x6C, */      0xff,      0xff },
                    427:     {   /*   0x6D, */      0xff,      0xff },
                    428:     {   /*   0x6E, */      0xff,      0xff },
                    429:     {   /*   0x6F, */      0xff,      0xff },
                    430:     {   /*   0x70, */      0xff,      0xff },
                    431:     {   /*   0x71, */      0xff,      0xff },
                    432:     {   /*   0x72, */      0xff,      0xff },
                    433:     {   /*   0x73, */      0xff,      0xff },
                    434:     {   /*   0x74, */      0xff,      0xff },
                    435:     {   /*   0x75, */      0xff,      0xff },
                    436:     {   /*   0x76, */      0xff,      0xff },
                    437:     {   /*   0x77, */      0xff,      0xff },
                    438:     {   /*   0x78, */      0xff,      0xff },
                    439:     {   /*   0x79, */      0xff,      0xff },
                    440:     {   /*   0x7A, */      0xff,      0xff },
                    441:     {   /*   0x7B, */      0xff,      0xff },
                    442:     {   /*   0x7C, */      0xff,      0xff },
                    443:     {   /*   0x7D, */      0xff,      0xff },
                    444:     {   /*   0x7E, */      0xff,      0xff },
                    445:     {   /*   0x7F, */      0xff,      0xff }
                    446: };
                    447: 
                    448: 
                    449: 
                    450: adb_keymap_t keyboard_german = {
                    451:         /* Scan code      Normal     Shifted */
                    452:     {   /*   0x00, */       'a',       'A' },
                    453:     {   /*   0x01, */       's',       'S' },
                    454:     {   /*   0x02, */       'd',       'D' },
                    455:     {   /*   0x03, */       'f',       'F' },
                    456:     {   /*   0x04, */       'h',       'H' },
                    457:     {   /*   0x05, */       'g',       'G' },
                    458:     {   /*   0x06, */       'y',       'Y' },
                    459:     {   /*   0x07, */       'x',       'X' },
                    460:     {   /*   0x08, */       'c',       'C' },
                    461:     {   /*   0x09, */       'v',       'V' },
                    462:     {   /*   0x0A, */       '^',       '~' },
                    463:     {   /*   0x0B, */       'b',       'B' },
                    464:     {   /*   0x0C, */       'q',       'Q' },
                    465:     {   /*   0x0D, */       'w',       'W' },
                    466:     {   /*   0x0E, */       'e',       'E' },
                    467:     {   /*   0x0F, */       'r',       'R' },
                    468:     {   /*   0x10, */       'z',       'Z' },
                    469:     {   /*   0x11, */       't',       'T' },
                    470:     {   /*   0x12, */       '1',       '!' },
                    471:     {   /*   0x13, */       '2',       '"' },
                    472:     {   /*   0x14, */       '3',       '@' },
                    473:     {   /*   0x15, */       '4',       '$' },
                    474:     {   /*   0x16, */       '6',       '&' },
                    475:     {   /*   0x17, */       '5',       '%' },
                    476:     {   /*   0x18, */       '~',       '`' },
                    477:     {   /*   0x19, */       '9',       ')' },
                    478:     {   /*   0x1A, */       '7',       '/' },
                    479:     {   /*   0x1B, */       '^',       '?' },
                    480:     {   /*   0x1C, */       '8',       '(' },
                    481:     {   /*   0x1D, */       '0',       '=' },
                    482:     {   /*   0x1E, */       '+',       '*' },
                    483:     {   /*   0x1F, */       'o',       'O' },
                    484:     {   /*   0x20, */       'u',       'U' },
                    485:     {   /*   0x21, */      '\\',       '|' },
                    486:     {   /*   0x22, */       'i',       'I' },
                    487:     {   /*   0x23, */       'p',       'P' },
                    488:     {   /*   0x24, */      0x0D,      0x0D },
                    489:     {   /*   0x25, */       'l',       'L' },
                    490:     {   /*   0x26, */       'j',       'J' },
                    491:     {   /*   0x27, */       ']',       '}' },
                    492:     {   /*   0x28, */       'k',       'K' },
                    493:     {   /*   0x29, */       '[',       '{' },
                    494:     {   /*   0x2A, */       '#',      '\'' },
                    495:     {   /*   0x2B, */       ',',       ';' },
                    496:     {   /*   0x2C, */       '-',       '_' },
                    497:     {   /*   0x2D, */       'n',       'N' },
                    498:     {   /*   0x2E, */       'm',       'M' },
                    499:     {   /*   0x2F, */       '.',       ':' },
                    500:     {   /*   0x30, */      0x09,      0x09 },
                    501:     {   /*   0x31, */       ' ',       ' ' },
                    502:     {   /*   0x32, */       '<',       '>' },
                    503:     {   /*   0x33, */      0x7F,      0x7F }, /* Delete */
                    504:     {   /*   0x34, */      0xff,      0xff },
                    505:     {   /*   0x35, */      0x1B,      0x1B },
                    506:     {   /*   0x36, */      0xff,      0xff },
                    507:     {   /*   0x37, */      0xff,      0xff },
                    508:     {   /*   0x38, */      0xff,      0xff },
                    509:     {   /*   0x39, */      0xff,      0xff },
                    510:     {   /*   0x3A, */      0xff,      0xff },
                    511:     {   /*   0x3B, */       'h',      0xff },
                    512:     {   /*   0x3C, */       'l',      0xff },
                    513:     {   /*   0x3D, */       'j',      0xff },
                    514:     {   /*   0x3E, */       'k',      0xff },
                    515:     {   /*   0x3F, */      0xff,      0xff },
                    516:     {   /*   0x40, */      0xff,      0xff },
                    517:     {   /*   0x41, */       '.',       '.' },
                    518:     {   /*   0x42, */      0xff,      0xff },
                    519:     {   /*   0x43, */       '*',       '*' },
                    520:     {   /*   0x44, */      0xff,      0xff },
                    521:     {   /*   0x45, */       '+',       '+' },
                    522:     {   /*   0x46, */      0xff,      0xff },
                    523:     {   /*   0x47, */      0xff,      0xff },
                    524:     {   /*   0x48, */      0xff,      0xff },
                    525:     {   /*   0x49, */      0xff,      0xff },
                    526:     {   /*   0x4A, */      0xff,      0xff },
                    527:     {   /*   0x4B, */       '/',       '/' },
                    528:     {   /*   0x4C, */      0x0D,      0x0D },
                    529:     {   /*   0x4D, */      0xff,      0xff },
                    530:     {   /*   0x4E, */       '-',       '-' },
                    531:     {   /*   0x4F, */      0xff,      0xff },
                    532:     {   /*   0x50, */      0xff,      0xff },
                    533:     {   /*   0x51, */       '=',       '=' },
                    534:     {   /*   0x52, */       '0',       '0' },
                    535:     {   /*   0x53, */       '1',       '1' },
                    536:     {   /*   0x54, */       '2',       '2' },
                    537:     {   /*   0x55, */       '3',       '3' },
                    538:     {   /*   0x56, */       '4',       '4' },
                    539:     {   /*   0x57, */       '5',       '5' },
                    540:     {   /*   0x58, */       '6',       '6' },
                    541:     {   /*   0x59, */       '7',       '7' },
                    542:     {   /*   0x5A, */      0xff,      0xff },
                    543:     {   /*   0x5B, */       '8',       '8' },
                    544:     {   /*   0x5C, */       '9',       '9' },
                    545:     {   /*   0x5D, */      0xff,      0xff },
                    546:     {   /*   0x5E, */      0xff,      0xff },
                    547:     {   /*   0x5F, */      0xff,      0xff },
                    548:     {   /*   0x60, */      0xff,      0xff },
                    549:     {   /*   0x61, */      0xff,      0xff },
                    550:     {   /*   0x62, */      0xff,      0xff },
                    551:     {   /*   0x63, */      0xff,      0xff },
                    552:     {   /*   0x64, */      0xff,      0xff },
                    553:     {   /*   0x65, */      0xff,      0xff },
                    554:     {   /*   0x66, */      0xff,      0xff },
                    555:     {   /*   0x67, */      0xff,      0xff },
                    556:     {   /*   0x68, */      0xff,      0xff },
                    557:     {   /*   0x69, */      0xff,      0xff },
                    558:     {   /*   0x6A, */      0xff,      0xff },
                    559:     {   /*   0x6B, */      0xff,      0xff },
                    560:     {   /*   0x6C, */      0xff,      0xff },
                    561:     {   /*   0x6D, */      0xff,      0xff },
                    562:     {   /*   0x6E, */      0xff,      0xff },
                    563:     {   /*   0x6F, */      0xff,      0xff },
                    564:     {   /*   0x70, */      0xff,      0xff },
                    565:     {   /*   0x71, */      0xff,      0xff },
                    566:     {   /*   0x72, */      0xff,      0xff },
                    567:     {   /*   0x73, */      0xff,      0xff },
                    568:     {   /*   0x74, */      0xff,      0xff },
                    569:     {   /*   0x75, */      0xff,      0xff },
                    570:     {   /*   0x76, */      0xff,      0xff },
                    571:     {   /*   0x77, */      0xff,      0xff },
                    572:     {   /*   0x78, */      0xff,      0xff },
                    573:     {   /*   0x79, */      0xff,      0xff },
                    574:     {   /*   0x7A, */      0xff,      0xff },
                    575:     {   /*   0x7B, */      0xff,      0xff },
                    576:     {   /*   0x7C, */      0xff,      0xff },
                    577:     {   /*   0x7D, */      0xff,      0xff },
                    578:     {   /*   0x7E, */      0xff,      0xff },
                    579:     {   /*   0x7F, */      0xff,      0xff }
                    580: };
                    581: 
                    582: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.