diff --git a/share/man/man4/man4.i386/Makefile b/share/man/man4/man4.i386/Makefile index e29a2a26c31e..79bf02925525 100644 --- a/share/man/man4/man4.i386/Makefile +++ b/share/man/man4/man4.i386/Makefile @@ -1,11 +1,11 @@ -# $Id: Makefile,v 1.91 1998/12/27 12:52:39 phk Exp $ +# $Id: Makefile,v 1.92 1998/12/27 13:06:36 phk Exp $ MAN4= adv.4 adw.4 aha.4 ahb.4 ahc.4 aic.4 alog.4 apm.4 ar.4 asc.4 bktr.4 \ bt.4 cs.4 cx.4 cy.4 de.4 \ dgb.4 dpt.4 ed.4 el.4 en.4 ep.4 ex.4 fdc.4 fe.4 fxp.4 gsc.4 ie.4 \ io.4 joy.4 keyboard.4 labpc.4 le.4 lnc.4 lp.4 lpt.4 matcd.4 mcd.4 \ mem.4 meteor.4 mouse.4 mse.4 mtio.4 mx.4 ncr.4 npx.4 \ - pcf.4 pcm.4 perfmon.4 pn.4 pnp.4 ppc.4 psm.4 \ + pcf.4 pcm.4 pcvt.4 perfmon.4 pn.4 pnp.4 ppc.4 psm.4 \ rdp.4 rl.4 sb.4 scd.4 screen.4 si.4 sio.4 \ spkr.4 sr.4 sysmouse.4 tl.4 tw.4 tx.4 vr.4 vx.4 \ wb.4 wd.4 wfd.4 wl.4 wt.4 xl.4 ze.4 zp.4 @@ -58,6 +58,7 @@ MLINKS+= ncr.4 ../ncr.4 MLINKS+= npx.4 ../npx.4 MLINKS+= pcf.4 ../pcf.4 MLINKS+= pcm.4 ../pcm.4 +MLINKS+= pcvt.4 vt.4 pcvt.4 ../pcvt.4 pcvt.4 ../vt.4 MLINKS+= perfmon.4 ../perfmon.4 MLINKS+= pn.4 ../pn.4 MLINKS+= pnp.4 ../pnp.4 diff --git a/share/man/man4/man4.i386/pcvt.4 b/share/man/man4/man4.i386/pcvt.4 new file mode 100644 index 000000000000..96ef474f8e34 --- /dev/null +++ b/share/man/man4/man4.i386/pcvt.4 @@ -0,0 +1,910 @@ +.\" +.\" 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] +.\" $Id: pcvt.4,v 1.12 1998/10/22 14:29:03 bde Exp $ +.\" +.\" 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 +.Cd "device vt0 at isa? port IO_KBD tty irq 1" +.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. + +.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 + +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 , +.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. diff --git a/share/man/man4/pcvt.4 b/share/man/man4/pcvt.4 new file mode 100644 index 000000000000..96ef474f8e34 --- /dev/null +++ b/share/man/man4/pcvt.4 @@ -0,0 +1,910 @@ +.\" +.\" 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] +.\" $Id: pcvt.4,v 1.12 1998/10/22 14:29:03 bde Exp $ +.\" +.\" 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 +.Cd "device vt0 at isa? port IO_KBD tty irq 1" +.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. + +.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 + +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 , +.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.