|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.