keyboard(7) keyboard(7)
NAME
keyboard - system console keyboard
DESCRIPTION
The system console has two separate parts: the keyboard and
the display [see display(7)].
The keyboard is used to type data, and send certain control
signals to the computer. UNIX system software performs
terminal emulation on the console screen and keyboard, and, in
doing so, makes use of several particular keys and key
combinations. These keys and key combinations have special
names that are unique to the UNIX system, and may or may not
correspond to the keytop labels on your keyboard.
When you press a key, one of the following happens:
An ASCII value is entered
The meaning of another key, or keys, is changed.
A string is sent to the computer.
A function is initiated.
When a key is pressed (a keystroke), the keyboard sends a
scancode to the computer. This scancode is interpreted by the
keyboard driver. The actual code sequence delivered to the
terminal input routine [see termio (7)] is defined by a set of
internal tables in the driver. These tables can be modified
by software (see the discussion of ioctl calls below). In
addition, the driver can be instructed not to do translations,
delivering the keyboard up and down scan codes directly.
Changing Meanings
The action performed by a key can be changed by using certain
keys in combination. For example, the SHIFT key changes the
ASCII values of the alphanumeric keys. Holding down the CTRL
key while pressing another key sends a control code (such as
CTRL-d, CTRL-s, and CTRL-q). Holding down the ALT key also
modifies a key's value. The SHIFT, CTRL, and ALT keys can be
used in combination.
Switching Screens
To change screens (virtual terminals), first run the vtlmgr
command [see vtlmgr(1)]. Switch the current screen by typing
Copyright 1994 Novell, Inc. Page 1
keyboard(7) keyboard(7)
ALT-SYSREQ (also labeled ALT-PRINTSCRN on some systems)
followed by a key that identifies the desired screen. Any
active screen can be selected by following ALT-SYSREQ with Fn,
where Fn is one of the function keys. F1 refers to the first
virtual terminal screen, F2 refers to the second virtual
terminal screen, and so on. ALT-SYSREQ h (home) refers to the
main console display (/dev/console). The next active screen
can be selected with ALT-SYSREQ n, and the previous screen can
be selected with ALT-SYSREQ p.
The default screen switch enable sequence (ALT-SYSREQ) is
configurable. The SYSREQ table entry (see the ``Keyboard
Map'' section above) can be changed using ioctl calls (see the
section ``Ioctl Calls'' below). If the screen switch enable
sequence is changed from the default, you must use the newly
set sequence to switch virtual terminals. The default
keyboard mapping can be restored using the mapkey(1M) command.
Special Keys
The following table shows which keys on a typical console
correspond to UNIX system keys. In this table, a hyphen (-)
between keys means you must hold down the first key while
pressing the second. The mapping between characters that
generate signals and the signal generated is set with stty(1),
and may be changed [see stty(1)].
Name Keytop Action
_____________________________________________________________________________
INTR DEL Stops current action and returns to the shell. This
key is also called the RUB OUT or INTERRUPT key.
BACKSPACE <- Deletes the first character to the left of the
cursor.
Note that the ``cursor left'' key also has a left
arrow (<-) on its keytop, but you cannot backspace
using that key.
CTRL-d CTRL-D Signals the end of input from the keyboard; also
exits current shell.
CTRL-h CTRL-H Deletes the first character to the left of the
cursor. Also called the ERASE key.
CTRL-q CTRL-Q Restarts printing after it has been stopped with
CTRL-s.
CTRL-s CTRL-S Suspends printing on the screen (does not stop the
program).
CTRL-u CTRL-U Deletes all characters on the current line. Also
called the KILL key.
Copyright 1994 Novell, Inc. Page 2
keyboard(7) keyboard(7)
CTRL-\ CTRL-\ Quits current command and creates a core
file, if allowed. (Recommended for debugging only.)
ESCAPE ESC Special code for some programs. For example,
changes from insert mode to command mode in the
vi(1) text editor.
RETURN (down-left Terminates a command line and initiates an action
arrow or from the shell.
ENTER)
Fn Fn Function key n. F1-F12 are unshifted, F13-F24 are
shifted F1-F12, F25-F36 are CTRL-F1 through F12, and
F37-F48 are CTRL-SHIFT-F1 through F12.
The next Fn keys (F49-F60) are on the number pad
(unshifted):
F49 - `7' F55 - `6'
F50 - `8' F56 - `+'
F51 - `9' F57 - `1'
F52 - `-' F58 - `2'
F53 - `4' F59 - `3'
F54 - `5' F60 - `0'
Keyboard Map
The keyboard mapping structure is defined in
/usr/include/sys/kd.h. Each key can have ten states. The
first eight states are:
- BASE - CTRL-SHIFT
- SHIFT - ALT-SHIFT
- CTRL - ALT-CTRL
- ALT - ALT-CTRL-SHIFT
The two remaining states are indicated by two special bytes.
The first byte is a special state byte whose bits indicate
whether the key is special in one or more of the first eight
states. The second byte is one of four codes represented by
the characters C, N, B, or O which indicate how the lock keys
affect the particular key.
The following table describes the default keyboard mapping.
All values, except for special keywords (which are described
later), are ASCII character values.
Heading Description
SCAN CODE This column contains the scan code generated by
the keyboard hardware when a key is pressed.
There are no table entries for the scan code
Copyright 1994 Novell, Inc. Page 3
keyboard(7) keyboard(7)
generated by releasing a key.
BASE This column contains the normal value of a key
press.
SHIFT This column contains the value of a key press
when the SHIFT is also being held down.
LOCK This column indicates which lock keys affect that
particular key:
C indicates CAPSLOCK
N indicates NUMLOCK
B indicates both
O indicates locking is off
The remaining columns are the values of key presses when
combinations of the CTRL, ALT and SHIFT keys are also held
down.
The SRQTAB column entry is included in this table to provide a
simple index of the default virtual terminal key selectors to
the scan code to which it is assigned. The actual SRQTAB
table is a stand-alone table which can be read or written
using the KDGKBENT and KDSKBENT ioctl calls.
ALT
SCAN CTRL ALT ALT CTRL
CODEBASE SHIFT CTRL SHIFT ALT SHIFT CTRL SHIFT LOCKSRQTAB
___________________________________________________________________
1 esc esc esc esc esc esc esc esc O nop
2 '1' '!' '1' '1' escn escn nop nop O nop
3 '2' '@' '2' nul escn escn nop nop O nop
4 '3' '#' '3' '3' escn escn nop nop O nop
5 '4' '$' '4' '4' escn escn nop nop O nop
6 '5' '%' '5' '5' escn escn nop nop O nop
7 '6' '^' '6' rs escn escn nop nop O nop
8 '7' '&' '7' '7' escn escn nop nop O nop
9 '8' '*' '8' '8' escn escn nop nop O nop
10 '9' '(' '9' '9' escn escn nop nop O nop
11 '0' ')' '0' '0' escn escn nop nop O nop
12 '-' '_' '-' ns escn escn nop nop O nop
13 '=' '+' '=' '=' escn escn nop nop O nop
14 bs bs bs bs bs bs bs bs O nop
15 ht btab ht btab ht btab ht btab O nop
16 'q' 'Q' dc1 dc1 escn escn nop nop C nop
Copyright 1994 Novell, Inc. Page 4
keyboard(7) keyboard(7)
ALT
SCAN CTRL ALT ALT CTRL
CODEBASE SHIFT CTRL SHIFT ALT SHIFT CTRL SHIFT LOCKSRQTAB
___________________________________________________________________
17 'w' 'W' etb etb escn escn nop nop C nop
18 'e' 'E' enq enq escn escn nop nop C nop
19 'r' 'R' dc2 dc2 escn escn nop nop C nop
20 't' 'T' dc4 dc4 escn escn nop nop C nop
21 'y' 'Y' em em escn escn nop nop C nop
22 'u' 'U' nak nak escn escn nop nop C nop
23 'i' 'I' ht ht escn escn nop nop C nop
24 'o' 'O' si si escn escn nop nop C nop
25 'p' 'P' dle dle escn escn nop nop C K_PREV
26 '[' '{' esc nop escn escn nop nop O nop
27 ']' '}' gs nop escn escn nop nop O nop
28 cr cr cr cr cr cr cr cr O nop
29 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O nop
30 'a' 'A' soh soh escn escn nop nop C nop
31 's' 'S' dc3 dc3 escn escn nop nop C nop
32 'd' 'D' eot eot escn escn k_dbg nop C nop
33 'f' 'F' ack ack escn escn nop nop C K_FRCNEXT
34 'g' 'G' bel bel escn escn nop nop C nop
35 'h' 'H' bs bs escn escn nop nop C K_VTF
36 'j' 'J' nl nl escn escn nop nop C nop
37 'k' 'K' vt vt escn escn nop nop C nop
38 'l' 'L' np np escn escn nop nop C nop
39 ';' ':' ';' ':' escn escn nop nop O nop
40 ''' '"' ''' '"' escn escn nop nop O nop
41 '`' '~' '`' '~' escn escn nop nop O nop
42 lshiftlshift lshiftlshiftlshiftlshift lshiftlshiftO nop
43 '\\' '|' fs '|' escn escn nop nop O nop
44 'z' 'Z' sub sub escn escn nop nop C nop
45 'x' 'X' can can escn escn nop nop C nop
46 'c' 'C' etx etx escn escn nop nop C nop
47 'v' 'V' syn syn escn escn nop nop C nop
48 'b' 'B' stx stx escn escn nop nop C nop
49 'n' 'N' so so escn escn nop nop C K_NEXT
50 'm' 'M' cr cr escn escn nop nop C nop
51 ',' '<' ',' '<' escn escn nop nop O nop
52 '.' '>' '.' '>' escn escn nop nop O nop
53 '/' '?' '/' ns escn escn nop nop O nop
54 rshiftrshift rshiftrshiftrshiftrshift rshiftrshiftO nop
55 '*' '*' '*' '*' escn escn nop nop O nop
56 lalt lalt lalt lalt lalt lalt lalt lalt O nop
Copyright 1994 Novell, Inc. Page 5
keyboard(7) keyboard(7)
ALT
SCAN CTRL ALT ALT CTRL
CODEBASE SHIFT CTRL SHIFT ALT SHIFT CTRL SHIFT LOCKSRQTAB
___________________________________________________________________
57 ' ' ' ' nul nul escn escn nop nop O nop
58 clock clock clock clock clock clock clock clock O nop
59 fkey1 fkey13 fkey25fkey37fkey1 fkey13 fkey25fkey37O K_VTF+1
60 fkey2 fkey14 fkey26fkey38fkey2 fkey14 fkey26fkey38O K_VTF+2
61 fkey3 fkey15 fkey27fkey39fkey3 fkey15 fkey27fkey39O K_VTF+3
62 fkey4 fkey16 fkey28fkey40fkey4 fkey16 fkey28fkey40O K_VTF+4
63 fkey5 fkey17 fkey29fkey41fkey5 fkey17 fkey29fkey41O K_VTF+5
64 fkey6 fkey18 fkey30fkey42fkey6 fkey18 fkey30fkey42O K_VTF+6
65 fkey7 fkey19 fkey31fkey43fkey7 fkey19 fkey31fkey43O K_VTF+7
66 fkey8 fkey20 fkey32fkey44fkey8 fkey20 fkey32fkey44O K_VTF+8
67 fkey9 fkey21 fkey33fkey45fkey9 fkey21 fkey33fkey45O K_VTF+9
68 fkey10fkey22 fkey34fkey46fkey10fkey22 fkey34fkey46O K_VTF+10
69 nlock nlock nlock nlock nlock nlock nlock nlock O
70 slock slock slock slock slock slock slock slock O
71 fkey49'7' fkey49'7' fkey49escn nop nop N
72 fkey50'8' fkey50'8' fkey50escn nop nop N
73 fkey51'9' fkey51'9' fkey51escn nop nop N
74 fkey52'-' fkey52'-' fkey52escn nop nop N
75 fkey53'4' fkey53'4' fkey53escn nop nop N
76 fkey54'5' fkey54'5' fkey54escn nop nop N
77 fkey55'6' fkey55'6' fkey55escn nop nop N
78 fkey56'+' fkey56'+' fkey56escn nop nop N
79 fkey57'1' fkey57'1' fkey57escn nop nop N
80 fkey58'2' fkey58'2' fkey58escn nop nop N
81 fkey59'3' fkey59'3' fkey59escn nop nop N
82 fkey60'0' fkey60'0' fkey60escn nop nop N
83 del '.' del '.' del escn rboot nop N
84 fkey60fkey26 fkey60nop sysreqsysreq sysreqsysreqO
85 fkey58fkey58 fkey58fkey58fkey58fkey58 fkey58fkey58O
86 fkey53fkey53 fkey53fkey53fkey53fkey53 fkey53fkey53O
87 fkey11fkey23 fkey35fkey47fkey11fkey23 fkey35fkey47O K_VTF+11
88 fkey12fkey24 fkey36fkey48fkey12fkey24 fkey36fkey48O K_VTF+12
89 nop nop nop nop nop nop nop nop O K_NOP
90 nop nop nop nop nop nop nop nop O K_NOP
91 nop nop nop nop nop nop nop nop O K_NOP
92 nop nop nop nop nop nop nop nop O K_NOP
93 nop nop nop nop nop nop nop nop O K_NOP
94 nop nop nop nop nop nop nop nop O K_NOP
95 nop nop nop nop nop nop nop nop O K_NOP
96 nop nop nop nop nop nop nop nop O K_NOP
Copyright 1994 Novell, Inc. Page 6
keyboard(7) keyboard(7)
ALT
SCAN CTRL ALT ALT CTRL
CODEBASE SHIFT CTRL SHIFT ALT SHIFT CTRL SHIFT LOCKSRQTAB
___________________________________________________________________
97 nop nop nop nop nop nop nop nop O K_NOP
98 nop nop nop nop nop nop nop nop O K_NOP
99 nop nop nop nop nop nop nop nop O K_NOP
100 nop nop nop nop nop nop nop nop O K_NOP
101 nop nop nop nop nop nop nop nop O K_NOP
102 nop nop nop nop nop nop nop nop O K_NOP
103 nop nop nop nop nop nop nop nop O K_NOP
104 nop nop nop nop nop nop nop nop O K_NOP
105 nop nop nop nop nop nop nop nop O K_NOP
106 nop nop nop nop nop nop nop nop O K_NOP
107 fkey53fkey53 fkey53fkey53fkey53fkey53 fkey53fkey53O
108 nop nop nop nop nop nop nop nop O K_NOP
109 nop nop nop nop nop nop nop nop O K_NOP
110 nop nop nop nop nop nop nop nop O K_NOP
111 fkey51fkey51 nop nop nop nop nop nop O K_NOP
112 nop nop nop nop nop nop nop nop O K_NOP
113 nop nop nop nop nop nop nop nop O K_NOP
114 ralt ralt ralt ralt ralt ralt ralt ralt O K_NOP
115 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O K_NOP
116 slock slock brk brk slock slock brk brk O nline
117 '/' '/' nop nop escn escn nop nop O K_NOP
118 nop nop nop nop nop nop nop nop O K_NOP
119 slock slock brk brk slock slock brk brk O K_NOP
120 fkey50fkey50 nop nop nop nop nop nop O K_NOP
121 del del del del del del rboot del O K_NOP
122 fkey57fkey57 nop nop nop nop nop nop O K_NOP
123 fkey60fkey60 nop nop nop nop nop nop O K_NOP
124 nop nop nop nop nop nop nop nop O K_NOP
125 fkey55fkey55 nop nop nop nop nop nop O K_NOP
126 fkey59fkey59 nop nop nop nop nop nop O K_NOP
127 fkey49fkey49 nop nop nop nop nop nop O K_NOP
The following table lists the value of each of the special
keywords used in the preceding tables. The keywords are used
only in the preceding tables for readability. In the actual
keyboard map, a special keyword is represented by its value
with the corresponding special state bit being set.
Copyright 1994 Novell, Inc. Page 7
keyboard(7) keyboard(7)
Name Value Meaning
____________________________________________________________________
nop 0 No operation - no action from keypress
lshift 2 Left-hand shift
rshift 3 Right-hand shift
clock 4 Caps lock
nlock 5 Numeric lock
slock 6 Scroll lock
alt 7 Alt key
btab 8 Back tab key - generates fixed sequence (ESC[ Z)
ctrl 9 Control key
lalt 10 Left-hand alt key
ralt 11 right-hand alt key
lctrl 12 Left-hand control key
rctrl 13 Right-hand control key
agr 14 ALT-GR key (European keyboards only)
fkey1 27 Function key #1
. .
. .
. .
fkey96 122 Function key #96
sysreq 123 System request
brk 124 Break key
escn 125 Generate an ESC N x sequence, where x is the un-
alt'ed value of the scan code
esco 126 Generate an ESC O x sequence, where x is the un-
alt'ed value of the scan code
escl 127 Generate an ESC L x sequence, where x is the un-
alt'ed value of the scan code
rboot 128 Reboot system
debug 129 Invoke kernel debugger
NEXT 130 Switch to next virtual terminal on queue
PREV 131 Switch to previous virtual terminal on queue
FNEXT 132 Forced switch to next virtual terminal on queue
FPREV 133 Forced switch to previous virtual terminal on queue
VTF 134 Virtual Terminal First (VT00)
. .
. .
. .
VTL 148 Virtual Terminal Last (VT14)
MGRF 149 Virtual Terminal Manager First. Allows assigning
special significance to key sequence for actions by
virtual terminal layer manager. Used in SRQTAB
table.
Copyright 1994 Novell, Inc. Page 8
keyboard(7) keyboard(7)
. .
. .
. .
MGRL 179 Virtual Terminal Manager Last. Used in SRQTAB
table.
The following table lists names and decimal values for ASCII
characters in the preceding table. Names are used in place of
numeric constants to make it easier to read the scan code
table. Only the decimal values are placed in the ioctl
buffer. These values are taken from ascii(5).
Name Value| Name Value
____________|__________________
nul 0 | dc1 17
soh 1 | dc2 18
stx 2 | dc3 19
etx 3 | dc4 20
eot 4 | nak 21
enq 5 | syn 22
ack 6 | etb 23
bel 7 | can 24
bs 8 | em 25
ht 9 | sub 26
nl 10 | esc 27
vt 11 | fs 28
np 12 | gs 29
cr 13 | rs 30
so 14 | ns 31
si 15 | del 127
dle 16 |
String Key Mapping
The string mapping table is an array of 512 bytes (typedef
strmap_t) containing null-terminated strings that redefine the
function keys. The first null-terminated string is assigned
to the first function key, the second string is assigned to
the second function key, and so on.
There is no limit to the length of any particular string;
however, the whole table can not exceed 512 bytes, including
nulls. To make a string a null, add extra null characters.
The following table contains default function key values.
Copyright 1994 Novell, Inc. Page 9
keyboard(7) keyboard(7)
Default Function Key Values
____________________________________________________
Ctrl
Function Shift Ctrl Shift
Key # Function Function Function Function
____________________________________________________
1 ESC OP ESC Op ESC OP ESC Op
2 ESC OQ ESC Oq ESC OQ ESC Oq
3 ESC OR ESC Or ESC OR ESC Or
4 ESC OS ESC Os ESC OS ESC Os
5 ESC OT ESC Ot ESC OT ESC Ot
6 ESC OU ESC Ou ESC OU ESC Ou
7 ESC OV ESC Ov ESC OV ESC Ov
8 ESC OW ESC Ow ESC OW ESC Ow
9 ESC OX ESC Ox ESC OX ESC Ox
10 ESC OY ESC Oy ESC OY ESC Oy
11 ESC OZ ESC Oz ESC OZ ESC Oz
12 ESC OA ESC Oa ESC OA ESC Oa
Ioctl Calls
KDGKBMODE
This call gets the current keyboard mode. It returns
one of the following values, as defined in
/usr/include/sys/kd.h:
#define K_RAW 0x00 /* Send row scan codes */
#define K_XLATE 0x01 /* Translate to ASCII */
KDSKBMODE
This call sets the keyboard mode. The argument to the
call is either K_RAW or K_XLATE. By using raw mode, the
program can see the raw up and down scan codes from the
keyboard. In translate mode, the translation tables are
used to generate the appropriate character code.
KDGKBTYPE
This call gets the keyboard type. It returns one of the
following values, as defined in /usr/include/sys/kd.h:
#define KB_84 1 /*84 key keyboard*/
#define KB_101 2 /*101 key keyboard*/
#define KB_OTHER 3 /*Other type keyboard*/
KDGKBENT
This call reads one of the entries in the translation
tables. The argument to the call is the address of one
of the following structures, defined in
/usr/include/sys/kd.h, with the first two fields filled
Copyright 1994 Novell, Inc. Page 10
keyboard(7) keyboard(7)
in:
struct kbentry {
unchar kb_table; /* Table to use */
unchar kb_index; /* Entry in table */
ushort kb_value; /* Value to get/set */
};
Valid values for the kb_table field are:
#define K_NORMTAB 0x00 /* Base */
#define K_SHIFTTAB 0x01 /* Shifted */
#define K_ALTTAB 0x02 /* Alt */
#define K_ALTSHIFTTAB 0x03 /* Shifted alt */
#define K_SRQTAB 0x04 /* Select sysreq table */
The ioctl will get the indicated entry from the
indicated table and return it in the third field.
The K_SRQTAB value for the kb_table field allows access
to the scancode indexed table which allows assignment of
a given virtual terminal selector (K_VTF-K_VTL) or the
virtual terminal layer manager (K_MGRF-K_MGRL)
specialkey assignments.
The virtual terminal selector (K_VTF) is normally
associated with /dev/tty00, on which the user login
shell is commonly found. The following terminal
selectors also are used to select virtual terminals:
K_VTF+1 for the 1st virtual terminal (/dev/vt01)
K_VTF+2 for the 2nd virtual terminal (/dev/vt02)
. . .
K_VTF+12 for the 12th virtual terminal (/dev/vt12)
KDSKBENT
This call sets an entry in one of the translation
tables. It uses the same structure as the KDGKBENT
ioctl, but with the third field filled in with the value
that should be placed in the translation table. This
can be used to partially or completely remap the
keyboard. This ioctl does not work for all keycodes.
The kd driver provides support for virtual terminals. The
console minor device, /dev/vtmon, provides virtual terminal
key requests from the kd driver to the process that has
/dev/vtmon open. Two ioctls are provided for virtual terminal
support:
Copyright 1994 Novell, Inc. Page 11
keyboard(7) keyboard(7)
VT_GETSTATE
The VT_GETSTATE ioctl returns global virtual terminal
state information. It returns the active virtual
terminal in the v_active field, and the number of active
virtual terminals and a bit mask of the global state in
the v_state open field, where bit x is the state of vt x
(1 indicates that the virtual terminal is open).
VT_SENDSIG
The VT_SENDSIG ioctl specifies a signal (in v_signal) to
be sent to a bit mask of virtual terminals (in v_state).
The data structure used by the VT_GETSTATE and
VT_SENDSIG ioctls is:
struct vt_stat {
ushort v_active; /* active vt */
ushort v_signal; /* signal to send (VT_SENDSIG) */
ushort v_state; /* vt bit mask
(VT_SENDSIG and VT_GETSTATE) */
};
and is defined in /usr/include/sys/vt.h .
VT_OPENQRY
The VT_OPENQRY ioctl is used to get the next available
virtual terminal. It inquires if this vt is already
open. This value is set in the last argument of the
ioctl (2) call.
GIO_KEYMAP
This call gets the entire keyboard mapping table from
the kernel. The structure of the argument is given in
/usr/include/sys/kd.h.
PIO_KEYMAP
This call sets the entire keyboard mapping table. The
structure of the argument is given in
/usr/include/sys/kd.h.
GIO_STRMAP
This call gets the function key string mapping table
from the kernel. The structure of the argument is given
in /usr/include/sys/kd.h.
PIO_STRMAP
This call sets the function key string mapping table.
The structure of the argument is given in
Copyright 1994 Novell, Inc. Page 12
keyboard(7) keyboard(7)
/usr/include/sys/kd.h.
TIOCKBOF
Extended character codes are disabled. This is the
default mode.
TIOCKBON
Allows extended characters to be transmitted to the user
program when the extended keys are enabled. Then the
keyboard is said to be fully enabled. The extended
characters are transmitted as a null byte followed by a
second byte containing the character's extended code.
When a true null byte is sent, it is transmitted as two
consecutive null bytes.
When the keyboard is fully enabled, an 8-bit character code
can be obtained by holding down the ALT key and entering the
3-digit decimal value of the character from the numeric
keypad. The character is transmitted when the ALT key is
released.
Some keyboard characters have special meaning. Under default
operations, pressing the DELETE key generates an interrupt
signal that is sent to all processes designated with the
associated control terminal. When the keyboard is fully
enabled, holding down the ALT key and pressing the 8 key on
the home keyboard (not on the numeric keypad) returns a null
byte followed by 0x7F. This will produce the same effect as
the DELETE key (0x7F) unless you have executed the stty(1)
command with the -isig option.
KBENABLED
If the keyboard is fully enabled (TIOCKBON), a non-zero
value will be returned. If the keyboard is not fully
enabled (TIOCKBOF), a value of zero will be returned.
GETFKEY
Obtains the current definition of a function key. The
argument to the call is the address of one of the
following structures defined in /usr/include/sys/kd.h:
struct fkeyarg {
unsigned short keynum;
unchar keydef [MAXFK]; /* from ioctl.h via comcrt.h */
char flen;
};
Copyright 1994 Novell, Inc. Page 13
keyboard(7) keyboard(7)
The function key number must be passed in keynum (see
arg structure above). The string currently assigned to
the key will be returned in keydef and the length of the
string will be returned in flen when the ioctl is
performed.
SETFKEY
Assigns a given string to a function key. It uses the
same structure as the GETFKEY ioctl. The function key
number must be passed in keynum, the string must be
passed in keydef, and the length of the string (number
of characters) must be passed in flen.
FILES
/dev/console
/dev/vt00-n
/usr/include/sys/kd.h
REFERENCES
ascii(5), console(7), display(7), ioctl(2), mapkey(1M),
stty(1), termio(7), vtlmgr(1)
NOTICES
The autoreboot caused by pressing the sequence CTRL-ALT-DEL is
tunable. The tunable is in space.c for kd, the keyboard
driver.
Copyright 1994 Novell, Inc. Page 14