keyboard(7) (RM400 only) keyboard(7)
NAME
keyboard - system console keyboard
DESCRIPTION
The system console is composed of two separate pieces: the keyboard
and the display [see display(7)].
The keyboard is used to type data, and send certain control signals to
the computer. Reliant UNIX 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 Reliant 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 transla-
tions, delivering the keyboard up/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(1M)]. Switch the current screen by typing ALT-SYSREQ (also
labeled ALT-PRINTSCRN on some systems) followed by a key which identi-
fies the desired screen. Any active screen may be selected by follow-
ing 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, etc. ALT-SYSREQ "h" refers to the main con-
sole 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".
Page 1 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
The default screen switch enable sequence (ALT-SYSREQ) is configur-
able. The SYSREQ table entry can be modified by software (see discus-
sion of ioctl calls below).
Special Keys
The following table shows which keys on a typical console correspond
to Reliant 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 which generate signals and the signal actu-
ally generated is set with stty(1), and may be changed [see stty(1)].
Page 2 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
______________________________________________________________________
| 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. |
| |
| 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 arrow Terminates a command line and ini- |
| or ENTER) tiates an action from the shell. |
|_____________________________________________________________________|
Page 3 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
______________________________________________________________________
| Name Keytop Action |
|_____________________________________________________________________|
| 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 |
|_____________________________________________________________________|
Page 4 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
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 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 "none"
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 via the KDGKBENT and KDSKBENT ioctl
calls.
Page 5 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
_______________________________________________________________________________
| ALT |
|SCAN CTRL ALT ALT CTRL |
|CODE BASE SHIFT CTRL SHIFT ALT SHIFT CTRL SHIFT LOCK SRQTAB|
|_____________________________________________________________________________|
| 0 nop nop nop nop nop nop nop nop O nop |
| 1 esc esc esc esc esc esc esc esc O nop |
| 2 '1' '!' '1' '1' escn escn nop nop O nop |
| 3 '2' '@' nul 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' '^' rs 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 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 gs ht gs ht gs ht gs O nop |
| 16 'q' 'Q' dc1 dc1 escn escn nop nop C nop |
| 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 |
|_____________________________________________________________________________|
Page 6 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
________________________________________________________________________________
| ALT |
|SCAN CTRL ALT ALT CTRL |
|CODE BASE SHIFT CTRL SHIFT ALT SHIFT CTRL SHIFT LOCK SRQTAB |
|______________________________________________________________________________|
| 24 'o' 'O' si si escn escn nop nop C K_PREV |
| 25 'p' 'P' dle dle escn escn nop nop C nop |
| 26 '[' '{' esc esc escn escn nop nop O nop |
| 27 ']' '}' gs gs 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 nop nop C K_FRCNEXT|
| 33 'f' 'F' ack ack escn escn nop nop C nop |
| 34 'g' 'G' bel bel escn escn nop nop C K_VTF |
| 35 'h' 'H' bs bs escn escn nop nop C nop |
| 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 lshift lshift lshift lshift lshift lshift lshift lshift O nop |
| 43 '\\' '|' fs 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 K_NEXT |
| 49 'n' 'N' so so escn escn nop nop C nop |
| 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 '/' '?' '/' '?' escn escn nop nop O nop |
| 54 rshift rshift rshift rshift rshift rshift rshift rshift O nop |
| 55 '*' '*' '*' '*' escn escn escn escn O nop |
| 56 lalt lalt lalt lalt lalt lalt lalt lalt O nop |
| 57 ' ' ' ' nul nul fkey05 fkey05 nop nop O nop |
| 58 clock clock clock clock clock clock clock clock O K_VTF+1 |
| 59 fkey00 fkey12 fkey24 fkey36 fkey00 fkey12 fkey24 fkey36 O K_VTF+2 |
| 60 fkey01 fkey13 fkey25 fkey37 fkey01 fkey13 fkey25 fkey37 O K_VTF+3 |
| 61 fkey02 fkey14 fkey26 fkey38 fkey02 fkey14 fkey26 fkey38 O K_VTF+4 |
| 62 fkey03 fkey15 fkey27 fkey39 fkey03 fkey15 fkey27 fkey39 O K_VTF+5 |
| 63 fkey04 fkey16 fkey28 fkey40 fkey04 fkey16 fkey28 fkey40 O K_VTF+6 |
|______________________________________________________________________________|
Page 7 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
________________________________________________________________________________
| ALT |
|SCAN CTRL ALT ALT CTRL |
|CODE BASE SHIFT CTRL SHIFT ALT SHIFT CTRL SHIFT LOCK SRQTAB |
|______________________________________________________________________________|
| 64 fkey05 fkey17 fkey29 fkey41 fkey05 fkey17 fkey29 fkey41 O K_VTF+7 |
| 65 fkey06 fkey18 fkey30 fkey42 fkey06 fkey18 fkey30 fkey42 O K_VTF+8 |
| 66 fkey07 fkey19 fkey31 fkey43 fkey07 fkey19 fkey31 fkey43 O K_VTF+9 |
| 67 fkey08 fkey20 fkey32 fkey44 fkey08 fkey20 fkey32 fkey44 O K_VTF+10|
| 68 fkey09 fkey21 fkey33 fkey45 fkey09 fkey21 fkey33 fkey45 O |
| 69 nlock nlock nlock nlock nlock nlock nlock nlock O |
| 70 ack ack '|' '|' ack ack '|' '|' O |
| 71 fkey48 '7' fkey48 '7' fkey48 escn nop nop N |
| 72 fkey49 '8' fkey49 '8' fkey49 escn nop nop N |
| 73 fkey50 '9' fkey50 '9' fkey50 escn nop udr N |
| 74 fkey51 '-' fkey51 '-' fkey51 escn nop nop N |
| 75 fkey52 '4' fkey52 '4' fkey52 escn nop nop N |
| 76 fkey53 '5' fkey53 '5' fkey53 escn nop nop N |
| 77 fkey54 '6' fkey54 '6' fkey54 escn nop nop N |
| 78 fkey55 '+' fkey55 '+' fkey55 escn nop nop N |
| 79 fkey56 '1' fkey56 '1' fkey56 escn nop nop N |
| 80 fkey57 '2' fkey57 '2' fkey57 escn nop nop N |
| 81 fkey58 '3' fkey58 '3' fkey58 escn nop debug N |
| 82 fkey59 '0' fkey59 '0' fkey59 escn nop nop N |
| 83 del '.' del '.' del escn reboot nop N |
| 84 fkey59 fkey25 fkey59 nop sysreq sysreq sysreq sysreq O |
| 85 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O K_NOP |
| 86 nop nop nop nop nop nop nop nop O K_NOP |
| 87 fkey10 fkey22 fkey34 fkey46 fkey10 fkey22 fkey34 fkey46 O K_VTF+11|
| 88 fkey11 fkey23 fkey35 fkey47 fkey11 fkey23 fkey35 fkey47 O 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 |
| 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 |
|______________________________________________________________________________|
Page 8 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
_______________________________________________________________________________
| ALT |
|SCAN CTRL ALT ALT CTRL |
|CODE BASE SHIFT CTRL SHIFT ALT SHIFT CTRL SHIFT LOCK SRQTAB|
|_____________________________________________________________________________|
| 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 fkey52 fkey52 fkey52 fkey52 fkey52 fkey52 fkey52 fkey52 O K_NOP |
| 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 fkey50 fkey50 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 agr agr agr agr agr agr agr agr O K_NOP |
| 115 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O K_NOP |
| 116 cr cr cr cr cr cr cr cr O K_NOP |
| 117 '/' '/' nop nop escn escn nop nop O K_NOP |
| 118 nop nop nop nop nop nop nop nop O K_NOP |
| 119 brk brk brk brk brk brk brk brk O K_NOP |
| 120 fkey49 fkey49 nop nop nop nop nop nop O K_NOP |
| 121 del del del del del del del del O K_NOP |
| 122 fkey56 fkey56 nop nop nop nop nop nop O K_NOP |
| 123 fkey59 fkey59 nop nop nop nop nop nop O K_NOP |
| 124 nop nop nop nop nop nop nop nop O K_NOP |
| 125 fkey54 fkey54 nop nop nop nop nop nop O K_NOP |
| 126 fkey58 fkey58 nop nop nop nop nop nop O K_NOP |
| 127 fkey48 fkey48 nop nop nop nop nop nop O K_NOP |
|_____________________________________________________________________________|
Page 9 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
The following table lists the value of each of the special keywords
used in the preceding tables. The keywords are only used in the
preceding tables for readability. In the actual keyboard map, a spe-
cial keyword is represented by its value with the corresponding "spe-
cial state" bit being set.
______________________________________________________________________
| 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 |
|_____________________________________________________________________|
Page 10 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
______________________________________________________________________
| Name Value Meaning |
|_____________________________________________________________________|
| VTF 134 Virtual Terminal First (VT00) |
| . . |
| . . |
| . . |
| VTL 148 Virtual Terminal Last (VT14) |
| MGRF 149 Virtual Terminal Manager First. Allows assigning spe- |
| cial significance to key sequence for actions by vir- |
| tual terminal layer manager. Used in SRQTAB table. |
| . . |
| . . |
| . . |
| MGRL 179 Virtual Terminal Manager Last. Used in SRQTAB table. |
|_____________________________________________________________________|
The following table lists names and decimal values for ASCII charac-
ters in the preceding table. Names are used in place of numeric con-
stants 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| Name Value| Name Value|
|_____________|______________|______________|______________|
| nul 0 | ht 9 | dc2 18 | esc 27 |
| soh 1 | nl 10 | dc3 19 | fs 28 |
| stx 2 | vt 11 | dc4 20 | gs 29 |
| etx 3 | np 12 | nak 21 | rs 30 |
| eot 4 | cr 13 | syn 22 | ns 31 |
| enq 5 | so 14 | etb 23 | del 127 |
| ack 6 | si 15 | can 24 | |
| bel 7 | dle 16 | em 25 | |
| bs 8 | dc1 17 | sub 26 | |
|_____________|______________|______________|______________|
Page 11 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
String Key Mapping
The string mapping table is an array of 512 bytes (typedef strmapt)
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, etc.
There is no limit to the length of any particular string as long as
the whole table does not exceed 512 bytes, including nulls. To make a
string a null, add extra null characters. The following table contains
default function key values.
________________________________________________________
| Default Function Key Values |
|_______________________________________________________|
| Function Shift Ctrl 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 KRAW 0x00 /* Send row scan codes */
#define KXLATE 0x01 /* Translate to ASCII */
KDSKBMODE
This call sets the keyboard mode. The argument to the call is
either KRAW or KXLATE. By using raw mode, the program can see
the raw up/down scan codes from the keyboard. In translate mode,
the translation tables are used to generate the appropriate char-
acter code.
Page 12 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
KDGKBTYTE
This call gets the keyboard type. It returns one of the following
values, as defined in /usr/include/sys/kd.h:
#define KB84 0x00 /* 84 key keyboard */
#define KB101 0x01 /* 101 key keyboard */
#define KBOTHER 0x03 /* 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 in:
struct kbentry
{
unchar kbtable; /* Table to use */
unchar kbindex; /* Entry in table */
ushort kbvalue; /* Value to get/set */
};
Valid values for the kbtable field are:
#define KNORMTAB 0x00 /* BASE*/
#define KSHIFTTAB 0x01 /* SHIFT*/
#define KALTTAB 0x02 /* ALT */
#define KALTSHIFTTAB 0x03 /* SHIFT+ALT */
#define KSRQTAB 0x04 /* Select SYSREQ table */
The ioctl will get the indicated entry from the indicated table
and return it in the third field.
The KSRQTAB value for the kbtable field allows access to the
scancode indexed table which allows assignment of a given virtual
terminal selector (KVTF-KVTL) or the virtual terminal layer
manager (KMGRF-KMGRL) "specialkey" assignments.
The virtual terminal selector (KVTF) is normally associated with
/dev/vt00, on which the user login shell is commonly found. The
following terminal selectors also are used to select virtual ter-
minals:
KVTF+1 for the 1st virtual terminal (/dev/vt01)
KVTF+2 for the 2nd virtual terminal (/dev/vt02)
. . .
KVTF+12 for the 12th virtual terminal (/dev/vt12)
Page 13 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
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.
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:
VTGETSTATE
The VTGETSTATE ioctl returns global virtual terminal state
information. It returns the active virtual terminal in the
vactive field, and the number of active virtual terminals and a
bit mask of the global state in the vtstate field, where bit x
is the state of vt x (1 indicates that the virtual terminal is
open).
VTSENDSIG
The VTSENDSIG ioctl specifies a signal (in vtsignal) to be sent
to a bit mask of virtual terminals (in vtstate).
The data structure used by the VTGETSTATE and VTSENDSIG ioctls
is:
struct vtstat
{
ushort vactive; /* active vt */
ushort vsignal; /* signal to send (VTSENDSIG) */
ushort vstate; /* vt bit mask (VTSENDSIG + VTGETSTATE) */
};
and is defined in /usr/include/sys/vt.h.
VTOPENQRY
The VTOPENQRY ioctl is used to get the next available virtual
terminal. This value is set in the last argument of the ioctl(2)
call.
GIOKEYMAP
This call gets the entire keyboard mapping table from the kernel.
The structure of the argument is given in /usr/include/sys/kd.h.
PIOKEYMAP
This call sets the entire keyboard mapping table. The structure
of the argument is given in /usr/include/sys/kd.h.
GIOSTRMAP
This call gets the string key mapping table from the kernel. The
structure of the argument is given in /usr/include/sys/kd.h.
Page 14 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
PIOSTRMAP
This call sets the string key mapping table. The structure of the
argument is given in /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.
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 char-
acter 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
which 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 int keynum;
char keydef [MAXFK]; /* Comes from ioctl.h via comcrt.h */
char flen;
};
The function key number must be passed in keynum (see arg struc-
ture 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.
Page 15 Reliant UNIX 5.44 Printed 11/98
keyboard(7) (RM400 only) keyboard(7)
SETFKEY
Assigns a given string to a function key. It uses the same struc-
ture 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
SEE ALSO
stty(1), vtlmgr(1M), ioctl(2), ascii(5), console(7), display(7),
termio(7).
Page 16 Reliant UNIX 5.44 Printed 11/98