summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/kbio.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/sys/kbio.h')
-rw-r--r--usr/src/uts/common/sys/kbio.h224
1 files changed, 224 insertions, 0 deletions
diff --git a/usr/src/uts/common/sys/kbio.h b/usr/src/uts/common/sys/kbio.h
new file mode 100644
index 0000000000..4e9c5e1ac9
--- /dev/null
+++ b/usr/src/uts/common/sys/kbio.h
@@ -0,0 +1,224 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _SYS_KBIO_H
+#define _SYS_KBIO_H
+
+#pragma ident "%Z%%M% %I% %E% SMI" /* SunOS4.0 1.23 */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Keyboard related ioctls
+ */
+
+/*
+ * See sys/kbd.h for TR_NONE (don't translate) and TR_ASCII
+ * (translate to ASCII) TR_EVENT (translate to virtual input
+ * device codes)
+ */
+#define KIOC ('k'<<8)
+
+#if defined(__i386) || defined(__i386_COMPAT)
+
+/*
+ * For x86, these numbers conflict with KD "Xenix" ioctl numbers, so each
+ * conflicting command has been offset by 30.
+ */
+#define KIOCTRANS (KIOC|30) /* set keyboard translation */
+#define KIOCGTRANS (KIOC|35) /* get keyboard translation */
+#define KIOCTRANSABLE (KIOC|36) /* set keyboard translatability */
+#define KIOCGTRANSABLE (KIOC|37) /* get keyboard translatability */
+
+#else /* __i386 || __i386_COMPAT */
+
+#define KIOCTRANS (KIOC|0) /* set keyboard translation */
+#define KIOCGTRANS (KIOC|5) /* get keyboard translation */
+#define KIOCTRANSABLE (KIOC|6) /* set keyboard translatability */
+#define KIOCGTRANSABLE (KIOC|7) /* get keyboard translatability */
+
+#endif /* __i386 || __i386_COMPAT */
+
+
+#define TR_CANNOT 0 /* Cannot translate keyboard using tables */
+#define TR_CAN 1 /* Can translate keyboard using tables */
+
+/*
+ * Old-style keymap entry, for backwards compatibility only.
+ */
+struct kiockey {
+ int kio_tablemask; /* Translation table (one of: 0, CAPSMASK, */
+ /* SHIFTMASK, CTRLMASK, UPMASK, */
+ /* ALTGRAPHMASK, NUMLOCKMASK) */
+#define KIOCABORT1 -1 /* Special "mask": abort1 keystation */
+#define KIOCABORT2 -2 /* Special "mask": abort2 keystation */
+#define KIOCABORT1A -3 /* Special "mask": alt abort1 keystation */
+ uchar_t kio_station; /* Physical keyboard key station (0-127) */
+ uchar_t kio_entry; /* Translation table station's entry */
+ char kio_string[10]; /* Value for STRING entries (null terminated) */
+};
+
+/*
+ * Set kio_tablemask table's kio_station to kio_entry.
+ * Copy kio_string to string table if kio_entry is between STRING and
+ * STRING+15. EINVAL is possible if there are invalid arguments.
+ */
+#if defined(__i386) || defined(__i386_COMPAT)
+#define KIOCSETKEY (KIOC|31) /* avoid conflict with "SETFKEY" */
+#else
+#define KIOCSETKEY (KIOC|1)
+#endif
+
+/*
+ * Get kio_tablemask table's kio_station to kio_entry.
+ * Get kio_string from string table if kio_entry is between STRING and
+ * STRING+15. EINVAL is possible if there are invalid arguments.
+ */
+#if defined(__i386) || defined(__i386_COMPAT)
+#define KIOCGETKEY (KIOC|32) /* avoid conflict with "GIO_SCRNMAP" */
+#else
+#define KIOCGETKEY (KIOC|2)
+#endif
+
+/*
+ * Send the keyboard device a control command. sys/kbd.h contains
+ * the constants that define the commands. Normal values are:
+ * KBD_CMD_BELL, KBD_CMD_NOBELL, KBD_CMD_CLICK, KBD_CMD_NOCLICK.
+ * Inappropriate commands for particular keyboard types are ignored.
+ *
+ * Since there is no reliable way to get the state of the bell or click
+ * or LED (because we can't query the kdb, and also one could do writes
+ * to the appropriate serial driver--thus going around this ioctl)
+ * we don't provide an equivalent state querying ioctl.
+ */
+#define KIOCCMD (KIOC|8)
+
+/*
+ * Get keyboard type. Return values are one of KB_* from sys/kbd.h,
+ * e.g., KB_KLUNK, KB_VT100, KB_SUN2, KB_SUN3, KB_SUN4, KB_ASCII.
+ * -1 means that the type is not known.
+ */
+#define KIOCTYPE (KIOC|9) /* get keyboard type */
+
+/*
+ * Set flag indicating whether keystrokes get routed to /dev/console.
+ */
+#define KIOCSDIRECT (KIOC|10)
+
+/*
+ * Get flag indicating whether keystrokes get routed to /dev/console.
+ */
+#if defined(__i386) || defined(__i386_COMPAT)
+#define KIOCGDIRECT (KIOC|41) /* avoid conflict with "GIO_STRMAP" */
+#else
+#define KIOCGDIRECT (KIOC|11)
+#endif
+
+/*
+ * New-style key map entry.
+ */
+struct kiockeymap {
+ int kio_tablemask; /* Translation table (one of: 0, CAPSMASK, */
+ /* SHIFTMASK, CTRLMASK, UPMASK, */
+ /* ALTGRAPHMASK) */
+ uchar_t kio_station; /* Physical keyboard key station (0-127) */
+ ushort_t kio_entry; /* Translation table station's entry */
+ char kio_string[10]; /* Value for STRING entries (null terminated) */
+};
+
+/*
+ * Set kio_tablemask table's kio_station to kio_entry.
+ * Copy kio_string to string table if kio_entry is between STRING and
+ * STRING+15. EINVAL is possible if there are invalid arguments.
+ */
+#if defined(__i386) || defined(__i386_COMPAT)
+#define KIOCSKEY (KIOC|42) /* avoid conflict with "PIO_STRMAP" */
+#else
+#define KIOCSKEY (KIOC|12)
+#endif
+
+/*
+ * Get kio_tablemask table's kio_station to kio_entry.
+ * Get kio_string from string table if kio_entry is between STRING and
+ * STRING+15. EINVAL is possible if there are invalid arguments.
+ */
+#define KIOCGKEY (KIOC|13)
+
+/*
+ * Set and get LED state.
+ */
+#define KIOCSLED (KIOC|14)
+#define KIOCGLED (KIOC|15)
+
+/*
+ * Set and get compatibility mode.
+ */
+#define KIOCSCOMPAT (KIOC|16)
+#define KIOCGCOMPAT (KIOC|17)
+
+/*
+ * Set and get keyboard layout.
+ */
+#define KIOCSLAYOUT (KIOC|19)
+#define KIOCLAYOUT (KIOC|20)
+
+/*
+ * KIOCSKABORTEN:
+ *
+ * Enable/Disable/Alternate Keyboard abort effect (Stop/A, Break or other seq).
+ * The argument is a pointer to an integer. If the integer is zero,
+ * keyboard abort is disabled, one will enable keyboard abort (hardware BREAK
+ * signal), two will revert to the Alternative Break Sequence. NB: This ioctl
+ * requires root credentials and applies to serial input devices and keyboards.
+ * When the Alternative Break Sequence is enabled it applies to serial input
+ * devices ONLY.
+ */
+#define KIOCSKABORTEN (KIOC|21)
+
+#define KIOCABORTDISABLE 0 /* Disable Aborts */
+#define KIOCABORTENABLE 1 /* Enable BREAK Signal Aborts */
+#define KIOCABORTALTERNATE 2 /* Enable Alternative Aborts */
+
+/*
+ * Get/Set Keyboard autorepeat delay/rate.
+ * Use millisecond as unit used by the user-level application
+ */
+#define KIOCGRPTDELAY (KIOC|22)
+#define KIOCSRPTDELAY (KIOC|23)
+#define KIOCGRPTRATE (KIOC|24)
+#define KIOCSRPTRATE (KIOC|25)
+
+/* Used to control the AutoRepeat Min-delay and Min-Rate */
+#define KIOCRPTDELAY_MIN (300)
+#define KIOCRPTRATE_MIN (30)
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_KBIO_H */