1139749Simp/*-
2122470Sjake * Copyright (c) 2002 Jason L. Wright (jason@thought.net)
3122470Sjake * All rights reserved.
4122470Sjake *
5122470Sjake * Redistribution and use in source and binary forms, with or without
6122470Sjake * modification, are permitted provided that the following conditions
7122470Sjake * are met:
8122470Sjake * 1. Redistributions of source code must retain the above copyright
9122470Sjake *    notice, this list of conditions and the following disclaimer.
10122470Sjake * 2. Redistributions in binary form must reproduce the above copyright
11122470Sjake *    notice, this list of conditions and the following disclaimer in the
12122470Sjake *    documentation and/or other materials provided with the distribution.
13122470Sjake * 3. All advertising materials mentioning features or use of this software
14122470Sjake *    must display the following acknowledgement:
15122470Sjake *	This product includes software developed by Jason L. Wright
16122470Sjake * 4. The name of the author may not be used to endorse or promote products
17122470Sjake *    derived from this software without specific prior written permission.
18122470Sjake *
19122470Sjake * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20122470Sjake * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21122470Sjake * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22122470Sjake * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
23122470Sjake * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24122470Sjake * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25122470Sjake * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26122470Sjake * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27122470Sjake * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
28122470Sjake * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29122470Sjake * POSSIBILITY OF SUCH DAMAGE.
30122470Sjake *
31122470Sjake * Effort sponsored in part by the Defense Advanced Research Projects
32122470Sjake * Agency (DARPA) and Air Force Research Laboratory, Air Force
33122470Sjake * Materiel Command, USAF, under agreement number F30602-01-2-0537.
34122470Sjake *
35122470Sjake * $FreeBSD$
36122470Sjake */
37122470Sjake
38122470Sjake/* keyboard commands (host->kbd) */
39122470Sjake#define	SKBD_CMD_RESET		0x01
40122470Sjake#define	SKBD_CMD_BELLON		0x02
41122470Sjake#define	SKBD_CMD_BELLOFF	0x03
42122470Sjake#define	SKBD_CMD_CLICKON	0x0a
43122470Sjake#define	SKBD_CMD_CLICKOFF	0x0b
44122470Sjake#define	SKBD_CMD_SETLED		0x0e
45122470Sjake#define	SKBD_CMD_LAYOUT		0x0f
46122470Sjake
47122470Sjake/* keyboard responses (kbd->host) */
48122470Sjake#define	SKBD_RSP_RESET_OK	0x04	/* normal reset status for type 4/5/6 */
49122470Sjake#define	SKBD_RSP_IDLE		0x7f	/* no keys down */
50122470Sjake#define	SKBD_RSP_LAYOUT		0xfe	/* layout follows */
51122470Sjake#define	SKBD_RSP_RESET		0xff	/* reset status follows */
52122470Sjake
53122470Sjake#define	SKBD_LED_NUMLOCK	0x01
54122470Sjake#define	SKBD_LED_COMPOSE	0x02
55122470Sjake#define	SKBD_LED_SCROLLLOCK	0x04
56122470Sjake#define	SKBD_LED_CAPSLOCK	0x08
57122470Sjake
58122470Sjake#define	SKBD_STATE_RESET	0
59122470Sjake#define	SKBD_STATE_LAYOUT	1
60122470Sjake#define	SKBD_STATE_GETKEY	2
61122470Sjake
62122470Sjake/* keyboard types */
63122470Sjake#define	KB_SUN2		2		/* type 2 keyboard */
64122470Sjake#define	KB_SUN3		3		/* type 3 keyboard */
65122470Sjake#define	KB_SUN4		4		/* type 4/5/6 keyboard */
66163890Smarius
67163890Smarius#define	SKBD_KEY_RELEASE	0x80
68163890Smarius#define	SKBD_KEY_CHAR(c)	((c) & 0x7f)
69