/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (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 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_KBIO_H #define _SYS_KBIO_H #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) */ unsigned 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) /* Set keyboard and console beeper frequencies */ #define KIOCSETFREQ (KIOC|26) /* Beeper type for struct freq_request */ enum fr_beep_type {CONSOLE_BEEP = 1, KBD_BEEP = 2}; /* Frequency request structure */ struct freq_request { enum fr_beep_type type; /* Beeper type */ int16_t freq; /* Frequency */ }; #define KIOCMKTONE (KIOC|27) /* * For historical reasons, the frequency argument to KIOCMKTONE is * in i8254 clock cycles. */ #define PIT_HZ 1193182 /* 8254's cycles per second */ #define KDMKTONE KIOCMKTONE /* Used to control the AutoRepeat Min-delay and Min-Rate */ #define KIOCRPTDELAY_MIN (100) #define KIOCRPTRATE_MIN (1) /* * Get/Set Keyboard autorepeat count. */ #define KIOCGRPTCOUNT (KIOC|28) #define KIOCSRPTCOUNT (KIOC|29) #ifdef __cplusplus } #endif #endif /* _SYS_KBIO_H */