| 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 | |