Annotation of kernel/bsd/dev/ppc/keyboard.h, revision 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.