1 | /* $NetBSD: kbio.h,v 1.5 2015/09/06 06:01:01 dholland Exp $ */ |
2 | |
3 | /* |
4 | * Copyright (c) 1992, 1993 |
5 | * The Regents of the University of California. All rights reserved. |
6 | * |
7 | * This software was developed by the Computer Systems Engineering group |
8 | * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and |
9 | * contributed to Berkeley. |
10 | * |
11 | * All advertising materials mentioning features or use of this software |
12 | * must display the following acknowledgement: |
13 | * This product includes software developed by the University of |
14 | * California, Lawrence Berkeley Laboratory. |
15 | * |
16 | * Redistribution and use in source and binary forms, with or without |
17 | * modification, are permitted provided that the following conditions |
18 | * are met: |
19 | * 1. Redistributions of source code must retain the above copyright |
20 | * notice, this list of conditions and the following disclaimer. |
21 | * 2. Redistributions in binary form must reproduce the above copyright |
22 | * notice, this list of conditions and the following disclaimer in the |
23 | * documentation and/or other materials provided with the distribution. |
24 | * 3. Neither the name of the University nor the names of its contributors |
25 | * may be used to endorse or promote products derived from this software |
26 | * without specific prior written permission. |
27 | * |
28 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
29 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
30 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
31 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
32 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
33 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
34 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
35 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
36 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
37 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
38 | * SUCH DAMAGE. |
39 | * |
40 | * @(#)kbio.h 8.1 (Berkeley) 6/11/93 |
41 | */ |
42 | |
43 | #ifndef _DEV_SUN_KBIO_H_ |
44 | #define _DEV_SUN_KBIO_H_ |
45 | |
46 | #include <sys/ioccom.h> |
47 | |
48 | /* |
49 | * The following is a minimal emulation of Sun's `kio' structures |
50 | * and related operations necessary to make X11 happy (i.e., make it |
51 | * compile, and make old X11 binaries run). |
52 | */ |
53 | |
54 | /* |
55 | * The kiockey structure apparently gets and/or sets keyboard mappings. |
56 | * It seems to be kind of useless, but X11 uses it (according to the |
57 | * comments) to figure out when a Sun 386i has a type-4 keyboard but |
58 | * claims to have a type-3 keyboard. We need just enough to cause the |
59 | * appropriate ioctl to return the appropriate magic value. |
60 | * |
61 | * KIOCGETKEY fills in kio_entry from kio_station. Not sure what tablemask |
62 | * is for; X sets it before the call, so it is not an output, but we do not |
63 | * care anyway. KIOCSDIRECT is supposed to tell the kernel whether to send |
64 | * keys to the console or to X; we just send them to X whenever the keyboard |
65 | * is open at all. (XXX may need to change this later) |
66 | * |
67 | * Keyboard commands and types are defined in kbd.h as they are actually |
68 | * real hardware commands and type numbers. |
69 | */ |
70 | |
71 | struct okiockey { /* Out-dated key translation structure */ |
72 | int kio_tablemask; /* whatever */ |
73 | u_char kio_station; /* key number */ |
74 | u_char kio_entry; /* 0xA2 (HOLE) if not present */ |
75 | char kio_text[10]; /* the silly escape sequences (unsupported) */ |
76 | }; |
77 | |
78 | struct kiockeymap { |
79 | int kio_tablemask; /* whatever */ |
80 | u_char kio_station; /* key number */ |
81 | u_short kio_entry; /* keymap entry - see kbd_map.h */ |
82 | char kio_text[10]; /* the silly escape sequences (unsupported) */ |
83 | }; |
84 | |
85 | /* |
86 | * Values for kio_tablemask. These determine which table to read/modify |
87 | * in KIOC[SG]KEY ioctls. Currently handle: {NO,SHIFT,CTRL,UP}MASK |
88 | * Note: these are SunOS-4.1 compatible values |
89 | */ |
90 | #define KIOC_NOMASK 0x00 |
91 | #define KIOC_CAPSMASK 0x01 |
92 | #define KIOC_SHIFTMASK 0x0E |
93 | #define KIOC_CTRLMASK 0x30 |
94 | #define KIOC_UPMASK 0x80 |
95 | #define KIOC_ALTGMASK 0x200 |
96 | #define KIOC_ALTMASK 0x400 |
97 | #define KIOC_NUMLMASK 0x800 |
98 | |
99 | #if 0 /* XXX - This is wrong. Programs testing this expect 0xA2 */ |
100 | #define HOLE 0x302 /* value for kio_entry to say `really type 3' */ |
101 | #endif |
102 | |
103 | #define KIOCTRANS _IOW('k', 0, int) /* set translation mode */ |
104 | |
105 | #define KIOCSETKEY _IOWR('k', 1, struct okiockey) /* fill in kio_entry */ |
106 | #define KIOCGETKEY _IOWR('k', 2, struct okiockey) /* fill in kio_entry */ |
107 | |
108 | #define KIOCGTRANS _IOR('k', 5, int) /* get translation mode */ |
109 | #define KIOCCMD _IOW('k', 8, int) /* X uses this to ring bell */ |
110 | #define KIOCTYPE _IOR('k', 9, int) /* get keyboard type */ |
111 | #define KIOCSDIRECT _IOW('k', 10, int) /* keys to console? */ |
112 | #define KIOCSKEY _IOW('k', 12, struct kiockeymap) /* set xlat mode */ |
113 | #define KIOCGKEY _IOWR('k', 13, struct kiockeymap) /* get xlat mode */ |
114 | #define KIOCSLED _IOW('k', 14, char) /* set LED state */ |
115 | #define KIOCGLED _IOR('k', 15, char) /* get LED state */ |
116 | #define KIOCLAYOUT _IOR('k', 20, int) /* get keyboard layout */ |
117 | |
118 | #define TR_NONE 0 /* X compat, unsupported */ |
119 | #define TR_ASCII 1 /* X compat, unsupported */ |
120 | #define TR_EVENT 2 /* X compat, unsupported */ |
121 | #define TR_UNTRANS_EVENT 3 |
122 | |
123 | #endif /* _DEV_SUN_KBIO_H_ */ |
124 | |