1999-01-01 08:48:31 +00:00
|
|
|
.\"
|
|
|
|
.\" Copyright (c) 1992, 1995 Hellmuth Michaelis, Brian Dunford-Shore,
|
|
|
|
.\" Joerg Wunsch and Holger Veit.
|
|
|
|
.\"
|
|
|
|
.\" All rights reserved.
|
|
|
|
.\"
|
|
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
|
|
.\" modification, are permitted provided that the following conditions
|
|
|
|
.\" are met:
|
|
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
|
|
.\" must display the following acknowledgement:
|
|
|
|
.\" This product includes software developed by Hellmuth Michaelis,
|
|
|
|
.\" Brian Dunford-Shore, Joerg Wunsch and Holger Veit.
|
|
|
|
.\" 4. The name authors may not be used to endorse or promote products
|
|
|
|
.\" derived from this software without specific prior written permission.
|
|
|
|
.\"
|
|
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
|
|
|
|
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
|
|
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
|
|
.\" IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
|
|
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
|
|
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
|
|
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
|
|
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
|
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
.\"
|
|
|
|
.\" @(#)pcvt.4, 3.20, Last Edit-Date: [Sun Apr 2 18:23:39 1995]
|
1999-05-20 09:56:18 +00:00
|
|
|
.\" $Id: pcvt.4,v 1.15 1999/02/07 05:40:14 yokota Exp $
|
1999-01-01 08:48:31 +00:00
|
|
|
.\"
|
|
|
|
.\" Man page pcvt(4) created after pcvt_ioctl.h on 13-Jan-93
|
|
|
|
.\" by Joerg Wunsch
|
|
|
|
.\"
|
|
|
|
.\" updated for rel 2.10 (-hm)
|
|
|
|
.\" updated for rel 2.20 (-hm)
|
|
|
|
.\" updated for rel 3.00 (-jw)
|
|
|
|
.\" updated for final rel 3.00 (-hm)
|
|
|
|
.\" removed references to 386BSD (-hm)
|
|
|
|
.\"
|
|
|
|
.Dd February 27, 1994
|
|
|
|
.Dt PCVT 4 i386
|
|
|
|
.Sh NAME
|
|
|
|
.Nm pcvt ,
|
|
|
|
.Nm vt
|
|
|
|
.Nd PC console virtual screen system
|
|
|
|
.Sh SYNOPSIS
|
|
|
|
options
|
|
|
|
.Do
|
|
|
|
.Em PCVT_FREEBSD = version
|
|
|
|
|
|
|
|
|
.Em PCVT_NETBSD = version
|
|
|
|
.Dc
|
|
|
|
.br
|
|
|
|
.Op options Dq Em PCVT_NSCREENS = number
|
|
|
|
.br
|
|
|
|
.Op options Dq Em PCVT_XXXX
|
|
|
|
.Po
|
|
|
|
see
|
|
|
|
.Sx Configuration
|
|
|
|
below
|
|
|
|
.Pc
|
|
|
|
.Pp
|
1999-05-20 09:56:18 +00:00
|
|
|
.Cd "device vt0 at isa?"
|
1999-01-01 08:48:31 +00:00
|
|
|
.Sh DESCRIPTION
|
|
|
|
.Ss Overview
|
|
|
|
The
|
|
|
|
.Nm pcvt
|
|
|
|
driver provides a virtual screen system with several additional
|
|
|
|
features not available in historic console drivers.
|
|
|
|
Besides the ability of handling
|
|
|
|
multiple virtual screens,
|
|
|
|
the probably most important is an emulation of a wide range
|
|
|
|
of DEC VT-220
|
|
|
|
.if t \(tm
|
|
|
|
.if n (TM)
|
|
|
|
functionality. See
|
|
|
|
.Sx Features
|
|
|
|
for a detailed description.
|
1999-02-07 05:40:14 +00:00
|
|
|
.Pp
|
|
|
|
The
|
|
|
|
.Nm pcvt
|
|
|
|
driver requires the keyboard driver
|
|
|
|
.Nm atkbd
|
|
|
|
to be also configured in the kernel.
|
1999-01-01 08:48:31 +00:00
|
|
|
|
|
|
|
.Ss Features
|
|
|
|
.Bl -bullet
|
|
|
|
.It
|
|
|
|
Almost full DEC VT220
|
|
|
|
.if t \(tm
|
|
|
|
.if n (TM)
|
|
|
|
functionality
|
|
|
|
.Po
|
|
|
|
moving towards VT320
|
|
|
|
.if t \(tm
|
|
|
|
.if n (TM)
|
|
|
|
.Pc
|
|
|
|
.It
|
|
|
|
Completely independent virtual terminals for MDA/HGC/CGA/EGA and VGA
|
|
|
|
.It
|
|
|
|
25, 28, 35, 40, 43 or 50x80 screen resolution for each virtual screen
|
|
|
|
.It
|
|
|
|
Fully remappable keyboard to support national keyboards
|
|
|
|
.It
|
|
|
|
All VT220 character sets plus ISO Latin-1 and DEC technical supported
|
|
|
|
.It
|
|
|
|
VT220 downloadable character set supported when run on EGA/VGA
|
|
|
|
.It
|
|
|
|
VT220 user defined keys for each virtual terminal
|
|
|
|
.It
|
|
|
|
Optional function key label support
|
|
|
|
.if t \('a
|
|
|
|
.if n 'a
|
|
|
|
la Hewlett-Packard
|
|
|
|
.It
|
|
|
|
Display function codes functionality
|
|
|
|
.It
|
|
|
|
Support for MDA, CGA, EGA and VGA display adaptors
|
|
|
|
.It
|
|
|
|
Support for 132 column operation on VGA chipsets
|
|
|
|
.It
|
|
|
|
X Window Support for XFree86 >= 1.2 using the pccons model, or
|
|
|
|
for XFree86 >= 2.0 using the syscons model
|
|
|
|
.Po
|
|
|
|
requires
|
|
|
|
.Em PCVT_USL_VT_COMPAT
|
|
|
|
to be configured
|
|
|
|
.Pc
|
|
|
|
.El
|
|
|
|
|
|
|
|
What it cannot:
|
|
|
|
.Bl -bullet
|
|
|
|
.It
|
|
|
|
No double wide/high characters
|
|
|
|
.It
|
|
|
|
No softscroll
|
|
|
|
.It
|
|
|
|
No inverse background
|
|
|
|
.It
|
|
|
|
No VT220 printer output support
|
|
|
|
.It
|
|
|
|
No VT52 support at all
|
|
|
|
.It
|
|
|
|
No 8-bit controls
|
|
|
|
.It
|
|
|
|
Only limited AT-keyboard
|
|
|
|
.Pq 84 keys
|
|
|
|
support
|
|
|
|
.Pq yet
|
|
|
|
.It
|
|
|
|
Help you to make money...
|
|
|
|
.El
|
|
|
|
|
|
|
|
.Ss Configuration
|
|
|
|
The
|
|
|
|
.Nm pcvt
|
|
|
|
console driver is currently available for the Intel-based BSD operating
|
|
|
|
systems
|
|
|
|
.Tn NetBSD/i386
|
|
|
|
(release 0.9 or higher),
|
|
|
|
and
|
|
|
|
.Tn FreeBSD
|
|
|
|
(release 1.0-GAMMA or higher) .
|
|
|
|
In order to get the appropriate system support, one of the options
|
|
|
|
.Em PCVT_NETBSD ,
|
|
|
|
or
|
|
|
|
.Em PCVT_FREEBSD
|
|
|
|
must be defined in the system's config file
|
|
|
|
.Pq see Xr config 8 .
|
|
|
|
In addition, for the
|
|
|
|
.Tn FreeBSD
|
|
|
|
and
|
|
|
|
.Tn NetBSD
|
|
|
|
operating systems, it is necessary to set this option to the operating
|
|
|
|
system's version number.
|
|
|
|
For
|
|
|
|
.Tn FreeBSD
|
|
|
|
this version number must be expressed as a 3-digit number.
|
|
|
|
E.\& g., if you are running the 1.0 release
|
|
|
|
.Pq which is actually version 1.0.2 ,
|
|
|
|
you should define
|
|
|
|
|
|
|
|
.Em PCVT_FREEBSD = 102
|
|
|
|
|
|
|
|
For
|
|
|
|
.Em NetBSD
|
|
|
|
this version number must be expressed as 9 if you are running NetBSD 0.9
|
|
|
|
and anything greater than 9 for NetBSD-current (pre 1.0). It is recommended
|
|
|
|
to use (as with
|
|
|
|
.Tn FreeBSD )
|
|
|
|
100 for
|
|
|
|
.Nx 1.0
|
|
|
|
and 999 for
|
|
|
|
.Tn NetBSD-current.
|
|
|
|
E.g., if you are running the
|
|
|
|
.Nx 1.0
|
|
|
|
release, you should define
|
|
|
|
|
|
|
|
.Em PCVT_NETBSD = 100
|
|
|
|
|
|
|
|
The
|
|
|
|
.Nm pcvt
|
|
|
|
driver has been designed to be highly configurable in order to satisfy
|
|
|
|
everyone's needs. The preferred way for those configurations is to
|
|
|
|
provide appropriate
|
|
|
|
.Em options
|
|
|
|
lines within the config file, possibly overriding the built-in default
|
|
|
|
values. Therefore it is possible to compile several distinct kernels
|
|
|
|
with different driver behaviour on a single machine.
|
|
|
|
|
|
|
|
The following list gives a short overview of the available configuration
|
|
|
|
options. Refer to the file
|
|
|
|
.Pa i386/isa/pcvt/pcvt_hdr.h
|
|
|
|
in the kernel source tree for detailed documentation.
|
|
|
|
|
|
|
|
Note: the following conventions apply to all the Boolean options.
|
|
|
|
If an option is given with no value, a value of 1
|
|
|
|
.Pq activated
|
|
|
|
is substituted. If an option value is given as 0, this options is
|
|
|
|
deactivated. Any other value is substituted by 1, too. If an option
|
|
|
|
is omitted, a built-in default is assumed.
|
|
|
|
|
|
|
|
.Bl -tag -width indent -compact
|
|
|
|
|
|
|
|
.It Em PCVT_NSCREENS
|
|
|
|
Defines the number of virtual screens.
|
|
|
|
.br
|
|
|
|
Default: 8
|
|
|
|
|
|
|
|
.It Em PCVT_VT220KEYB
|
|
|
|
If activated, a keyboard layout resembling a DEC VT200 (TM) is generated.
|
|
|
|
If deactivated, a mixture between VT220 and HP is used. See the files
|
|
|
|
.Pa Keyboard.VT
|
|
|
|
and
|
|
|
|
.Pa Keyboard.HP
|
|
|
|
in the
|
|
|
|
.Nm pcvt
|
|
|
|
documentation directory for a full description.
|
|
|
|
.br
|
|
|
|
Default: off
|
|
|
|
|
|
|
|
.It Em PCVT_SCREENSAVER
|
|
|
|
Enables the builtin screensaver feature.
|
|
|
|
.br
|
|
|
|
Default: on
|
|
|
|
|
|
|
|
.It Em PCVT_PRETTYSCRNS
|
|
|
|
If enabled, a blinking-star screensaver is used. If disabled, the screen
|
|
|
|
is simply blanked
|
|
|
|
.Pq which might be useful for energy-saving monitors .
|
|
|
|
.br
|
|
|
|
Default: on
|
|
|
|
|
|
|
|
.It Em PCVT_CTRL_ALT_DEL
|
|
|
|
If enabled, the key combination
|
|
|
|
.Aq Em Ctrl
|
|
|
|
.Aq Em Alt
|
|
|
|
.Aq Em Del
|
|
|
|
invokes a CPU reset.
|
|
|
|
.br
|
|
|
|
Default: off
|
|
|
|
|
|
|
|
.It Em PCVT_USEKBDSEC
|
|
|
|
Do NOT override a security lock for the keyboard.
|
|
|
|
.br
|
|
|
|
Default: on
|
|
|
|
|
|
|
|
.It Em PCVT_24LINESDEF
|
|
|
|
If enabled, the 25-line modi
|
|
|
|
.Po
|
|
|
|
VT emulation with 25 lines, and HP emulation with 28 lines
|
|
|
|
.Pc
|
|
|
|
default to 24 lines only to provide a better compatibility to the
|
|
|
|
original DEV VT220 (TM). Thus it should be possible to use the
|
|
|
|
terminal information for those terminals without further changes.
|
|
|
|
Note that this is a startup option; it is possible to toggle between
|
|
|
|
the 24- and 25-lines' display by the
|
|
|
|
.Xr scon 1
|
|
|
|
utility.
|
|
|
|
.br
|
|
|
|
Default: off
|
|
|
|
|
|
|
|
.It Em PCVT_EMU_MOUSE
|
|
|
|
Emulate a three-button mouse via the keypad. Useful for notebooks when
|
|
|
|
running XFree86. See
|
|
|
|
.Sx Mouse emulation
|
|
|
|
below.
|
|
|
|
.br
|
|
|
|
Default: off
|
|
|
|
|
|
|
|
.It Em PCVT_META_ESC
|
|
|
|
If enabled, a sequence composed of
|
|
|
|
.Aq Em esc ,
|
|
|
|
followed by the normal key code is emitted if a key is pressed with the
|
|
|
|
.Aq Em Alt
|
|
|
|
key modifier. If disabled, then normal key code with the value
|
|
|
|
.Em 0x80
|
|
|
|
added is sent.
|
|
|
|
.br
|
|
|
|
Default: off
|
|
|
|
|
|
|
|
.El
|
|
|
|
|
|
|
|
Note that there are further options available which are mainly used for
|
|
|
|
debugging purposes or as a workaround for hardware problems. They are
|
|
|
|
found in
|
|
|
|
.Pa i386/isa/pcvt/pcvt_hdr.h
|
|
|
|
along with their documentation.
|
|
|
|
|
|
|
|
.Ss Internal Functions
|
|
|
|
The functionality described below may be accessed via
|
|
|
|
.Xr ioctl 2
|
|
|
|
system calls with a file descriptor opened on a device node
|
|
|
|
related to the
|
|
|
|
.Nm pcvt
|
|
|
|
driver.
|
|
|
|
To make use of them, a program should contain the following line:
|
|
|
|
|
|
|
|
|
|
|
|
.Dl #include <machine/pcvt_ioctl.h>
|
|
|
|
|
|
|
|
Any parameter definitions cited below can be found in that file.
|
|
|
|
|
|
|
|
|
|
|
|
.Em Keyboard related functions
|
|
|
|
|
|
|
|
Three functions are related to basic keyboard hardware:
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It KBDRESET
|
|
|
|
reset keyboard, set defaults;
|
|
|
|
.It KBDGTPMAT
|
|
|
|
get current typematic value, parameter is a pointer to int where
|
|
|
|
the values is stored to;
|
|
|
|
.It KBDSTPMAT
|
|
|
|
set current typematic value, similar to above command.
|
|
|
|
.El
|
|
|
|
|
|
|
|
Symbolic values are available for the appropriate constants.
|
|
|
|
To specify the initial typematic delay time, they are
|
|
|
|
KBD_TPD250 for 250 ms through
|
|
|
|
KBD_TPD1000 for 1000 ms, in steps of 250 ms. The typematic repeat
|
|
|
|
rates are
|
|
|
|
KBD_TPM300, specifying 30.0 characters per second through
|
|
|
|
KBD_TPM20 for 2.0 characters per second. The intermediate values
|
|
|
|
are: 30.0, 26.7, 24.0, 21.8, 20.0, 18.5, 17.1, 16.0, 15.0, 13.3,
|
|
|
|
12.0, 10.9, 10.0, 9.2, 8.6, 8.0, 7.5, 6.7, 6.0, 5.5, 5.0, 4.6, 4.3,
|
|
|
|
4.0, 3.7, 3.3, 3.0, 2.7, 2.5, 2.3, 2.1, 2.0 characters per second.
|
|
|
|
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It KBDGREPSW
|
|
|
|
get key repetition switch, and
|
|
|
|
.It KBDSREPSW
|
|
|
|
set key repetition switch
|
|
|
|
.El
|
|
|
|
|
|
|
|
again take a pointer to int as argument. They manipulate the
|
|
|
|
drivers internal keyboard repetition flag, possible values are:
|
|
|
|
KBD_REPEATOFF or KBD_REPEATON.
|
|
|
|
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It KBDGLEDS
|
|
|
|
get LED state, and
|
|
|
|
.It KBDSLEDS
|
|
|
|
set LED state manipulate the keyboard indicators, but do not influence
|
|
|
|
the drivers idea of lock key state.
|
|
|
|
.El
|
|
|
|
|
|
|
|
The int where the argument points to
|
|
|
|
may have the values
|
|
|
|
KBD_SCROLLLOCK, KBD_NUMLOCK, KBD_CAPSLOCK, which may be used in any
|
|
|
|
conjunction.
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It KBDGLOCK
|
|
|
|
gets state of SCROLL,NUM,CAPS, and
|
|
|
|
.It KBDSLOCK
|
|
|
|
sets state of SCROLL,NUM,CAPS + LEDs
|
|
|
|
.El
|
|
|
|
|
|
|
|
should be used in a same manner to get/set the drivers internal
|
|
|
|
LED flags.
|
|
|
|
|
|
|
|
|
|
|
|
.Em Keyboard remapping
|
|
|
|
|
|
|
|
One important feature of the
|
|
|
|
.Nm pcvt
|
|
|
|
driver is its ability to overload the built in key definition.
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It KBDGCKEY
|
|
|
|
get current key values,
|
|
|
|
.It KBDSCKEY
|
|
|
|
set new key assignment values, and
|
|
|
|
.It KBDGOKEY
|
|
|
|
get original key assignment values
|
|
|
|
.El
|
|
|
|
|
|
|
|
arrange those functions. The take a pointer to a
|
|
|
|
.Em struct kbd_ovlkey
|
|
|
|
as argument as described below. In addition,
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It KBDRMKEY
|
|
|
|
removes a key assignment, taking a pointer to an int as argument which
|
|
|
|
contains the affected key number;
|
|
|
|
.It KBDDEFAULT
|
|
|
|
removes all key assignments.
|
|
|
|
.El
|
|
|
|
.Bd -literal
|
|
|
|
struct kbd_ovlkey /* complete definition of a key */
|
|
|
|
{
|
|
|
|
u_short keynum; /* the key itself */
|
|
|
|
u_short type; /* type of key, see below */
|
|
|
|
u_char subu; /* subtype, ignored on write */
|
|
|
|
char unshift[KBDMAXOVLKEYSIZE+1]; /* emitted string, unshifted */
|
|
|
|
u_char subs; /* subtype, ignored on write */
|
|
|
|
char shift[KBDMAXOVLKEYSIZE+1]; /* emitted string, shifted */
|
|
|
|
u_char subc; /* subtype, ignored on write */
|
|
|
|
char ctrl[KBDMAXOVLKEYSIZE+1]; /* emitted string, control */
|
|
|
|
u_char suba; /* subtype, ignored on write */
|
|
|
|
char altgr[KBDMAXOVLKEYSIZE+1]; /* emitted string, altgr */
|
|
|
|
};
|
|
|
|
.Ed
|
|
|
|
|
|
|
|
The appropriate values for the
|
|
|
|
.Em type
|
|
|
|
field are:
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It KBD_NONE
|
|
|
|
no function, key is disabled,
|
|
|
|
.It KBD_SHIFT
|
|
|
|
keyboard shift,
|
|
|
|
.It KBD_META
|
|
|
|
alternate shift, sets bit8 to ASCII code,
|
|
|
|
.It KBD_NUM
|
|
|
|
numeric shift, keypad numeric / application mode,
|
|
|
|
.It KBD_CTL
|
|
|
|
control code generation,
|
|
|
|
.It KBD_CAPS
|
|
|
|
caps shift - swaps case of letter,
|
|
|
|
.It KBD_ASCII
|
|
|
|
ASCII code generating key,
|
|
|
|
.It KBD_SCROLL
|
|
|
|
stop output,
|
|
|
|
.It KBD_FUNC
|
|
|
|
function key,
|
|
|
|
.It KBD_KP
|
|
|
|
keypad keys,
|
|
|
|
.It KBD_BREAK
|
|
|
|
ignored,
|
|
|
|
.It KBD_ALTGR
|
|
|
|
AltGr translation feature,
|
|
|
|
.It KBD_SHFTLOCK
|
|
|
|
shift lock,
|
|
|
|
.It KBD_CURSOR
|
|
|
|
cursor keys, and
|
|
|
|
.It KBD_RETURN
|
|
|
|
.Dq Return
|
|
|
|
or
|
|
|
|
.Dq Enter
|
|
|
|
keys.
|
|
|
|
.El
|
|
|
|
|
|
|
|
The
|
|
|
|
.Em subtype
|
|
|
|
field contains one of the values
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It KBD_SUBT_STR
|
|
|
|
key is bound to a string, or
|
|
|
|
.It KBD_SUBT_FNC
|
|
|
|
key is bound to a function.
|
|
|
|
.El
|
|
|
|
|
|
|
|
.Em Mouse emulation
|
|
|
|
|
|
|
|
The mouse emulator
|
|
|
|
.Pq if configured in
|
|
|
|
fakes a three-button mouse using the Mouse Systems protocol. The first
|
|
|
|
.Nm pcvt
|
|
|
|
device node not used by a virtual screen is the mouse device. I.\& e.,
|
|
|
|
for the default value of 8 virtual screens,
|
|
|
|
.Pa /dev/ttyv0
|
|
|
|
through
|
|
|
|
.Pa /dev/ttyv7
|
|
|
|
would refer to the virtual screens, and
|
|
|
|
.Pa /dev/ttyv8
|
|
|
|
were the mouse emulator device. The mouse emulation is turned on by
|
|
|
|
pressing the
|
|
|
|
.Aq Em NumLock
|
|
|
|
key. The pointer is moved by the numerical keypad keys, into the
|
|
|
|
obvious directions. The pointer is initially moved in single steps,
|
|
|
|
and is accelerated after an adjustable time
|
|
|
|
.Pq default: 500 ms
|
|
|
|
by about 6 times. The mouse buttons are emulated by three normal
|
|
|
|
keys, by default the function keys
|
|
|
|
.Aq Em \&F1 ,
|
|
|
|
.Aq Em \&F2 ,
|
|
|
|
and
|
|
|
|
.Aq Em \&F3 .
|
|
|
|
There are two selectable flavors available: normal and
|
|
|
|
.Dq sticky
|
|
|
|
buttons. Normal buttons behave as expected.
|
|
|
|
.Dq Sticky
|
|
|
|
buttons are notified as button-press on the first keypress. They
|
|
|
|
.Dq stick
|
|
|
|
until the key is pressed again
|
|
|
|
.Pq or another button-emulating key instead .
|
|
|
|
Button presses and releases are notified to the user by a simple
|
|
|
|
.Dq pling ,
|
|
|
|
or
|
|
|
|
.Dq plong ,
|
|
|
|
respectively, generated from the PC's built-in speaker.
|
|
|
|
|
|
|
|
The following commands control the emulation.
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It KBDMOUSEGET
|
|
|
|
get the current definitions, and
|
|
|
|
.It KBDMOUSESET
|
|
|
|
set new definitions.
|
|
|
|
.El
|
|
|
|
|
|
|
|
Both accept a
|
|
|
|
.Li struct mousedefs *
|
|
|
|
as the third argument to the ioctl call:
|
|
|
|
.Bd -literal
|
|
|
|
struct mousedefs {
|
|
|
|
int leftbutton; /* (PC) scan code for "left button" key */
|
|
|
|
int middlebutton; /* (PC) scan code for "mid button" key */
|
|
|
|
int rightbutton; /* (PC) scan code for "right button" key */
|
|
|
|
int stickybuttons; /* if true, the buttons are "sticky" */
|
|
|
|
int acceltime; /* timeout in microseconds to start pointer */
|
|
|
|
/* movement acceleration */
|
|
|
|
/* defaults to: scan(F1), scan(F2), scan(F3), false, 500000 */
|
|
|
|
};
|
|
|
|
.Ed
|
|
|
|
|
|
|
|
|
|
|
|
.Em Downloadable character set interface
|
|
|
|
|
|
|
|
EGA and VGA video adaptors provide the capability of downloadable
|
|
|
|
software fonts. Since the
|
|
|
|
.Sq native character set
|
|
|
|
of any IBM-compatible PC video board does not allow the full interpretation
|
|
|
|
of DEC multinational character set or ISO Latin-1
|
|
|
|
.Pq ISO 8859-1 ,
|
|
|
|
this might be very useful for a U**X environment.
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It VGASETFONTATTR
|
|
|
|
set font attr, and
|
|
|
|
.It VGAGETFONTATTR
|
|
|
|
get font attr
|
|
|
|
.El
|
|
|
|
|
|
|
|
are used to manipulate the drivers information about a downloaded
|
|
|
|
font. The take a pointer to a
|
|
|
|
.Em struct vgafontattr
|
|
|
|
as argument:
|
|
|
|
.Bd -literal
|
|
|
|
struct vgafontattr {
|
|
|
|
int character_set; /* VGA character set */
|
|
|
|
int font_loaded; /* Mark font loaded or unloaded */
|
|
|
|
int screen_size; /* Character rows per screen */
|
|
|
|
int character_scanlines; /* Scanlines per character - 1 */
|
|
|
|
int screen_scanlines; /* Scanlines per screen - 1 byte */
|
|
|
|
};
|
|
|
|
.Ed
|
|
|
|
|
|
|
|
Each character of each font is to be downloaded with
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It VGALOADCHAR
|
|
|
|
load vga char,
|
|
|
|
.El
|
|
|
|
|
|
|
|
taking a pointer to
|
|
|
|
.Em struct vgaloadchar
|
|
|
|
as its argument:
|
|
|
|
.Bd -literal
|
|
|
|
struct vgaloadchar {
|
|
|
|
int character_set; /* VGA character set to load into */
|
|
|
|
int character; /* Character to load */
|
|
|
|
int character_scanlines; /* Scanlines per character */
|
|
|
|
u_char char_table[32]; /* VGA character shape table */
|
|
|
|
};
|
|
|
|
.Ed
|
|
|
|
|
|
|
|
The field
|
|
|
|
.Em character_set
|
|
|
|
takes the values
|
|
|
|
CH_SET0, CH_SET1, CH_SET2, CH_SET3 on EGA's or VGA's. Since VGA's
|
|
|
|
might have up to eight simultaneously loaded fonts, they can take
|
|
|
|
CH_SET4, CH_SET5, CH_SET6, or CH_SET7, too.
|
|
|
|
|
|
|
|
Note that there's a dependence between the font size
|
|
|
|
and a possible screen height
|
|
|
|
.Pq in character rows ,
|
|
|
|
depending on the video adaptor used:
|
|
|
|
.Bd -literal
|
|
|
|
Screen size (rows) on: EGA VGA
|
|
|
|
Font size
|
|
|
|
|
|
|
|
8 x 8 43 50
|
|
|
|
8 x 10 35 40
|
|
|
|
8 x 14 25 28
|
|
|
|
8 x 16 not 25
|
|
|
|
applicable
|
|
|
|
.Ed
|
|
|
|
|
|
|
|
|
|
|
|
.Em General screen manipulation commands
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It VGACURSOR
|
|
|
|
sets cursor shape,
|
|
|
|
.El
|
|
|
|
|
|
|
|
taking a pointer to the following structure as argument:
|
|
|
|
.Bd -literal
|
|
|
|
struct cursorshape {
|
|
|
|
int screen_no; /* screen number for which to set, */
|
|
|
|
/* or -1 to set on current active screen */
|
|
|
|
int start; /* top scanline, range 0... Character Height - 1 */
|
|
|
|
int end; /* end scanline, range 0... Character Height - 1 */
|
|
|
|
};
|
|
|
|
.Ed
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It VGASETSCREEN
|
|
|
|
set screen info, and
|
|
|
|
.It VGAGETSCREEN
|
|
|
|
get screen info,
|
|
|
|
.El
|
|
|
|
|
|
|
|
provide an interface to some general driver internal variables
|
|
|
|
which might modify the behaviour of the screens,
|
|
|
|
or which might simply be used to force the driver to switch
|
|
|
|
to one certain screen. Their argument is a pointer to the structure:
|
|
|
|
.Bd -literal
|
|
|
|
struct screeninfo {
|
|
|
|
int adaptor_type; /* type of video adaptor installed */
|
|
|
|
/* read only, ignored on write (yet!) */
|
|
|
|
int totalfonts; /* no of downloadable fonts */
|
|
|
|
/* read only, ignored on write */
|
|
|
|
int totalscreens; /* no of virtual screens */
|
|
|
|
/* read only, ignored on write */
|
|
|
|
int screen_no; /* screen number, this was got from */
|
|
|
|
/* on write, if -1, apply pure_vt_mode */
|
|
|
|
/* and/or screen_size to current screen*/
|
|
|
|
/* else to screen_no supplied */
|
|
|
|
int current_screen; /* screen number, which is displayed. */
|
|
|
|
/* on write, if -1, make this screen */
|
|
|
|
/* the current screen, else set current*/
|
|
|
|
/* displayed screen to parameter */
|
|
|
|
int pure_vt_mode; /* flag, pure VT mode or HP/VT mode */
|
|
|
|
/* on write, if -1, no change */
|
|
|
|
int screen_size; /* screen size */
|
|
|
|
/* on write, if -1, no change */
|
|
|
|
int force_24lines; /* force 24 lines if 25 lines VT mode */
|
|
|
|
/* or 28 lines HP mode to get pure */
|
|
|
|
/* VT220 screen size */
|
|
|
|
/* on write, if -1, no change */
|
|
|
|
int vga_family; /* if adaptor_type = VGA, this reflects*/
|
|
|
|
/* the chipset family after a read */
|
|
|
|
/* nothing happenes on write ... */
|
|
|
|
int vga_type; /* if adaptor_type = VGA, this reflects*/
|
|
|
|
/* the chipset after a read */
|
|
|
|
/* nothing happenes on write ... */
|
|
|
|
int vga_132; /* set to 1 if driver has support for */
|
|
|
|
/* 132 column operation for chipset */
|
|
|
|
/* currently ignored on write */
|
|
|
|
};
|
|
|
|
.Ed
|
|
|
|
|
|
|
|
Its field
|
|
|
|
.Em pure_vt_mode
|
|
|
|
may take the values M_HPVT for a mixed VTxxx and HP Mode, with function
|
|
|
|
key labels and a status line, or M_PUREVT for only VTxxx sequences
|
|
|
|
recognized, with no labels.
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It VGASETCOLMS
|
|
|
|
sets the number of columns for the current screen,
|
|
|
|
.El
|
|
|
|
|
|
|
|
its parameter is a pointer to an integer containing either a value of 80,
|
|
|
|
or a value of 132. Note that setting the number of columns to 132 is
|
|
|
|
only supported on VGA adaptors. Any unsupported numbers cause the ioctl
|
|
|
|
to fail with
|
|
|
|
.Em errno
|
|
|
|
.Pq see Xr intro 2
|
|
|
|
being set to
|
|
|
|
.Em EINVAL .
|
|
|
|
|
|
|
|
.Em VGA color palette interface
|
|
|
|
|
|
|
|
Only on VGA adaptors, there's a color palette register at the output.
|
|
|
|
It is responsible for the red, green and blue output voltage provided
|
|
|
|
for each of the 256 internal color codes, each lying in the range of
|
|
|
|
0 through 63 (with 63 representing the brightest value for a base color).
|
|
|
|
Thus, these adaptors map each color code to a color of a
|
|
|
|
.Dq palette
|
|
|
|
out of 262144 colors. The commands
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It VGAREADPEL
|
|
|
|
read VGA palette entry, and
|
|
|
|
.It VGAWRITEPEL
|
|
|
|
write VGA palette entry
|
|
|
|
.El
|
|
|
|
|
|
|
|
establish an interface to these palette registers. Their argument is
|
|
|
|
a pointer to:
|
|
|
|
.Bd -literal
|
|
|
|
struct vgapel {
|
|
|
|
unsigned idx; /* index into palette, 0 .. 255 valid */
|
|
|
|
unsigned r, g, b; /* RGB values, masked by VGA_PMASK (63) */
|
|
|
|
};
|
|
|
|
.Ed
|
|
|
|
|
|
|
|
|
|
|
|
.Em Driver identification
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It VGAPCVTID
|
|
|
|
returns information if the current compiled in driver is pcvt and it's
|
|
|
|
major and minor revision numbers. the call is taking a pointer to the
|
|
|
|
following structure as argument:
|
|
|
|
.El
|
|
|
|
|
|
|
|
.Bd -literal
|
|
|
|
struct pcvtid {
|
|
|
|
#define PCVTIDNAMELN 16 /* driver id - string length */
|
|
|
|
char name[PCVTIDNAMELN]; /* driver name, == PCVTIDSTR */
|
|
|
|
#define PCVTIDNAME "pcvt" /* driver id - string */
|
|
|
|
int rmajor; /* revision number, major */
|
|
|
|
#define PCVTIDMAJOR 3
|
|
|
|
int rminor; /* revision number, minor */
|
|
|
|
#define PCVTIDMINOR 00
|
|
|
|
};
|
|
|
|
.Ed
|
|
|
|
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It VGAPCVTINFO
|
|
|
|
returns information if the current compiled in driver is pcvt and it's
|
|
|
|
compile time options. the call is taking a pointer to the following
|
|
|
|
structure as argument:
|
|
|
|
.El
|
|
|
|
|
|
|
|
.Bd -literal
|
|
|
|
struct pcvtinfo {
|
|
|
|
u_int opsys; /* PCVT_xxx(x)BSD */
|
|
|
|
#define CONF_UNKNOWNOPSYS 0
|
|
|
|
#define CONF_386BSD 1 /* unsupported !!! */
|
|
|
|
#define CONF_NETBSD 2
|
|
|
|
#define CONF_FREEBSD 3
|
|
|
|
u_int opsysrel; /* Release for NetBSD/FreeBSD */
|
|
|
|
u_int nscreens; /* PCVT_NSCREENS */
|
|
|
|
u_int scanset; /* PCVT_SCANSET */
|
|
|
|
u_int updatefast; /* PCVT_UPDATEFAST */
|
|
|
|
u_int updateslow; /* PCVT_UPDATESLOW */
|
|
|
|
u_int sysbeepf; /* PCVT_SYSBEEPF */
|
|
|
|
u_int pcburst; /* PCVT_PCBURST */
|
|
|
|
u_int kbd_fifo_sz; /* PCVT_KBD_FIFO_SZ */
|
|
|
|
|
|
|
|
/* config booleans */
|
|
|
|
|
|
|
|
u_long compile_opts; /* PCVT_xxxxxxxxxxxxxxx */
|
|
|
|
};
|
|
|
|
.Ed
|
|
|
|
|
|
|
|
|
|
|
|
.Em Screen saver
|
|
|
|
|
|
|
|
Depending on the configuration of a
|
|
|
|
.Nm pcvt
|
|
|
|
driver, their might be a simple screen saver available. It is controlled
|
|
|
|
by the command
|
|
|
|
|
|
|
|
.Bl -tag -width 20n -offset indent -compact
|
|
|
|
.It VGASCREENSAVER
|
|
|
|
set timeout for screen saver in seconds; 0 turns it off,
|
|
|
|
.El
|
|
|
|
|
|
|
|
taking a pointer to an integer as argument. Despite of its command name,
|
|
|
|
this is available on
|
|
|
|
.Em any
|
|
|
|
kind of adaptor if configured in by the
|
|
|
|
.Xr config 8
|
|
|
|
option
|
|
|
|
.Dq PCVT_SCREENSAVER
|
|
|
|
|
|
|
|
.Em Compatibility commands for USL-style VT's
|
|
|
|
|
|
|
|
Release 3.00 of this
|
|
|
|
.Nm pcvt
|
|
|
|
driver supports a subset of the USL-style commands used to control
|
|
|
|
the virtual terminal interface. This feature is mainly intended to
|
|
|
|
allow
|
|
|
|
.Em XFree86 ,
|
|
|
|
release 2.0 or higher, to switch between virtual screens even when
|
|
|
|
running an X server. They are ugly with respect to the implied semantics
|
|
|
|
.Pq i.\& e., they break Berkeley semantics
|
|
|
|
and are therefore not recommended for common use. See the file
|
|
|
|
.Pa i386/include/pcvt_ioctl.h
|
|
|
|
for their documentation.
|
|
|
|
|
|
|
|
.Sh FILES
|
|
|
|
.Bl -tag -width /usr/include/machine/pcvt_ioctl.h
|
|
|
|
.It Pa /usr/include/machine/pcvt_ioctl.h
|
|
|
|
Definitions for
|
|
|
|
.Xr ioctl 2
|
|
|
|
function calls
|
|
|
|
.It Pa /dev/ttyv?
|
|
|
|
.It Pa /dev/console
|
|
|
|
Device nodes to access the
|
|
|
|
.Nm pcvt
|
|
|
|
driver
|
|
|
|
.It Pa i386/isa/pcvt/pcvt_hdr.h
|
|
|
|
.Pq relative to the kernel source tree
|
|
|
|
Documents the various compile-time options to tailor
|
|
|
|
.Nm pcvt .
|
|
|
|
.Sh HISTORY
|
|
|
|
The
|
|
|
|
.Nm pcvt
|
|
|
|
driver has been developed for and contributed to 386BSD release 0.1. Since
|
|
|
|
release 3.00 explicit support is provided for NetBSD 0.9. It is expected
|
|
|
|
that no further development on pcvt is done for 386BSD 0.1 after release 3.00,
|
|
|
|
in fact, 386BSD support was dropped with release 3.20.
|
|
|
|
.Sh AUTHORS
|
|
|
|
Written by
|
|
|
|
.An Hellmuth Michaelis Aq hm@hcshh.hcs.de
|
|
|
|
with much help from
|
|
|
|
.An Brian Dunford-Shore Aq brian@morpheus.wustl.edu
|
|
|
|
.br
|
|
|
|
.if n Joerg Wunsch
|
|
|
|
.if t J\(:org Wunsch
|
|
|
|
.Aq joerg_wunsch@uriah.sax.de
|
|
|
|
.br
|
|
|
|
This driver is based on several people's previous
|
|
|
|
work, notably by
|
|
|
|
.An William Jolitz'
|
|
|
|
and
|
|
|
|
.An Don Ahn's
|
|
|
|
historic
|
|
|
|
.Xr pccons 4
|
|
|
|
implementation
|
|
|
|
.br
|
|
|
|
.Aq ljolitz@cardio.ucsf.edu
|
|
|
|
.br
|
|
|
|
.An Holger Veit Aq veit@first.gmd.de
|
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr intro 2 ,
|
|
|
|
.Xr ioctl 2 ,
|
1999-02-07 05:40:14 +00:00
|
|
|
.Xr atkbd 4 ,
|
1999-01-01 08:48:31 +00:00
|
|
|
.Xr keyboard 4 ,
|
|
|
|
.Xr screen 4 ,
|
|
|
|
.Xr config 8 ,
|
|
|
|
.Xr ispcvt 8
|
|
|
|
.Sh BUGS
|
|
|
|
Certainly existent. See the file
|
|
|
|
.Pa BugList
|
|
|
|
in the Documentation directory for an up-to-date list.
|
|
|
|
|
|
|
|
.Ss Tested Video Boards
|
|
|
|
.Bd -literal
|
|
|
|
Manufacturer Chipset Monitor
|
|
|
|
|
|
|
|
2theMax (?) ET4000 VGA Color
|
|
|
|
Video7 Inc. Video 7 VGA Color
|
|
|
|
Diamond Stealth VRAM S3 NEC 3FGx
|
|
|
|
Trident TVGA 8800CS NEC 3D
|
|
|
|
Data General C&T P82C604 VGA Color
|
|
|
|
NoName Hercules W86855AF Mono
|
|
|
|
Kyocera (Mainboard) WD90C11 Sony Color
|
|
|
|
unknown ET3000 NEC 3D
|
|
|
|
.Ed
|
|
|
|
|
|
|
|
.Ss Tested Keyboards
|
|
|
|
.Bd -literal
|
|
|
|
Manufacturer Type Layout
|
|
|
|
|
|
|
|
Cherry MF II US
|
|
|
|
Cherry/Tandon MF II German
|
|
|
|
Hewlett-Packard MF II US
|
|
|
|
Hewlett-Packard MF II German
|
|
|
|
Tatung AT German
|
|
|
|
.Ed
|
|
|
|
|
|
|
|
There is absolutely NO support for the ancient PC-keyboards
|
|
|
|
.Pq they had 83 keys .
|
|
|
|
|
|
|
|
There is only limited support for AT-keyboards
|
|
|
|
.Bo
|
|
|
|
they have 84 keys, and a separate numeric keypad,
|
|
|
|
they don't have F11/F12 keys
|
|
|
|
.Bc
|
|
|
|
because the emulator needs F9 through F12 for control functions, and due to
|
|
|
|
the current design of the keyboard driver there is no
|
|
|
|
.Pq full
|
|
|
|
support for national keyboards because
|
|
|
|
of the lack of an ALtGr key.
|
|
|
|
|
|
|
|
MF-keyboards are fully supported, 101- and 102-key versions.
|