|
|
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.