xref: /onnv-gate/usr/src/uts/i86pc/boot/boot_keyboard_table.c (revision 3446:5903aece022d)
1*3446Smrj /*
2*3446Smrj  * CDDL HEADER START
3*3446Smrj  *
4*3446Smrj  * The contents of this file are subject to the terms of the
5*3446Smrj  * Common Development and Distribution License (the "License").
6*3446Smrj  * You may not use this file except in compliance with the License.
7*3446Smrj  *
8*3446Smrj  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*3446Smrj  * or http://www.opensolaris.org/os/licensing.
10*3446Smrj  * See the License for the specific language governing permissions
11*3446Smrj  * and limitations under the License.
12*3446Smrj  *
13*3446Smrj  * When distributing Covered Code, include this CDDL HEADER in each
14*3446Smrj  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*3446Smrj  * If applicable, add the following below this CDDL HEADER, with the
16*3446Smrj  * fields enclosed by brackets "[]" replaced with your own identifying
17*3446Smrj  * information: Portions Copyright [yyyy] [name of copyright owner]
18*3446Smrj  *
19*3446Smrj  * CDDL HEADER END
20*3446Smrj  */
21*3446Smrj /*
22*3446Smrj  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
23*3446Smrj  * Use is subject to license terms.
24*3446Smrj  */
25*3446Smrj 
26*3446Smrj #pragma ident	"%Z%%M%	%I%	%E% SMI"
27*3446Smrj 
28*3446Smrj /*
29*3446Smrj  * Keyboard table for bootstrap's simple keyboard driver.
30*3446Smrj  */
31*3446Smrj 
32*3446Smrj #include "boot_keyboard_table.h"
33*3446Smrj 
34*3446Smrj #define	A	| KBTYPE_ALPHA
35*3446Smrj #define	C	& 0x1f
36*3446Smrj #define	F	| KBTYPE_FUNC
37*3446Smrj #define	N	| KBTYPE_NUMPAD
38*3446Smrj 
39*3446Smrj #define	ALT	KBTYPE_SPEC_ALT
40*3446Smrj #define	CTRL	KBTYPE_SPEC_CTRL
41*3446Smrj #define	LSHIFT	KBTYPE_SPEC_LSHIFT
42*3446Smrj #define	NOP	KBTYPE_SPEC_NOP
43*3446Smrj #define	NUMLK	KBTYPE_SPEC_NUM_LOCK
44*3446Smrj #define	SCRLLK	KBTYPE_SPEC_SCROLL_LOCK
45*3446Smrj #define	CAPSLK	KBTYPE_SPEC_CAPS_LOCK
46*3446Smrj #define	RSHIFT	KBTYPE_SPEC_RSHIFT
47*3446Smrj #define	REBOOT	KBTYPE_SPEC_MAYBE_REBOOT
48*3446Smrj #define	UNDEF	KBTYPE_SPEC_UNDEF
49*3446Smrj 
50*3446Smrj struct keyboard_translate keyboard_translate[128] = {
51*3446Smrj 	/*		Normal	Shifted	Ctrled	Alted */
52*3446Smrj 	/* 00 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
53*3446Smrj 	/* 01 */	'['C,	'['C,	NOP,	NOP,
54*3446Smrj 	/* 02 */	'1',	'!',	NOP,	0x78 F,
55*3446Smrj 	/* 03 */	'2',	'@',	NOP,	0x79 F,
56*3446Smrj 	/* 04 */	'3',	'#',	NOP,	0x7a F,
57*3446Smrj 	/* 05 */	'4',	'$',	NOP,	0x7b F,
58*3446Smrj 	/* 06 */	'5',	'%',	NOP,	0x7c F,
59*3446Smrj 	/* 07 */	'6',	'^',	'^'C,	0x7d F,
60*3446Smrj 	/* 08 */	'7',	'&',	NOP,	0x7e F,
61*3446Smrj 	/* 09 */	'8',	'*',	NOP,	0x7f F,
62*3446Smrj 	/* 0a */	'9',	'(',	NOP,	0x80 F,
63*3446Smrj 	/* 0b */	'0',	')',	NOP,	0x81 F,
64*3446Smrj 	/* 0c */	'-',	'_',	NOP,	0x82 F,
65*3446Smrj 	/* 0d */	'=',	'+',	NOP,	0x83 F,
66*3446Smrj 	/* 0e */	'h'C,	0x0e F,	0x7f,	NOP,
67*3446Smrj 	/* 0f */	'i'C,	0x0f F,	NOP,	NOP,
68*3446Smrj 	/* 10 */	'q'A,	'Q',	'q'C,	0x10 F,
69*3446Smrj 	/* 11 */	'w'A,	'W',	'w'C,	0x11 F,
70*3446Smrj 	/* 12 */	'e'A,	'E',	'e'C,	0x12 F,
71*3446Smrj 	/* 13 */	'r'A,	'R',	'r'C,	0x13 F,
72*3446Smrj 	/* 14 */	't'A,	'T',	't'C,	0x14 F,
73*3446Smrj 	/* 15 */	'y'A,	'Y',	'y'C,	0x15 F,
74*3446Smrj 	/* 16 */	'u'A,	'U',	'u'C,	0x16 F,
75*3446Smrj 	/* 17 */	'i'A,	'I',	'i'C,	0x17 F,
76*3446Smrj 	/* 18 */	'o'A,	'O',	'o'C,	0x18 F,
77*3446Smrj 	/* 19 */	'p'A,	'P',	'p'C,	0x19 F,
78*3446Smrj 	/* 1a */	'[',	'{',	'['C,	NOP,
79*3446Smrj 	/* 1b */	']',	'}',	']'C,	NOP,
80*3446Smrj 	/* 1c */	'm'C,	'm'C,	NOP,	NOP,
81*3446Smrj 	/* 1d */	CTRL,	CTRL,	CTRL,	CTRL,
82*3446Smrj 	/* 1e */	'a'A,	'A',	'a'C,	0x1e F,
83*3446Smrj 	/* 1f */	's'A,	'S',	's'C,	0x1f F,
84*3446Smrj 	/* 20 */	'd'A,	'D',	'd'C,	0x20 F,
85*3446Smrj 	/* 21 */	'f'A,	'F',	'f'C,	0x21 F,
86*3446Smrj 	/* 22 */	'g'A,	'G',	'g'C,	0x22 F,
87*3446Smrj 	/* 23 */	'h'A,	'H',	'h'C,	0x23 F,
88*3446Smrj 	/* 24 */	'j'A,	'J',	'j'C,	0x24 F,
89*3446Smrj 	/* 25 */	'k'A,	'K',	'k'C,	0x25 F,
90*3446Smrj 	/* 26 */	'l'A,	'L',	'l'C,	0x26 F,
91*3446Smrj 	/* 27 */	';',	':',	NOP,	NOP,
92*3446Smrj 	/* 28 */	'\'',	'"',	NOP,	NOP,
93*3446Smrj 	/* 29 */	'`',	'~',	NOP,	NOP,
94*3446Smrj 	/* 2a */	LSHIFT,	LSHIFT,	LSHIFT,	LSHIFT,
95*3446Smrj 	/* 2b */	'\\',	'|',	'\\'C,	NOP,
96*3446Smrj 	/* 2c */	'z'A,	'Z',	'z'C,	0x2c F,
97*3446Smrj 	/* 2d */	'x'A,	'X',	'x'C,	0x2d F,
98*3446Smrj 	/* 2e */	'c'A,	'C',	'c'C,	0x2e F,
99*3446Smrj 	/* 2f */	'v'A,	'V',	'v'C,	0x2f F,
100*3446Smrj 	/* 30 */	'b'A,	'B',	'b'C,	0x30 F,
101*3446Smrj 	/* 31 */	'n'A,	'N',	'n'C,	0x31 F,
102*3446Smrj 	/* 32 */	'm'A,	'M',	'm'C,	0x32 F,
103*3446Smrj 	/* 33 */	',',	'<',	NOP,	NOP,
104*3446Smrj 	/* 34 */	'.',	'>',	NOP,	NOP,
105*3446Smrj 	/* 35 */	'/',	'?',	NOP,	NOP,
106*3446Smrj 	/* 36 */	RSHIFT,	RSHIFT,	RSHIFT,	RSHIFT,
107*3446Smrj 	/* 37 */	'*',	NOP,	NOP,	NOP,	/* * PrtSc */
108*3446Smrj 	/* 38 */	ALT,	ALT,	ALT,	ALT,
109*3446Smrj 	/* 39 */	' ',	' ',	NOP,	NOP,
110*3446Smrj 	/* 3a */	CAPSLK,	CAPSLK,	CAPSLK,	CAPSLK,
111*3446Smrj 	/* 3b */	0x3b F,	0x54 F,	0x5e F,	0x68 F,
112*3446Smrj 	/* 3c */	0x3c F,	0x55 F,	0x5f F,	0x69 F,
113*3446Smrj 	/* 3d */	0x3d F,	0x56 F,	0x60 F,	0x6a F,
114*3446Smrj 	/* 3e */	0x3e F,	0x57 F,	0x61 F,	0x6b F,
115*3446Smrj 	/* 3f */	0x3f F,	0x58 F,	0x62 F,	0x6c F,
116*3446Smrj 	/* 40 */	0x40 F,	0x59 F,	0x63 F,	0x6d F,
117*3446Smrj 	/* 41 */	0x41 F,	0x5a F,	0x64 F,	0x6e F,
118*3446Smrj 	/* 42 */	0x42 F,	0x5b F,	0x65 F,	0x6f F,
119*3446Smrj 	/* 43 */	0x43 F,	0x5c F,	0x66 F,	0x70 F,
120*3446Smrj 	/* 44 */	0x44 F,	0x5d F,	0x67 F,	0x71 F,
121*3446Smrj 	/* 45 */	NUMLK,	NUMLK,	NUMLK,	NUMLK,
122*3446Smrj 	/* 46 */	SCRLLK,	SCRLLK,	SCRLLK,	SCRLLK,
123*3446Smrj 	/* 47 */	0x47 N,	'7',	NOP,	NOP,
124*3446Smrj 	/* 48 */	0x48 N,	'8',	NOP,	NOP,
125*3446Smrj 	/* 49 */	0x49 N,	'9',	NOP,	NOP,
126*3446Smrj 	/* 4a */	'-',	'-',	NOP,	NOP,
127*3446Smrj 	/* 4b */	0x4b N,	'4',	NOP,	NOP,
128*3446Smrj 	/* 4c */	NOP,	'5',	NOP,	NOP,
129*3446Smrj 	/* 4d */	0x4d N,	'6',	NOP,	NOP,
130*3446Smrj 	/* 4e */	'+',	'+',	NOP,	NOP,
131*3446Smrj 	/* 4f */	0x4f N,	'1',	NOP,	NOP,
132*3446Smrj 	/* 50 */	0x50 N,	'2',	NOP,	NOP,
133*3446Smrj 	/* 51 */	0x51 N,	'3',	NOP,	NOP,
134*3446Smrj 	/* 52 */	0x52 N,	'0',	NOP,	NOP,
135*3446Smrj 	/* 53 */	0x53 N,	'.',	REBOOT,	REBOOT,
136*3446Smrj 	/* 54 */	NOP,	NOP,	NOP,	NOP,	/* SysReq */
137*3446Smrj 	/* 55 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
138*3446Smrj 	/* 56 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
139*3446Smrj 	/* 57 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
140*3446Smrj 	/* 58 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
141*3446Smrj 	/* 59 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
142*3446Smrj 	/* 5a */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
143*3446Smrj 	/* 5b */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
144*3446Smrj 	/* 5c */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
145*3446Smrj 	/* 5d */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
146*3446Smrj 	/* 5e */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
147*3446Smrj 	/* 5f */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
148*3446Smrj 	/* 60 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
149*3446Smrj 	/* 61 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
150*3446Smrj 	/* 62 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
151*3446Smrj 	/* 63 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
152*3446Smrj 	/* 64 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
153*3446Smrj 	/* 65 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
154*3446Smrj 	/* 66 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
155*3446Smrj 	/* 67 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
156*3446Smrj 	/* 68 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
157*3446Smrj 	/* 69 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
158*3446Smrj 	/* 6a */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
159*3446Smrj 	/* 6b */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
160*3446Smrj 	/* 6c */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
161*3446Smrj 	/* 6d */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
162*3446Smrj 	/* 6e */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
163*3446Smrj 	/* 6f */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
164*3446Smrj 	/* 70 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
165*3446Smrj 	/* 71 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
166*3446Smrj 	/* 72 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
167*3446Smrj 	/* 73 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
168*3446Smrj 	/* 74 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
169*3446Smrj 	/* 75 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
170*3446Smrj 	/* 76 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
171*3446Smrj 	/* 77 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
172*3446Smrj 	/* 78 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
173*3446Smrj 	/* 79 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
174*3446Smrj 	/* 7a */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
175*3446Smrj 	/* 7b */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
176*3446Smrj 	/* 7c */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
177*3446Smrj 	/* 7d */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
178*3446Smrj 	/* 7e */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
179*3446Smrj 	/* 7f */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
180*3446Smrj };
181