17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*ae115bc7Smrj  * Common Development and Distribution License (the "License").
6*ae115bc7Smrj  * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate  *
87c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate  * and limitations under the License.
127c478bd9Sstevel@tonic-gate  *
137c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate  *
197c478bd9Sstevel@tonic-gate  * CDDL HEADER END
207c478bd9Sstevel@tonic-gate  */
217c478bd9Sstevel@tonic-gate /*
22*ae115bc7Smrj  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
23*ae115bc7Smrj  * Use is subject to license terms.
247c478bd9Sstevel@tonic-gate  */
257c478bd9Sstevel@tonic-gate 
267c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
277c478bd9Sstevel@tonic-gate 
287c478bd9Sstevel@tonic-gate /*
29*ae115bc7Smrj  * Keyboard table for bootstrap's simple keyboard driver.
307c478bd9Sstevel@tonic-gate  */
317c478bd9Sstevel@tonic-gate 
32*ae115bc7Smrj #include "boot_keyboard_table.h"
337c478bd9Sstevel@tonic-gate 
347c478bd9Sstevel@tonic-gate #define	A	| KBTYPE_ALPHA
357c478bd9Sstevel@tonic-gate #define	C	& 0x1f
367c478bd9Sstevel@tonic-gate #define	F	| KBTYPE_FUNC
377c478bd9Sstevel@tonic-gate #define	N	| KBTYPE_NUMPAD
387c478bd9Sstevel@tonic-gate 
397c478bd9Sstevel@tonic-gate #define	ALT	KBTYPE_SPEC_ALT
407c478bd9Sstevel@tonic-gate #define	CTRL	KBTYPE_SPEC_CTRL
417c478bd9Sstevel@tonic-gate #define	LSHIFT	KBTYPE_SPEC_LSHIFT
427c478bd9Sstevel@tonic-gate #define	NOP	KBTYPE_SPEC_NOP
437c478bd9Sstevel@tonic-gate #define	NUMLK	KBTYPE_SPEC_NUM_LOCK
447c478bd9Sstevel@tonic-gate #define	SCRLLK	KBTYPE_SPEC_SCROLL_LOCK
457c478bd9Sstevel@tonic-gate #define	CAPSLK	KBTYPE_SPEC_CAPS_LOCK
467c478bd9Sstevel@tonic-gate #define	RSHIFT	KBTYPE_SPEC_RSHIFT
477c478bd9Sstevel@tonic-gate #define	REBOOT	KBTYPE_SPEC_MAYBE_REBOOT
487c478bd9Sstevel@tonic-gate #define	UNDEF	KBTYPE_SPEC_UNDEF
497c478bd9Sstevel@tonic-gate 
507c478bd9Sstevel@tonic-gate struct keyboard_translate keyboard_translate[128] = {
517c478bd9Sstevel@tonic-gate 	/*		Normal	Shifted	Ctrled	Alted */
527c478bd9Sstevel@tonic-gate 	/* 00 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
537c478bd9Sstevel@tonic-gate 	/* 01 */	'['C,	'['C,	NOP,	NOP,
547c478bd9Sstevel@tonic-gate 	/* 02 */	'1',	'!',	NOP,	0x78 F,
557c478bd9Sstevel@tonic-gate 	/* 03 */	'2',	'@',	NOP,	0x79 F,
567c478bd9Sstevel@tonic-gate 	/* 04 */	'3',	'#',	NOP,	0x7a F,
577c478bd9Sstevel@tonic-gate 	/* 05 */	'4',	'$',	NOP,	0x7b F,
587c478bd9Sstevel@tonic-gate 	/* 06 */	'5',	'%',	NOP,	0x7c F,
597c478bd9Sstevel@tonic-gate 	/* 07 */	'6',	'^',	'^'C,	0x7d F,
607c478bd9Sstevel@tonic-gate 	/* 08 */	'7',	'&',	NOP,	0x7e F,
617c478bd9Sstevel@tonic-gate 	/* 09 */	'8',	'*',	NOP,	0x7f F,
627c478bd9Sstevel@tonic-gate 	/* 0a */	'9',	'(',	NOP,	0x80 F,
637c478bd9Sstevel@tonic-gate 	/* 0b */	'0',	')',	NOP,	0x81 F,
647c478bd9Sstevel@tonic-gate 	/* 0c */	'-',	'_',	NOP,	0x82 F,
657c478bd9Sstevel@tonic-gate 	/* 0d */	'=',	'+',	NOP,	0x83 F,
667c478bd9Sstevel@tonic-gate 	/* 0e */	'h'C,	0x0e F,	0x7f,	NOP,
677c478bd9Sstevel@tonic-gate 	/* 0f */	'i'C,	0x0f F,	NOP,	NOP,
687c478bd9Sstevel@tonic-gate 	/* 10 */	'q'A,	'Q',	'q'C,	0x10 F,
697c478bd9Sstevel@tonic-gate 	/* 11 */	'w'A,	'W',	'w'C,	0x11 F,
707c478bd9Sstevel@tonic-gate 	/* 12 */	'e'A,	'E',	'e'C,	0x12 F,
717c478bd9Sstevel@tonic-gate 	/* 13 */	'r'A,	'R',	'r'C,	0x13 F,
727c478bd9Sstevel@tonic-gate 	/* 14 */	't'A,	'T',	't'C,	0x14 F,
737c478bd9Sstevel@tonic-gate 	/* 15 */	'y'A,	'Y',	'y'C,	0x15 F,
747c478bd9Sstevel@tonic-gate 	/* 16 */	'u'A,	'U',	'u'C,	0x16 F,
757c478bd9Sstevel@tonic-gate 	/* 17 */	'i'A,	'I',	'i'C,	0x17 F,
767c478bd9Sstevel@tonic-gate 	/* 18 */	'o'A,	'O',	'o'C,	0x18 F,
777c478bd9Sstevel@tonic-gate 	/* 19 */	'p'A,	'P',	'p'C,	0x19 F,
787c478bd9Sstevel@tonic-gate 	/* 1a */	'[',	'{',	'['C,	NOP,
797c478bd9Sstevel@tonic-gate 	/* 1b */	']',	'}',	']'C,	NOP,
807c478bd9Sstevel@tonic-gate 	/* 1c */	'm'C,	'm'C,	NOP,	NOP,
817c478bd9Sstevel@tonic-gate 	/* 1d */	CTRL,	CTRL,	CTRL,	CTRL,
827c478bd9Sstevel@tonic-gate 	/* 1e */	'a'A,	'A',	'a'C,	0x1e F,
837c478bd9Sstevel@tonic-gate 	/* 1f */	's'A,	'S',	's'C,	0x1f F,
847c478bd9Sstevel@tonic-gate 	/* 20 */	'd'A,	'D',	'd'C,	0x20 F,
857c478bd9Sstevel@tonic-gate 	/* 21 */	'f'A,	'F',	'f'C,	0x21 F,
867c478bd9Sstevel@tonic-gate 	/* 22 */	'g'A,	'G',	'g'C,	0x22 F,
877c478bd9Sstevel@tonic-gate 	/* 23 */	'h'A,	'H',	'h'C,	0x23 F,
887c478bd9Sstevel@tonic-gate 	/* 24 */	'j'A,	'J',	'j'C,	0x24 F,
897c478bd9Sstevel@tonic-gate 	/* 25 */	'k'A,	'K',	'k'C,	0x25 F,
907c478bd9Sstevel@tonic-gate 	/* 26 */	'l'A,	'L',	'l'C,	0x26 F,
917c478bd9Sstevel@tonic-gate 	/* 27 */	';',	':',	NOP,	NOP,
927c478bd9Sstevel@tonic-gate 	/* 28 */	'\'',	'"',	NOP,	NOP,
937c478bd9Sstevel@tonic-gate 	/* 29 */	'`',	'~',	NOP,	NOP,
947c478bd9Sstevel@tonic-gate 	/* 2a */	LSHIFT,	LSHIFT,	LSHIFT,	LSHIFT,
957c478bd9Sstevel@tonic-gate 	/* 2b */	'\\',	'|',	'\\'C,	NOP,
967c478bd9Sstevel@tonic-gate 	/* 2c */	'z'A,	'Z',	'z'C,	0x2c F,
977c478bd9Sstevel@tonic-gate 	/* 2d */	'x'A,	'X',	'x'C,	0x2d F,
987c478bd9Sstevel@tonic-gate 	/* 2e */	'c'A,	'C',	'c'C,	0x2e F,
997c478bd9Sstevel@tonic-gate 	/* 2f */	'v'A,	'V',	'v'C,	0x2f F,
1007c478bd9Sstevel@tonic-gate 	/* 30 */	'b'A,	'B',	'b'C,	0x30 F,
1017c478bd9Sstevel@tonic-gate 	/* 31 */	'n'A,	'N',	'n'C,	0x31 F,
1027c478bd9Sstevel@tonic-gate 	/* 32 */	'm'A,	'M',	'm'C,	0x32 F,
1037c478bd9Sstevel@tonic-gate 	/* 33 */	',',	'<',	NOP,	NOP,
1047c478bd9Sstevel@tonic-gate 	/* 34 */	'.',	'>',	NOP,	NOP,
1057c478bd9Sstevel@tonic-gate 	/* 35 */	'/',	'?',	NOP,	NOP,
1067c478bd9Sstevel@tonic-gate 	/* 36 */	RSHIFT,	RSHIFT,	RSHIFT,	RSHIFT,
1077c478bd9Sstevel@tonic-gate 	/* 37 */	'*',	NOP,	NOP,	NOP,	/* * PrtSc */
1087c478bd9Sstevel@tonic-gate 	/* 38 */	ALT,	ALT,	ALT,	ALT,
1097c478bd9Sstevel@tonic-gate 	/* 39 */	' ',	' ',	NOP,	NOP,
1107c478bd9Sstevel@tonic-gate 	/* 3a */	CAPSLK,	CAPSLK,	CAPSLK,	CAPSLK,
1117c478bd9Sstevel@tonic-gate 	/* 3b */	0x3b F,	0x54 F,	0x5e F,	0x68 F,
1127c478bd9Sstevel@tonic-gate 	/* 3c */	0x3c F,	0x55 F,	0x5f F,	0x69 F,
1137c478bd9Sstevel@tonic-gate 	/* 3d */	0x3d F,	0x56 F,	0x60 F,	0x6a F,
1147c478bd9Sstevel@tonic-gate 	/* 3e */	0x3e F,	0x57 F,	0x61 F,	0x6b F,
1157c478bd9Sstevel@tonic-gate 	/* 3f */	0x3f F,	0x58 F,	0x62 F,	0x6c F,
1167c478bd9Sstevel@tonic-gate 	/* 40 */	0x40 F,	0x59 F,	0x63 F,	0x6d F,
1177c478bd9Sstevel@tonic-gate 	/* 41 */	0x41 F,	0x5a F,	0x64 F,	0x6e F,
1187c478bd9Sstevel@tonic-gate 	/* 42 */	0x42 F,	0x5b F,	0x65 F,	0x6f F,
1197c478bd9Sstevel@tonic-gate 	/* 43 */	0x43 F,	0x5c F,	0x66 F,	0x70 F,
1207c478bd9Sstevel@tonic-gate 	/* 44 */	0x44 F,	0x5d F,	0x67 F,	0x71 F,
1217c478bd9Sstevel@tonic-gate 	/* 45 */	NUMLK,	NUMLK,	NUMLK,	NUMLK,
1227c478bd9Sstevel@tonic-gate 	/* 46 */	SCRLLK,	SCRLLK,	SCRLLK,	SCRLLK,
1237c478bd9Sstevel@tonic-gate 	/* 47 */	0x47 N,	'7',	NOP,	NOP,
1247c478bd9Sstevel@tonic-gate 	/* 48 */	0x48 N,	'8',	NOP,	NOP,
1257c478bd9Sstevel@tonic-gate 	/* 49 */	0x49 N,	'9',	NOP,	NOP,
1267c478bd9Sstevel@tonic-gate 	/* 4a */	'-',	'-',	NOP,	NOP,
1277c478bd9Sstevel@tonic-gate 	/* 4b */	0x4b N,	'4',	NOP,	NOP,
1287c478bd9Sstevel@tonic-gate 	/* 4c */	NOP,	'5',	NOP,	NOP,
1297c478bd9Sstevel@tonic-gate 	/* 4d */	0x4d N,	'6',	NOP,	NOP,
1307c478bd9Sstevel@tonic-gate 	/* 4e */	'+',	'+',	NOP,	NOP,
1317c478bd9Sstevel@tonic-gate 	/* 4f */	0x4f N,	'1',	NOP,	NOP,
1327c478bd9Sstevel@tonic-gate 	/* 50 */	0x50 N,	'2',	NOP,	NOP,
1337c478bd9Sstevel@tonic-gate 	/* 51 */	0x51 N,	'3',	NOP,	NOP,
1347c478bd9Sstevel@tonic-gate 	/* 52 */	0x52 N,	'0',	NOP,	NOP,
1357c478bd9Sstevel@tonic-gate 	/* 53 */	0x53 N,	'.',	REBOOT,	REBOOT,
1367c478bd9Sstevel@tonic-gate 	/* 54 */	NOP,	NOP,	NOP,	NOP,	/* SysReq */
1377c478bd9Sstevel@tonic-gate 	/* 55 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1387c478bd9Sstevel@tonic-gate 	/* 56 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1397c478bd9Sstevel@tonic-gate 	/* 57 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1407c478bd9Sstevel@tonic-gate 	/* 58 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1417c478bd9Sstevel@tonic-gate 	/* 59 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1427c478bd9Sstevel@tonic-gate 	/* 5a */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1437c478bd9Sstevel@tonic-gate 	/* 5b */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1447c478bd9Sstevel@tonic-gate 	/* 5c */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1457c478bd9Sstevel@tonic-gate 	/* 5d */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1467c478bd9Sstevel@tonic-gate 	/* 5e */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1477c478bd9Sstevel@tonic-gate 	/* 5f */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1487c478bd9Sstevel@tonic-gate 	/* 60 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1497c478bd9Sstevel@tonic-gate 	/* 61 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1507c478bd9Sstevel@tonic-gate 	/* 62 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1517c478bd9Sstevel@tonic-gate 	/* 63 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1527c478bd9Sstevel@tonic-gate 	/* 64 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1537c478bd9Sstevel@tonic-gate 	/* 65 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1547c478bd9Sstevel@tonic-gate 	/* 66 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1557c478bd9Sstevel@tonic-gate 	/* 67 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1567c478bd9Sstevel@tonic-gate 	/* 68 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1577c478bd9Sstevel@tonic-gate 	/* 69 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1587c478bd9Sstevel@tonic-gate 	/* 6a */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1597c478bd9Sstevel@tonic-gate 	/* 6b */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1607c478bd9Sstevel@tonic-gate 	/* 6c */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1617c478bd9Sstevel@tonic-gate 	/* 6d */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1627c478bd9Sstevel@tonic-gate 	/* 6e */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1637c478bd9Sstevel@tonic-gate 	/* 6f */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1647c478bd9Sstevel@tonic-gate 	/* 70 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1657c478bd9Sstevel@tonic-gate 	/* 71 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1667c478bd9Sstevel@tonic-gate 	/* 72 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1677c478bd9Sstevel@tonic-gate 	/* 73 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1687c478bd9Sstevel@tonic-gate 	/* 74 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1697c478bd9Sstevel@tonic-gate 	/* 75 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1707c478bd9Sstevel@tonic-gate 	/* 76 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1717c478bd9Sstevel@tonic-gate 	/* 77 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1727c478bd9Sstevel@tonic-gate 	/* 78 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1737c478bd9Sstevel@tonic-gate 	/* 79 */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1747c478bd9Sstevel@tonic-gate 	/* 7a */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1757c478bd9Sstevel@tonic-gate 	/* 7b */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1767c478bd9Sstevel@tonic-gate 	/* 7c */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1777c478bd9Sstevel@tonic-gate 	/* 7d */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1787c478bd9Sstevel@tonic-gate 	/* 7e */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1797c478bd9Sstevel@tonic-gate 	/* 7f */	UNDEF,	UNDEF,	UNDEF,	UNDEF,
1807c478bd9Sstevel@tonic-gate };
181