summaryrefslogtreecommitdiff
path: root/sys/arch/sparc/include/kbd.h
blob: f957a62d8159565b2483d3395f3274c25e17743f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
/*	$OpenBSD: kbd.h,v 1.7 1999/08/21 20:31:39 maja Exp $	*/
/*	$NetBSD: kbd.h,v 1.6 1996/03/31 22:21:35 pk Exp $ */

/*
 * Copyright (c) 1992, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * This software was developed by the Computer Systems Engineering group
 * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
 * contributed to Berkeley.
 *
 * All advertising materials mentioning features or use of this software
 * must display the following acknowledgement:
 *	This product includes software developed by the University of
 *	California, Lawrence Berkeley Laboratory.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed by the University of
 *	California, Berkeley and its contributors.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)kbd.h	8.1 (Berkeley) 6/11/93
 */

/*
 * Keyboard `registers'.  (This should be called kbd_reg.h but we need to
 * be compatible.)
 */

/*
 * Control codes sent from type 2, 3, and 4 keyboards.
 *
 * Note that KBD_RESET is followed by a keyboard ID, while KBD_IDLE is not.
 * KBD_IDLE does not take the place of any `up' transitions (it merely occurs
 * after them).
 */
#define	KBD_RESET	0xff		/* keyboard `reset' response */
#define	KBD_IDLE	0x7f		/* keyboard `all keys are up' code */
#define	KBD_LAYOUT	0xfe		/* keyboard `get layout' response */

/* Keyboard IDs */
#define	KB_SUN2		2		/* type 2 keyboard */
#define	KB_SUN3		3		/* type 3 keyboard */
#define	KB_SUN4		4		/* type 4 keyboard */

/* Key codes are in 0x00..0x7e; KBD_UP is set if the key goes up */
#define	KBD_KEYMASK	0x7f		/* keyboard key mask */
#define	KBD_UP		0x80		/* keyboard `up' transition */

/* Keyboard codes needed to recognize the L1-A sequence */
#define	KBD_L1		1		/* keyboard code for `L1' key */
#define	KBD_A		77		/* keyboard code for `A' key */

/* Control codes sent to the various keyboards */
#define	KBD_CMD_RESET	1		/* reset keyboard */
#define	KBD_CMD_BELL	2		/* turn bell on */
#define	KBD_CMD_NOBELL	3		/* turn bell off */
#define	KBD_CMD_CLICK	10		/* turn keyclick on */
#define	KBD_CMD_NOCLICK	11		/* turn keyclick off */
#define KBD_CMD_SETLED	14		/* set LED state (type 4 kbd) */
#define KBD_CMD_GLAYOUT	15		/* get DIP switch (type 4 kbd) */

#define	LED_NUM_LOCK	0x1
#define	LED_COMPOSE	0x2
#define	LED_SCROLL_LOCK	0x4
#define	LED_CAPS_LOCK	0x8

#define	CAPSLOCK	0
#define	SHIFTLOCK	1
#define	LEFTSHIFT	2
#define	RIGHTSHIFT	3
#define	LEFTCTRL	4
#define	RIGHTCTRL	5
#define	ALTGRAPH	9
#define	ALT		10
#define	NUMLOCK		11

#define	SYSTEMBIT	1

#define	SHIFTKEYS	0x100
#define	BUCKYBITS	0x200
#define	FUNNY		0x300
#define	NOP		0x300
#define	OOPS		0x301
/*	HOLE		0x302 defined in kbio.h */
#define	RESET		0x306
#define	ERROR		0x307
#define	IDLE		0x308
#define	COMPOSE		0x309
#define	NONL		0x30a

#define	FA_CLASS	0x400
#define	FA_UMLAUT	0x400
#define	FA_CFLEX	0x401
#define	FA_TILDE	0x402
#define	FA_CEDILLA	0x403
#define	FA_ACUTE	0x404
#define	FA_GRAVE	0x405
#define	FA_CLASS_LAST	0x405

#define	STRING		0x500
#define	KTAB_STRLEN	10
#define	HOMEARROW	0x00
#define	UPARROW		0x01
#define	DOWNARROW	0x02
#define	LEFTARROW	0x03
#define	RIGHTARROR	0x04

#define	FUNCKEYS	0x600
#define	LEFTFUNC	0x600
#define	RIGHTFUNC	0x610
#define	TOPFUNC		0x620
#define	BOTTOMFUNC	0x630
#define	LF(n)		(LEFTFUNC+(n)-1)
#define	RF(n)		(RIGHTFUNC+(n)-1)
#define	TF(n)		(TOPFUNC+(n)-1)
#define	BF(n)		(BOTTOMFUNC+(n)-1)

#define	PADKEYS		0x700
#define	PADEQUAL	0x700
#define	PADSLASH	0x701
#define	PADSTAR		0x702
#define	PADMINUS	0x703
#define	PADSEP		0x704
#define	PAD7		0x705
#define	PAD8		0x706
#define	PAD9		0x707
#define	PADPLUS		0x708
#define	PAD4		0x709
#define	PAD5		0x70A
#define	PAD6		0x70B
#define	PAD1		0x70C
#define	PAD2		0x70D
#define	PAD3		0x70E
#define	PAD0		0x70F
#define	PADDOT		0x710
#define	PADENTER	0x711

#ifdef _KERNEL
void 	kbd_serial __P((struct tty *,
			void (*)(struct tty *), void (*)(struct tty *)));
void 	ms_serial __P((struct tty *,
			void (*)(struct tty *), void (*)(struct tty *)));
void 	kbd_rint __P((int));
void 	ms_rint __P((int));
void 	kbd_ascii __P((struct tty *));
int	kbd_docmd __P((int, int));
#endif