Pre 3.0 branch cleanup casualty #4: pcvt

This commit is contained in:
phk 1998-12-27 12:52:46 +00:00
parent 2225f39db3
commit eb15c87aad
20 changed files with 9 additions and 19196 deletions

View File

@ -1,11 +1,11 @@
# $Id: Makefile,v 1.89 1998/12/22 09:36:29 joerg Exp $
# $Id: Makefile,v 1.90 1998/12/27 12:44:49 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 nca.4 ncr.4 npx.4 \
pcf.4 pcm.4 pcvt.4 perfmon.4 pn.4 pnp.4 ppc.4 psm.4 \
pcf.4 pcm.4 perfmon.4 pn.4 pnp.4 ppc.4 psm.4 \
rdp.4 rl.4 sb.4 scd.4 screen.4 sea.4 si.4 sio.4 \
spkr.4 sr.4 sysmouse.4 tl.4 tw.4 tx.4 uha.4 vr.4 vx.4 \
wb.4 wd.4 wfd.4 wl.4 wt.4 xl.4 ze.4 zp.4
@ -59,7 +59,6 @@ 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

View File

@ -1,910 +0,0 @@
.\"
.\" 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.11 1998/08/26 02:46:24 jkoshy 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 <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 ,
.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.

View File

@ -1,910 +0,0 @@
.\"
.\" 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.11 1998/08/26 02:46:24 jkoshy 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 <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 ,
.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.

View File

@ -11,7 +11,7 @@
# device lines is present in the ./LINT configuration file. If you are
# in doubt as to the purpose or necessity of a line, check first in LINT.
#
# $Id: GENERIC,v 1.134 1998/12/09 23:28:43 n_hibma Exp $
# $Id: GENERIC,v 1.135 1998/12/13 23:04:35 n_hibma Exp $
machine "i386"
cpu "I386_CPU"
@ -104,14 +104,7 @@ controller matcd0 at isa? port 0x230 bio
device scd0 at isa? port 0x230 bio
# syscons is the default console driver, resembling an SCO console
device sc0 at isa? port IO_KBD conflicts tty irq 1
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
#device vt0 at isa? port IO_KBD conflicts tty irq 1
#options XSERVER # support for X server
#options FAT_CURSOR # start with block cursor
# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines
#options PCVT_SCANSET=2 # IBM keyboards are non-std
device npx0 at isa? port IO_NPX irq 13

View File

@ -2,7 +2,7 @@
# LINT -- config file for checking all the sources, tries to pull in
# as much of the source tree as it can.
#
# $Id: LINT,v 1.513 1998/12/27 12:40:07 phk Exp $
# $Id: LINT,v 1.514 1998/12/27 12:44:54 phk Exp $
#
# NB: You probably don't want to try running a kernel built from this
# file. Instead, you should start from GENERIC, and add options from
@ -818,13 +818,6 @@ options "NTIMECOUNTER=20"
# configure cards from USERCONFIG. See pnp(4) for more info.
controller pnp0
# The pcvt console driver (vt220 compatible).
device vt0 at isa? port IO_KBD conflicts tty irq 1
options XSERVER # support for running an X server.
options FAT_CURSOR # start with block cursor
# This PCVT option is for keyboards such as those used on IBM ThinkPad laptops
options PCVT_SCANSET=2 # IBM keyboards are non-std
# The syscons console driver (sco color console compatible).
device sc0 at isa? port IO_KBD conflicts tty irq 1
options MAXCONS=16 # number of virtual consoles

View File

@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
# $Id: files.i386,v 1.208 1998/12/27 12:40:07 phk Exp $
# $Id: files.i386,v 1.209 1998/12/27 12:44:55 phk Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@ -149,12 +149,6 @@ i386/isa/matcd/matcd.c optional matcd device-driver
i386/isa/pcibus.c optional pci device-driver
i386/isa/pcicx.c optional ze device-driver
i386/isa/pcicx.c optional zp device-driver
i386/isa/pcvt/pcvt_drv.c optional vt device-driver
i386/isa/pcvt/pcvt_ext.c optional vt device-driver
i386/isa/pcvt/pcvt_kbd.c optional vt device-driver
i386/isa/pcvt/pcvt_out.c optional vt device-driver
i386/isa/pcvt/pcvt_sup.c optional vt device-driver
i386/isa/pcvt/pcvt_vtf.c optional vt device-driver
i386/isa/pnp.c optional pnp device-driver
i386/isa/prof_machdep.c optional profiling-routine
i386/isa/ppc.c optional ppc device-driver

View File

@ -11,7 +11,7 @@
# device lines is present in the ./LINT configuration file. If you are
# in doubt as to the purpose or necessity of a line, check first in LINT.
#
# $Id: GENERIC,v 1.134 1998/12/09 23:28:43 n_hibma Exp $
# $Id: GENERIC,v 1.135 1998/12/13 23:04:35 n_hibma Exp $
machine "i386"
cpu "I386_CPU"
@ -104,14 +104,7 @@ controller matcd0 at isa? port 0x230 bio
device scd0 at isa? port 0x230 bio
# syscons is the default console driver, resembling an SCO console
device sc0 at isa? port IO_KBD conflicts tty irq 1
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
#device vt0 at isa? port IO_KBD conflicts tty irq 1
#options XSERVER # support for X server
#options FAT_CURSOR # start with block cursor
# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines
#options PCVT_SCANSET=2 # IBM keyboards are non-std
device npx0 at isa? port IO_NPX irq 13

View File

@ -2,7 +2,7 @@
# LINT -- config file for checking all the sources, tries to pull in
# as much of the source tree as it can.
#
# $Id: LINT,v 1.513 1998/12/27 12:40:07 phk Exp $
# $Id: LINT,v 1.514 1998/12/27 12:44:54 phk Exp $
#
# NB: You probably don't want to try running a kernel built from this
# file. Instead, you should start from GENERIC, and add options from
@ -818,13 +818,6 @@ options "NTIMECOUNTER=20"
# configure cards from USERCONFIG. See pnp(4) for more info.
controller pnp0
# The pcvt console driver (vt220 compatible).
device vt0 at isa? port IO_KBD conflicts tty irq 1
options XSERVER # support for running an X server.
options FAT_CURSOR # start with block cursor
# This PCVT option is for keyboards such as those used on IBM ThinkPad laptops
options PCVT_SCANSET=2 # IBM keyboards are non-std
# The syscons console driver (sco color console compatible).
device sc0 at isa? port IO_KBD conflicts tty irq 1
options MAXCONS=16 # number of virtual consoles

View File

@ -2,7 +2,7 @@
# LINT -- config file for checking all the sources, tries to pull in
# as much of the source tree as it can.
#
# $Id: LINT,v 1.513 1998/12/27 12:40:07 phk Exp $
# $Id: LINT,v 1.514 1998/12/27 12:44:54 phk Exp $
#
# NB: You probably don't want to try running a kernel built from this
# file. Instead, you should start from GENERIC, and add options from
@ -818,13 +818,6 @@ options "NTIMECOUNTER=20"
# configure cards from USERCONFIG. See pnp(4) for more info.
controller pnp0
# The pcvt console driver (vt220 compatible).
device vt0 at isa? port IO_KBD conflicts tty irq 1
options XSERVER # support for running an X server.
options FAT_CURSOR # start with block cursor
# This PCVT option is for keyboards such as those used on IBM ThinkPad laptops
options PCVT_SCANSET=2 # IBM keyboards are non-std
# The syscons console driver (sco color console compatible).
device sc0 at isa? port IO_KBD conflicts tty irq 1
options MAXCONS=16 # number of virtual consoles

View File

@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
# $Id: files.i386,v 1.208 1998/12/27 12:40:07 phk Exp $
# $Id: files.i386,v 1.209 1998/12/27 12:44:55 phk Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@ -149,12 +149,6 @@ i386/isa/matcd/matcd.c optional matcd device-driver
i386/isa/pcibus.c optional pci device-driver
i386/isa/pcicx.c optional ze device-driver
i386/isa/pcicx.c optional zp device-driver
i386/isa/pcvt/pcvt_drv.c optional vt device-driver
i386/isa/pcvt/pcvt_ext.c optional vt device-driver
i386/isa/pcvt/pcvt_kbd.c optional vt device-driver
i386/isa/pcvt/pcvt_out.c optional vt device-driver
i386/isa/pcvt/pcvt_sup.c optional vt device-driver
i386/isa/pcvt/pcvt_vtf.c optional vt device-driver
i386/isa/pnp.c optional pnp device-driver
i386/isa/prof_machdep.c optional profiling-routine
i386/isa/ppc.c optional ppc device-driver

View File

@ -1,477 +0,0 @@
/*
* Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
*
* Copyright (c) 1992, 1994 Brian Dunford-Shore.
*
* 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 and Joerg Wunsch.
* 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_conf.h, 3.20, Last Edit-Date: [Sun Apr 2 18:57:45 1995]
*
*/
/*---------------------------------------------------------------------------
*
* pcvt_conf.h VT220 driver global configuration file
* ------------------------------------------------------
* -hm introduced pcvt_conf.h
* -hm re-integrated selfconfiguration for NetBSD from Onno
* -hm patch from Onno for NetBSD-current
* -hm removed PCVT_FAKE_SYSCONS10
*
*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
*
* from: Onno van der Linden c/o frank@fwi.uva.nl
*
* Here's an idea how to automatically detect the version of NetBSD pcvt is
* being compiled on:
*
* NetBSD 0.8 : NetBSD0_8 defined in <sys/param.h>
* NetBSD 0.9 : NetBSD0_9 defined in <sys/param.h>
* NetBSD 1.0 : NetBSD1_0 defined as 1 in <sys/param.h>
* NetBSD 1.0A: NetBSD1_0 defined as 2 in <sys/param.h>
*
* The NetBSDx_y defines are mutual exclusive.
*
* This leads to something like this in pcvt_hdr.h (#elif is possible too):
*
*---------------------------------------------------------------------------*/
#ifdef NetBSD0_8
#define PCVT_NETBSD 8
#endif
#ifdef NetBSD0_9
#define PCVT_NETBSD 9
#endif
#ifdef NetBSD1_0
#if NetBSD1_0 > 1
#define PCVT_NETBSD 199
#else
#define PCVT_NETBSD 100
#endif
#endif
/*---------------------------------------------------------------------------
* Note that each of the options below should rather be overriden by the
* kernel config file instead of this .h file - this allows for different
* definitions in different kernels compiled at the same machine
*
* The convention is as follows:
*
* options "PCVT_FOO=1" - enables the option
* options "PCVT_FOO" - is a synonym for the above
* options "PCVT_FOO=0" - disables the option
*
* omitting an option defaults to what is shown below
*
* exceptions from this rule are i.e.:
*
* options "PCVT_NSCREENS=x"
* options "PCVT_SCANSET=x"
* options "PCVT_UPDATEFAST=x"
* options "PCVT_UPDATESLOW=x"
* options "PCVT_SYSBEEPF=x"
*
* which are always numeric!
*---------------------------------------------------------------------------*/
/* -------------------------------------------------------------------- */
/* -------------------- OPERATING SYSTEM ------------------------------ */
/* -------------------------------------------------------------------- */
/*
* one of the following options must be set in the kernel config file:
*
*======================================================================*
* N e t B S D *
*======================================================================*
*
* options "PCVT_NETBSD=xxx" enables support for NetBSD
*
* select:
* PCVT_NETBSD = 9 for NetBSD 0.9
* PCVT_NETBSD = 99 for PRE-1.0 NetBSD-current
* PCVT_NETBSD = 100 for NetBSD 1.0
* PCVT_NETBSD = 199 for PRE-2.0 NetBSD-current
*
*
*======================================================================*
* F r e e B S D *
*======================================================================*
*
* options "PCVT_FREEBSD=xxx" enables support for FreeBSD
*
* select:
* PCVT_FREEBSD = 102 for 1.0 release (actually 1.0.2)
* PCVT_FREEBSD = 110 for FreeBSD 1.1-Release
* PCVT_FREEBSD = 115 for FreeBSD 1.1.5.1-Release
* PCVT_FREEBSD = 200 for FreeBSD 2.0-Release
* PCVT_FREEBSD = 210 for FreeBSD 2.1-Release
*
*/
/* -------------------------------------------------------------------- */
/* ---------------- USER PREFERENCE DRIVER OPTIONS -------------------- */
/* -------------------------------------------------------------------- */
/*----------------------------------------------------------------------*/
/* NOTE: if FAT_CURSOR is defined, a block cursor is used instead of */
/* the cursor shape we got from the BIOS, see pcvt_out.c */
/*----------------------------------------------------------------------*/
#if !defined PCVT_NSCREENS /* ---------- DEFAULT: 8 -------------- */
# define PCVT_NSCREENS 8 /* this option defines how many virtual */
#endif /* screens you want to have in your */
/* system. each screen allocates memory,*/
/* so you can't have an unlimited num- */
/* ber...; the value is intented to be */
/* compile-time overridable by a config */
/* options "PCVT_NSCREENS=x" line */
#if !defined PCVT_VT220KEYB /* ---------- DEFAULT: OFF ------------ */
# define PCVT_VT220KEYB 0 /* this compiles a more vt220-like */
#elif PCVT_VT220KEYB != 0 /* keyboardlayout as described in the */
# undef PCVT_VT220KEYB /* file Keyboard.VT220. */
# define PCVT_VT220KEYB 1 /* if undefined, a more HP-like */
#endif /* keyboardlayout is compiled */
/* try to find out what YOU like ! */
#if !defined PCVT_SCREENSAVER /* ---------- DEFAULT: ON ------------- */
# define PCVT_SCREENSAVER 1 /* enable screen saver feature - this */
#elif PCVT_SCREENSAVER != 0 /* just blanks the display screen. */
# undef PCVT_SCREENSAVER /* see PCVT_PRETTYSCRNS below ... */
# define PCVT_SCREENSAVER 1
#endif
#if !defined PCVT_PRETTYSCRNS /* ---------- DEFAULT: OFF ------------ */
# define PCVT_PRETTYSCRNS 0 /* for the cost of some microseconds of */
#elif PCVT_PRETTYSCRNS != 0 /* cpu time this adds a more "pretty" */
# undef PCVT_PRETTYSCRNS /* version to the screensaver, an "*" */
# define PCVT_PRETTYSCRNS 1 /* in random locations of the display. */
#endif /* NOTE: this should not be defined if */
/* you have an energy-saving monitor */
/* which turns off the display if its */
/* black !!!!!! */
#if !defined PCVT_CTRL_ALT_DEL /* ---------- DEFAULT: OFF ------------ */
# define PCVT_CTRL_ALT_DEL 0 /* this enables the execution of a cpu */
#elif PCVT_CTRL_ALT_DEL != 0 /* reset by pressing the CTRL, ALT and */
# undef PCVT_CTRL_ALT_DEL /* DEL keys simultanously. Because this */
# define PCVT_CTRL_ALT_DEL 1 /* is a feature of an ancient simple */
#endif /* bootstrap loader, it does not belong */
/* into modern operating systems and */
/* was commented out by default ... */
#if !defined PCVT_KBD_FIFO /* ---------- DEFAULT: ON ------------- */
# define PCVT_KBD_FIFO 1 /* this enables Keyboad fifo so that we */
#elif PCVT_KBD_FIFO != 0 /* are not any longer forced to switch */
# undef PCVT_KBD_FIFO /* off tty interrupts while switching */
# define PCVT_KBD_FIFO 1 /* virtual screens - AND loosing chars */
#endif /* on the serial lines is gone :-) */
#if PCVT_KBD_FIFO
# if !defined PCVT_KBD_FIFO_SZ /* ---------- DEFAULT: 256 ------------ */
# define PCVT_KBD_FIFO_SZ 256 /* this specifies the size of the above */
# elif PCVT_KBD_FIFO_SZ < 16 /* mentioned keyboard buffer. buffer */
# undef PCVT_KBD_FIFO_SZ /* overflows are logged via syslog, so */
# define PCVT_KBD_FIFO_SZ 256 /* have a look at /var/log/messages */
# endif
#endif /* PCVT_KBD_FIFO */
#if !defined PCVT_USEKBDSEC /* ---------- DEFAULT: ON ------------- */
# define PCVT_USEKBDSEC 1 /* do not set the COMMAND_INHOVR bit */
#elif PCVT_USEKBDSEC != 0 /* (1 = override security lock inhibit) */
# undef PCVT_USEKBDSEC /* when initializing the keyboard, so */
# define PCVT_USEKBDSEC 1 /* that security locking should work */
#endif /* now. I guess this has to be done also*/
/* in the boot code to prevent single */
/* user startup .... */
#if !defined PCVT_24LINESDEF /* ---------- DEFAULT: OFF ------------ */
# define PCVT_24LINESDEF 0 /* use 24 lines in VT 25 lines mode and */
#elif PCVT_24LINESDEF != 0 /* HP 28 lines mode by default to have */
# undef PCVT_24LINESDEF /* the the better compatibility to the */
# define PCVT_24LINESDEF 1 /* real VT220 - you can switch between */
#endif /* the maximum possible screensizes in */
/* those two modes (25 lines) and true */
/* compatibility (24 lines) by using */
/* the scon utility at runtime */
#if !defined PCVT_EMU_MOUSE /* ---------- DEFAULT: OFF ------------ */
# define PCVT_EMU_MOUSE 0 /* emulate a mouse systems mouse via */
#elif PCVT_EMU_MOUSE != 0 /* the keypad; this is experimental */
# undef PCVT_EMU_MOUSE /* code intented to be used on note- */
# define PCVT_EMU_MOUSE 1 /* books in conjunction with XFree86; */
#endif /* look at the comments in pcvt_kbd.c */
/* if you are interested in testing it. */
#if !defined PCVT_META_ESC /* ---------- DEFAULT: OFF ------------ */
# define PCVT_META_ESC 0 /* if ON, send the sequence "ESC key" */
#elif PCVT_META_ESC != 0 /* for a meta-shifted key; if OFF, */
# undef PCVT_META_ESC /* send the normal key code with 0x80 */
# define PCVT_META_ESC 1 /* added. */
#endif
#if !defined PCVT_SW0CNOUTP /* ---------- DEFAULT: OFF ------------ */
# define PCVT_SW0CNOUTP 0 /* if ON, on console/kernel output the */
#elif PCVT_SW0CNOUTP != 0 /* current screen is switched to screen */
# undef PCVT_SW0CNOUTP /* 0 if not already at screen 0. */
# define PCVT_SW0CNOUTP 1 /* CAUTION: CURRENTLY THIS CAUSES AN X- */
#endif /* SESSION TO CLUTTER VIDEO MEMORY !!!! */
/* -------------------------------------------------------------------- */
/* -------------------- DRIVER DEBUGGING ------------------------------ */
/* -------------------------------------------------------------------- */
#if !defined PCVT_SHOWKEYS /* ---------- DEFAULT: OFF ------------ */
# define PCVT_SHOWKEYS 0 /* this replaces the system load line */
#elif PCVT_SHOWKEYS != 0 /* on the vt 0 in hp mode with a display*/
# undef PCVT_SHOWKEYS /* of the most recent keyboard scan- */
# define PCVT_SHOWKEYS 1 /* and status codes received from the */
#endif /* keyboard controller chip. */
/* this is just for some hardcore */
/* keyboarders .... */
/* -------------------------------------------------------------------- */
/* -------------------- DRIVER OPTIONS -------------------------------- */
/* -------------------------------------------------------------------- */
/* it is unlikely that anybody wants to change anything below */
#if !defined PCVT_NO_LED_UPDATE /* ---------- DEFAULT: OFF ------------ */
# define PCVT_NO_LED_UPDATE 0 /* On some (Notebook?) keyboards it is */
#elif PCVT_NO_LED_UPDATE != 0 /* not possible to update the LED's */
# undef PCVT_NO_LED_UPDATE /* without hanging the keyboard after- */
# define PCVT_NO_LED_UPDATE 1 /* wards. If you experience Problems */
#endif /* like this, try to enable this option */
#if !defined PCVT_PORTIO_DELAY /* ---------- DEFAULT: ON ------------- */
# define PCVT_PORTIO_DELAY 1 /* Defining PCVT_PORTIO_DELAY lets pcvt */
#elif PCVT_PORTIO_DELAY != 0 /* use multiple accesses to port 0x84 */
# undef PCVT_PORTIO_DELAY /* to produce a delay of 7 us needed for*/
# define PCVT_PORTIO_DELAY 1 /* accessing the keyboard controller, */
#endif /* otherwise the system delay functions */
/* are used. */
#if !defined PCVT_PCBURST /* ---------- DEFAULT: 256 ------------ */
# define PCVT_PCBURST 256 /* NETBSD and FreeBSD >= 2.0 only: this */
#endif /* is the number of output characters */
/* handled together as a burst in */
/* routine pcstart(), file pcvt_drv.c */
#if !defined PCVT_SCANSET /* ---------- DEFAULT: 1 -------------- */
# define PCVT_SCANSET 1 /* define the keyboard scancode set you */
#endif /* want to use: */
/* 1 - code set 1 (supported) */
/* 2 - code set 2 (supported) */
/* 3 - code set 3 (UNsupported) */
#if !defined PCVT_KEYBDID /* ---------- DEFAULT: ON ------------- */
# define PCVT_KEYBDID 1 /* check type of keyboard connected. at */
#elif PCVT_KEYBDID != 0 /* least HP-keyboards send an id other */
# undef PCVT_KEYBDID /* than the industry standard, so it */
# define PCVT_KEYBDID 1 /* CAN lead to problems. if you have */
#endif /* problems with this, TELL ME PLEASE ! */
#if !defined PCVT_SIGWINCH /* ---------- DEFAULT: ON ------------- */
# define PCVT_SIGWINCH 1 /* this sends a SIGWINCH signal in case */
#elif PCVT_SIGWINCH != 0 /* the window size is changed. to try, */
# undef PCVT_SIGWINCH /* issue "scons -s<size>" while in elvis*/
# define PCVT_SIGWINCH 1 /* and you'll see the effect. */
#endif /* i'm not sure, whether this feature */
/* has to be in the driver or has to */
/* move as an ioctl call to scon .... */
#if !defined PCVT_NULLCHARS /* ---------- DEFAULT: ON ------------- */
# define PCVT_NULLCHARS 1 /* allow the keyboard to send null */
#elif PCVT_NULLCHARS != 0 /* (0x00) characters to the calling */
# undef PCVT_NULLCHARS /* program. this has the side effect */
# define PCVT_NULLCHARS 1 /* that every undefined key also sends */
#endif /* out nulls. take it as experimental */
/* code, this behaviour will change in */
/* a future release */
#if !defined PCVT_BACKUP_FONTS /* ---------- DEFAULT: ON ------------- */
# define PCVT_BACKUP_FONTS 1 /* fonts are always kept memory-backed; */
#elif PCVT_BACKUP_FONTS != 0 /* otherwise copies are only made if */
# undef PCVT_BACKUP_FONTS /* they are needed. */
# define PCVT_BACKUP_FONTS 1
#endif
#ifndef PCVT_UPDATEFAST /* this is the rate at which the cursor */
# define PCVT_UPDATEFAST (hz/10) /* gets updated with its new position */
#endif /* see: async_update() in pcvt_sup.c */
#ifndef PCVT_UPDATESLOW /* this is the rate at which the cursor */
# define PCVT_UPDATESLOW 3 /* position display and the system load */
#endif /* (or the keyboard scancode display) */
/* is updated. the relation is: */
/* PCVT_UPDATEFAST/PCVT_UPDATESLOW */
#ifndef PCVT_SYSBEEPF /* timer chip value to be used for the */
# define PCVT_SYSBEEPF 1193182 /* sysbeep frequency value. */
#endif /* this should really go somewhere else,*/
/* e.g. in isa.h; but it used to be in */
/* each driver, sometimes even with */
/* different values (:-) */
#if !defined PCVT_SETCOLOR /* ---------- DEFAULT: OFF ------------ */
# define PCVT_SETCOLOR 0 /* enable making colors settable. this */
#elif PCVT_SETCOLOR != 0 /* introduces a new escape sequence */
# undef PCVT_SETCOLOR /* <ESC d> which is (i think) not */
# define PCVT_SETCOLOR 1 /* standardized, so this is an option */
#endif /* (Birthday present for Bruce ! :-) */
#if !defined PCVT_132GENERIC /* ---------- DEFAULT: OFF ------------ */
# define PCVT_132GENERIC 0 /* if you #define this, you enable */
#elif PCVT_132GENERIC != 0 /* EXPERIMENTAL (!!!!!!!!!!!!) */
# undef PCVT_132GENERIC /* USE-AT-YOUR-OWN-RISK, */
# define PCVT_132GENERIC 1 /* MAY-DAMAGE-YOUR-MONITOR */
#endif /* code to switch generic VGA boards/ */
/* chipsets to 132 column mode. Since */
/* i could not verify this option, i */
/* prefer to NOT generally enable this, */
/* if you want to play, look at the */
/* hints and the code in pcvt_sup.c and */
/* get in contact with Joerg Wunsch, who*/
/* submitted this code. Be careful !!! */
#if !defined PCVT_PALFLICKER /* ---------- DEFAULT: OFF ------------ */
# define PCVT_PALFLICKER 0 /* this option turns off the screen */
#elif PCVT_PALFLICKER != 0 /* during accesses to the VGA DAC */
# undef PCVT_PALFLICKER /* registers. why: on one fo the tested */
# define PCVT_PALFLICKER 1 /* pc's (WD-chipset), accesses to the */
#endif /* vga dac registers caused distortions */
/* on the screen. Ferraro says, one has */
/* to blank the screen. the method used */
/* to accomplish this stopped the noise */
/* but introduced another flicker, so */
/* this is for you to experiment ..... */
/* - see also PCVT_WAITRETRACE below -- */
#if !defined PCVT_WAITRETRACE /* ---------- DEFAULT: OFF ------------ */
# define PCVT_WAITRETRACE 0 /* this option waits for being in a */
#elif PCVT_WAITRETRACE != 0 /* retrace window prior to accessing */
# undef PCVT_WAITRETRACE /* the VGA DAC registers. */
# define PCVT_WAITRETRACE 1 /* this is the other method Ferraro */
#endif /* mentioned in his book. this option */
/* did eleminate the flicker noticably */
/* but not completely. besides that, it */
/* is implemented as a busy-wait loop */
/* which is a no-no-no in environments */
/* like this - VERY BAD PRACTICE !!!!! */
/* the other method implementing it is */
/* using the vertical retrace irq, but */
/* we get short of irq-lines on pc's. */
/* this is for you to experiment ..... */
/* -- see also PCVT_PALFLICKER above -- */
#if !defined PCVT_INHIBIT_NUMLOCK /* --------- DEFAULT: OFF ----------- */
# define PCVT_INHIBIT_NUMLOCK 0 /* A notebook hack: since i am getting */
#elif PCVT_INHIBIT_NUMLOCK != 0 /* tired of the numlock LED always */
# undef PCVT_INHIBIT_NUMLOCK /* being turned on - which causes the */
# define PCVT_INHIBIT_NUMLOCK 1 /* right half of my keyboard being */
#endif /* interpreted as a numeric keypad and */
/* thus going unusable - i want to */
/* have a better control over it. If */
/* this option is enabled, only the */
/* numlock key itself and the related */
/* ioctls will modify the numlock */
/* LED. (The ioctl is needed for the */
/* ServerNumLock feature of XFree86.) */
/* The default state is changed to */
/* numlock off, and the escape */
/* sequences to switch between numeric */
/* and application mode keypad are */
/* silently ignored. */
#if !defined PCVT_NOFASTSCROLL /* ---------- DEFAULT: OFF ------------ */
# define PCVT_NOFASTSCROLL 0 /* If off, enables code for fast scroll.*/
#elif PCVT_NOFASTSCROLL != 0 /* This is done by changing the CRTC */
# undef PCVT_NOFASTSCROLL /* screen start address for scrolling */
# define PCVT_NOFASTSCROLL 1 /* and using 2 times the screen size as */
#endif /* buffer. The fastscroll code works */
/* ONLY for VGA/EGA/CGA because it uses */
/* the crtc for hardware scrolling and */
/* therefore needs more than the one */
/* page video memory MDA and most */
/* Hercules boards support. */
/* If you run pcvt ONLY on MDA/Hercules */
/* you should disable fastscroll to save*/
/* the time to decide which board you */
/* are running pcvt on at runtime. */
/* [see roll_up() and roll_down().] */
#if !defined PCVT_SLOW_INTERRUPT/* ---------- DEFAULT: OFF ------------ */
# define PCVT_SLOW_INTERRUPT 0 /* If off, protecting critical regions */
#elif PCVT_SLOW_INTERRUPT != 0 /* in the keyboard fifo code is done by */
# undef PCVT_SLOW_INTERRUPT /* disabling the processor irq's, if on */
# define PCVT_SLOW_INTERRUPT 1 /* this is done by spl()/splx() calls. */
#endif
#ifdef XSERVER
#if !defined PCVT_USL_VT_COMPAT /* ---------- DEFAULT: ON ------------- */
# define PCVT_USL_VT_COMPAT 1 /* this option enables multiple virtual */
#elif PCVT_USL_VT_COMPAT != 0 /* screen support for XFree86. If set */
# undef PCVT_USL_VT_COMPAT /* to off, support for a "classic" */
# define PCVT_USL_VT_COMPAT 1 /* single screen only X server is */
#endif /* compiled in. If enabled, most of the */
/* ioctl's from SYSV/USL are supported */
/* to run multiple X servers and/or */
/* character terminal sessions. */
#endif /* XSERVER */
/*---------------------------------------------------------------------------*
* Kernel messages attribute definitions
* These define the foreground and background attributes used to
* emphasize messages from the kernel on color and mono displays.
*---------------------------------------------------------------------------*/
#if !defined COLOR_KERNEL_FG /* color displays */
#define COLOR_KERNEL_FG FG_LIGHTGREY /* kernel messages, foreground */
#endif
#if !defined COLOR_KERNEL_BG
#define COLOR_KERNEL_BG BG_RED /* kernel messages, background */
#endif
#if !defined MONO_KERNEL_FG /* monochrome displays */
#define MONO_KERNEL_FG FG_UNDERLINE /* kernel messages, foreground */
#endif
#if !defined MONO_KERNEL_BG
#define MONO_KERNEL_BG BG_BLACK /* kernel messages, background */
#endif
/*---------------------------------- E O F ----------------------------------*/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,567 +0,0 @@
/*
* Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
*
* Copyright (c) 1992, 1993 Brian Dunford-Shore and Holger Veit.
*
* All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* William Jolitz and Don Ahn.
*
* This code is derived from software contributed to 386BSD by
* Holger Veit.
*
* 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 and Joerg Wunsch.
* 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_kbd.h, 3.20, Last Edit-Date: [Sun Apr 2 18:59:08 1995]
*
*/
/*---------------------------------------------------------------------------*
*
* pcvt_kbd.h VT220 Driver Keyboard Interface Header
* ------------------------------------------------------
* -hm split off from pcvt_kbd.c
* -hm patch from Lon Willett to fix mapping of Control-R scancode
*
*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*
* this is one sub-entry for the table. the type can be either
* "pointer to a string" or "pointer to a function"
*---------------------------------------------------------------------------*/
typedef struct
{
u_char subtype; /* subtype, string or function */
#ifdef PCVT_ALT_ENH
u_short str_leng; /* if string, stringlength */
#endif
union what
{
u_char *string; /* ptr to string, null terminated */
void (*func)(void); /* ptr to function */
} what;
} entry;
/*---------------------------------------------------------------------------*
* this is the "outer" table
*---------------------------------------------------------------------------*/
typedef struct
{
u_short type; /* type of key */
u_short ovlindex; /* -hv- index into overload table */
entry unshift; /* normal default codes/funcs */
entry shift; /* shifted default codes/funcs */
entry ctrl; /* control default codes/funcs */
#ifdef PCVT_ALT_ENH
entry alt; /* normal default codes/funcs */
entry alt_shift; /* shifted default codes/funcs */
entry alt_ctrl; /* control default codes/funcs */
entry alt_ctrl_shift; /* normal default codes/funcs */
#endif
} Keycap_def;
#define IDX0 0 /* default indexvalue into ovl table */
#define STR KBD_SUBT_STR /* subtype = ptr to string */
#define FNC KBD_SUBT_FNC /* subtype = ptr to function */
#define CODE_SIZE 5
/*---------------------------------------------------------------------------*
* the overlaytable table is a static fixed size scratchpad where all the
* overloaded definitions are stored.
* an entry consists of a short (holding the new type attribute) and
* four entries for a new keydefinition.
*---------------------------------------------------------------------------*/
#define OVLTBL_SIZE 64 /* 64 keys can be overloaded */
#define Ovl_tbl struct kbd_ovlkey
static Ovl_tbl *ovltbl; /* the table itself */
static ovlinitflag = 0; /* the init flag for the table */
/*
* key codes >= 128 denote "virtual" shift/control
* They are resolved before any keymapping is handled
*/
#if PCVT_SCANSET == 2
static u_char scantokey[] = {
/* -0- -1- -2- -3- -4- -5- -6- -7- This layout is valid for US only */
/*00*/ 0,120, 0,116,114,112,113,123, /* ?? F9 ?? F5 F3 F1 F2 F12 */
/*08*/ 0,121,119,117,115, 16, 1, 0, /* ?? F10 F8 F6 F4 TAB ` ?? */
/*10*/ 0, 60, 44, 0, 58, 17, 2, 0, /* ?? ALl SHl ?? CTl Q 1 ?? */
/*18*/ 0, 0, 46, 32, 31, 18, 3, 0, /* ?? Z S A W 2 ?? ?? */
/*20*/ 0, 48, 47, 33, 19, 5, 4, 0, /* ?? C X D E 4 3 ?? */
/*28*/ 0, 61, 49, 34, 21, 20, 6, 0, /* ?? SP V F T R 5 ?? */
/*30*/ 0, 51, 50, 36, 35, 22, 7, 0, /* ?? N B H G Y 6 ?? */
/*38*/ 0, 0, 52, 37, 23, 8, 9, 0, /* ?? ?? M J U 7 8 ?? */
/*40*/ 0, 53, 38, 24, 25, 11, 10, 0, /* ?? , K I O 0 9 ?? */
/*48*/ 0, 54, 55, 39, 40, 26, 12, 0, /* ?? . / L ; P - ?? */
/*50*/ 0, 0, 41, 0, 27, 13, 0, 0, /* ?? ?? " ?? [ = ?? ?? */
/*58*/ 30, 57, 43, 28, 0, 29, 0, 0, /* CAP SHr ENT ] ?? \ ?? ?? */
/*60*/ 0, 45, 0, 0, 0, 0, 15, 0, /* ?? NL1 ?? ?? ?? ?? BS ?? */
/*68*/ 0, 93, 0, 92, 91, 0, 0, 0, /* ?? KP1 ?? KP4 KP7 ?? ?? ?? */
/*70*/ 99,104, 98, 97,102, 96,110, 90, /* KP0 KP. KP2 KP5 KP6 KP8 ESC NUM */
/*78*/ 122,106,103,105,100,101,125, 0, /* F11 KP+ KP3 KP- KP* KP9 LOC ?? */
/*80*/ 0, 0, 0,118,127 /* ?? ?? ?? F7 SyRQ */
};
static u_char extscantokey[] = {
/* -0- -1- -2- -3- -4- -5- -6- -7- This layout is valid for US only */
/*00*/ 0,120, 0,116,114,112,113,123, /* ?? F9 ?? F5 F3 F1 F2 F12 */
/*08*/ 0,121,119,117,115, 16, 1, 0, /* ?? F10 F8 F6 F4 TAB ` ?? */
/*10*/ 0, 62,128, 0, 64, 17, 2, 0, /* ?? ALr vSh ?? CTr Q 1 ?? */
/*18*/ 0, 0, 46, 32, 31, 18, 3, 0, /* ?? Z S A W 2 ?? ?? */
/*20*/ 0, 48, 47, 33, 19, 5, 4, 0, /* ?? C X D E 4 3 ?? */
/*28*/ 0, 61, 49, 34, 21, 20, 6, 0, /* ?? SP V F T R 5 ?? */
/*30*/ 0, 51, 50, 36, 35, 22, 7, 0, /* ?? N B H G Y 6 ?? */
/*38*/ 0, 0, 52, 37, 23, 8, 9, 0, /* ?? ?? M J U 7 8 ?? */
/*40*/ 0, 53, 38, 24, 25, 11, 10, 0, /* ?? , K I O 0 9 ?? */
/*48*/ 0, 54, 95, 39, 40, 26, 12, 0, /* ?? . KP/ L ; P - ?? */
/*50*/ 0, 0, 41, 0, 27, 13, 0, 0, /* ?? ?? " ?? [ = ?? ?? */
/*58*/ 30, 57,108, 28, 0, 29, 0, 0, /* CAP SHr KPE ] ?? \ ?? ?? */
/*60*/ 0, 45, 0, 0, 0, 0, 15, 0, /* ?? NL1 ?? ?? ?? ?? BS ?? */
/*68*/ 0, 81, 0, 79, 80, 0, 0, 0, /* ?? END ?? LA HOM ?? ?? ?? */
/*70*/ 75, 76, 84, 97, 89, 83,110, 90, /* INS DEL DA KP5 RA UA ESC NUM */
/*78*/ 122,106, 86,105,124, 85,126, 0, /* F11 KP+ PD KP- PSc PU Brk ?? */
/*80*/ 0, 0, 0,118,127 /* ?? ?? ?? F7 SysRq */
};
#else /* PCVT_SCANSET != 2 */
static u_char scantokey[] = {
/* -0- -1- -2- -3- -4- -5- -6- -7- This layout is valid for US only */
/*00*/ 0,110, 2, 3, 4, 5, 6, 7, /* ?? ESC 1 2 3 4 5 6 */
/*08*/ 8, 9, 10, 11, 12, 13, 15, 16, /* 7 8 9 0 - = BS TAB */
/*10*/ 17, 18, 19, 20, 21, 22, 23, 24, /* Q W E R T Y U I */
/*18*/ 25, 26, 27, 28, 43, 58, 31, 32, /* O P [ ] ENT CTl A S */
/*20*/ 33, 34, 35, 36, 37, 38, 39, 40, /* D F G H J K L ; */
/*28*/ 41, 1, 44, 29, 46, 47, 48, 49, /* ' ` SHl \ Z X C V */
/*30*/ 50, 51, 52, 53, 54, 55, 57,100, /* B N M , . / SHr KP* */
/*38*/ 60, 61, 30,112,113,114,115,116, /* ALl SP CAP F1 F2 F3 F4 F5 */
/*40*/ 117,118,119,120,121, 90,125, 91, /* F6 F7 F8 F9 F10 NUM LOC KP7 */
/*48*/ 96,101,105, 92, 97,102,106, 93, /* KP8 KP9 KP- KP4 KP5 KP6 KP+ KP1 */
/*50*/ 98,103, 99,104,127, 0, 45,122, /* KP2 KP3 KP0 KP. SyRq?? NL1 F11 */
/*58*/ 123 /* F12 */
};
static u_char extscantokey[] = {
/* -0- -1- -2- -3- -4- -5- -6- -7- This layout is valid for US only */
/*00*/ 0,110, 2, 3, 4, 5, 6, 7, /* ?? ESC 1 2 3 4 5 6 */
/*08*/ 8, 9, 10, 11, 12, 13, 15, 16, /* 7 8 9 0 - = BS TAB */
/*10*/ 17, 18, 19, 20, 21, 22, 23, 24, /* Q W E R T Y U I */
/*18*/ 25, 26, 27, 28,108, 64, 31, 32, /* O P [ ] KPE CTr A S */
/*20*/ 33, 34, 35, 36, 37, 38, 39, 40, /* D F G H J K L ; */
/*28*/ 41, 1,128, 29, 46, 47, 48, 49, /* ' ` vSh \ Z X C V */
/*30*/ 50, 51, 52, 53, 54, 95, 57,124, /* B N M , . KP/ SHr KP* */
/*38*/ 62, 61, 30,112,113,114,115,116, /* ALr SP CAP F1 F2 F3 F4 F5 */
/*40*/ 117,118,119,120,121, 90,126, 80, /* F6 F7 F8 F9 F10 NUM Brk HOM */
/*48*/ 83, 85,105, 79, 97, 89,106, 81, /* UA PU KP- LA KP5 RA KP+ END */
/*50*/ 84, 86, 75, 76, 0, 0, 45,122, /* DA PD INS DEL ?? ?? NL1 F11 */
/*58*/ 123, /* F12 */
};
#endif /* PCVT_SCANSET == 2 */
static Keycap_def key2ascii[] =
{
#ifdef PCVT_ALT_ENH
#define C (u_char *)
#define U (u_short)
#define V (void *)
#define S STR
#define F FNC
#define I IDX0
#define DFAULT {S, 0, C ""}
/* DONT EVER OVERLOAD KEY 0, THIS IS A KEY THAT MUSTN'T EXIST */
/* type index unshift shift ctrl alt alt_shift alt_ctrl alt_ctrl_shift */
/* -------------------------------------------------------------------------------------------------------------------------------------------------- */
/* 0*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 1*/ KBD_ASCII, I, {S,1,C "`"}, {S,1,C "~"}, {S,1,C "`"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 2*/ KBD_ASCII, I, {S,1,C "1"}, {S,1,C "!"}, {S,1,C "1"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 3*/ KBD_ASCII, I, {S,1,C "2"}, {S,1,C "@"}, {S,1,C "\000"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 4*/ KBD_ASCII, I, {S,1,C "3"}, {S,1,C "#"}, {S,1,C "3"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 5*/ KBD_ASCII, I, {S,1,C "4"}, {S,1,C "$"}, {S,1,C "4"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 6*/ KBD_ASCII, I, {S,1,C "5"}, {S,1,C "%"}, {S,1,C "5"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 7*/ KBD_ASCII, I, {S,1,C "6"}, {S,1,C "^"}, {S,1,C "\036"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 8*/ KBD_ASCII, I, {S,1,C "7"}, {S,1,C "&"}, {S,1,C "7"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 9*/ KBD_ASCII, I, {S,1,C "8"}, {S,1,C "*"}, {S,1,C "9"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 10*/ KBD_ASCII, I, {S,1,C "9"}, {S,1,C "("}, {S,1,C "9"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 11*/ KBD_ASCII, I, {S,1,C "0"}, {S,1,C ")"}, {S,1,C "0"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 12*/ KBD_ASCII, I, {S,1,C "-"}, {S,1,C "_"}, {S,1,C "\037"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 13*/ KBD_ASCII, I, {S,1,C "="}, {S,1,C "+"}, {S,1,C "="}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 14*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 15*/ KBD_ASCII, I, {S,1,C "\177"}, {S,1,C "\010"}, {S,1,C "\177"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 16*/ KBD_ASCII, I, {S,1,C "\t"}, {S,1,C "\t"}, {S,1,C "\t"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 17*/ KBD_ASCII, I, {S,1,C "q"}, {S,1,C "Q"}, {S,1,C "\021"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 18*/ KBD_ASCII, I, {S,1,C "w"}, {S,1,C "W"}, {S,1,C "\027"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 19*/ KBD_ASCII, I, {S,1,C "e"}, {S,1,C "E"}, {S,1,C "\005"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 20*/ KBD_ASCII, I, {S,1,C "r"}, {S,1,C "R"}, {S,1,C "\022"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 21*/ KBD_ASCII, I, {S,1,C "t"}, {S,1,C "T"}, {S,1,C "\024"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 22*/ KBD_ASCII, I, {S,1,C "y"}, {S,1,C "Y"}, {S,1,C "\031"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 23*/ KBD_ASCII, I, {S,1,C "u"}, {S,1,C "U"}, {S,1,C "\025"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 24*/ KBD_ASCII, I, {S,1,C "i"}, {S,1,C "I"}, {S,1,C "\011"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 25*/ KBD_ASCII, I, {S,1,C "o"}, {S,1,C "O"}, {S,1,C "\017"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 26*/ KBD_ASCII, I, {S,1,C "p"}, {S,1,C "P"}, {S,1,C "\020"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 27*/ KBD_ASCII, I, {S,1,C "["}, {S,1,C "{"}, {S,1,C "\033"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 28*/ KBD_ASCII, I, {S,1,C "]"}, {S,1,C "}"}, {S,1,C "\035"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 29*/ KBD_ASCII, I, {S,1,C "\\"}, {S,1,C "|"}, {S,1,C "\034"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 30*/ KBD_CAPS, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 31*/ KBD_ASCII, I, {S,1,C "a"}, {S,1,C "A"}, {S,1,C "\001"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 32*/ KBD_ASCII, I, {S,1,C "s"}, {S,1,C "S"}, {S,1,C "\023"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 33*/ KBD_ASCII, I, {S,1,C "d"}, {S,1,C "D"}, {S,1,C "\004"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 34*/ KBD_ASCII, I, {S,1,C "f"}, {S,1,C "F"}, {S,1,C "\006"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 35*/ KBD_ASCII, I, {S,1,C "g"}, {S,1,C "G"}, {S,1,C "\007"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 36*/ KBD_ASCII, I, {S,1,C "h"}, {S,1,C "H"}, {S,1,C "\010"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 37*/ KBD_ASCII, I, {S,1,C "j"}, {S,1,C "J"}, {S,1,C "\n"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 38*/ KBD_ASCII, I, {S,1,C "k"}, {S,1,C "K"}, {S,1,C "\013"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 39*/ KBD_ASCII, I, {S,1,C "l"}, {S,1,C "L"}, {S,1,C "\014"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 40*/ KBD_ASCII, I, {S,1,C ";"}, {S,1,C ":"}, {S,1,C ";"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 41*/ KBD_ASCII, I, {S,1,C "'"}, {S,1,C "\""}, {S,1,C "'"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 42*/ KBD_ASCII, I, {S,1,C "\\"}, {S,1,C "|"}, {S,1,C "\034"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 43*/ KBD_RETURN,I, {S,1,C "\r"}, {S,1,C "\r"}, {S,1,C "\r"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 44*/ KBD_SHIFT, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 45*/ KBD_ASCII, I, {S,1,C "<"}, {S,1,C ">"}, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 46*/ KBD_ASCII, I, {S,1,C "z"}, {S,1,C "Z"}, {S,1,C "\032"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 47*/ KBD_ASCII, I, {S,1,C "x"}, {S,1,C "X"}, {S,1,C "\030"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 48*/ KBD_ASCII, I, {S,1,C "c"}, {S,1,C "C"}, {S,1,C "\003"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 49*/ KBD_ASCII, I, {S,1,C "v"}, {S,1,C "V"}, {S,1,C "\026"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 50*/ KBD_ASCII, I, {S,1,C "b"}, {S,1,C "B"}, {S,1,C "\002"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 51*/ KBD_ASCII, I, {S,1,C "n"}, {S,1,C "N"}, {S,1,C "\016"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 52*/ KBD_ASCII, I, {S,1,C "m"}, {S,1,C "M"}, {S,1,C "\r"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 53*/ KBD_ASCII, I, {S,1,C ","}, {S,1,C "<"}, {S,1,C ","}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 54*/ KBD_ASCII, I, {S,1,C "."}, {S,1,C ">"}, {S,1,C "."}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 55*/ KBD_ASCII, I, {S,1,C "/"}, {S,1,C "?"}, {S,1,C "/"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 56*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 57*/ KBD_SHIFT, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 58*/ KBD_CTL, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 59*/ KBD_ASCII, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 60*/ KBD_META, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
#if !PCVT_NULLCHARS
/* 61*/ KBD_ASCII, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
#else
/* 61*/ KBD_ASCII, I, DFAULT, DFAULT, {S,1,C "\000"}, DFAULT, DFAULT, DFAULT, DFAULT,
#endif /* PCVT_NULLCHARS */
/* 62*/ KBD_META, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 63*/ KBD_ASCII, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 64*/ KBD_CTL, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 65*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 66*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 67*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 68*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 69*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 70*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 71*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 72*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 73*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 74*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 75*/ KBD_FUNC, I, {S,4,C "\033[2~"}, {S,4,C "\033[2~"}, {S,4,C "\033[2~"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 76*/ KBD_FUNC, I, {S,4,C "\033[3~"}, {S,4,C "\033[3~"}, {S,4,C "\033[3~"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 77*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 78*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 79*/ KBD_CURSOR,I, {S,4,C "\033[D"}, {S,4,C "\033OD"}, {S,4,C "\033[D"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 80*/ KBD_FUNC, I, {S,4,C "\033[1~"}, {S,4,C "\033[1~"}, {S,4,C "\033[1~"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 81*/ KBD_FUNC, I, {S,4,C "\033[4~"}, {S,4,C "\033[4~"}, {S,4,C "\033[4~"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 82*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 83*/ KBD_CURSOR,I, {S,4,C "\033[A"}, {S,4,C "\033OA"}, {S,4,C "\033[A"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 84*/ KBD_CURSOR,I, {S,4,C "\033[B"}, {S,4,C "\033OB"}, {S,4,C "\033[B"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 85*/ KBD_FUNC, I, {S,4,C "\033[5~"}, {S,4,C "\033[5~"}, {S,4,C "\033[5~"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 86*/ KBD_FUNC, I, {S,4,C "\033[6~"}, {S,4,C "\033[6~"}, {S,4,C "\033[6~"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 87*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 88*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 89*/ KBD_CURSOR,I, {S,3,C "\033[C"}, {S,3,C "\033OC"}, {S,3,C "\033[C"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 90*/ KBD_NUM, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 91*/ KBD_KP, I, {S,1,C "7"}, {S,2,C "\033Ow"}, {S,1,C "7"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 92*/ KBD_KP, I, {S,1,C "4"}, {S,2,C "\033Ot"}, {S,1,C "4"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 93*/ KBD_KP, I, {S,1,C "1"}, {S,2,C "\033Oq"}, {S,1,C "1"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 94*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/* 95*/ KBD_KP, I, {S,1,C "/"}, {S,1,C "/"}, {S,1,C "/"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 96*/ KBD_KP, I, {S,1,C "8"}, {S,2,C "\033Ox"}, {S,1,C "8"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 97*/ KBD_KP, I, {S,1,C "5"}, {S,2,C "\033Ou"}, {S,1,C "5"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 98*/ KBD_KP, I, {S,1,C "2"}, {S,2,C "\033Or"}, {S,1,C "2"}, DFAULT, DFAULT, DFAULT, DFAULT,
/* 99*/ KBD_KP, I, {S,1,C "0"}, {S,2,C "\033Op"}, {S,1,C "0"}, DFAULT, DFAULT, DFAULT, DFAULT,
/*100*/ KBD_KP, I, {S,1,C "*"}, {S,1,C "*"}, {S,1,C "*"}, DFAULT, DFAULT, DFAULT, DFAULT,
/*101*/ KBD_KP, I, {S,1,C "9"}, {S,2,C "\033Oy"}, {S,1,C "9"}, DFAULT, DFAULT, DFAULT, DFAULT,
/*102*/ KBD_KP, I, {S,1,C "6"}, {S,2,C "\033Ov"}, {S,1,C "6"}, DFAULT, DFAULT, DFAULT, DFAULT,
/*103*/ KBD_KP, I, {S,1,C "3"}, {S,2,C "\033Os"}, {S,1,C "3"}, DFAULT, DFAULT, DFAULT, DFAULT,
/*104*/ KBD_KP, I, {S,1,C "."}, {S,2,C "\033On"}, {S,1,C "."}, DFAULT, DFAULT, DFAULT, DFAULT,
/*105*/ KBD_KP, I, {S,1,C "-"}, {S,2,C "\033Om"}, {S,1,C "-"}, DFAULT, DFAULT, DFAULT, DFAULT,
/*106*/ KBD_KP, I, {S,1,C "+"}, {S,1,C "+"}, {S,1,C "+"}, DFAULT, DFAULT, DFAULT, DFAULT,
/*107*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/*108*/ KBD_RETURN,I, {S,1,C "\r"}, {S,2,C "\033OM"}, {S,1,C "\r"}, DFAULT, DFAULT, DFAULT, DFAULT,
/*109*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/*110*/ KBD_ASCII, I, {S,1,C "\033"}, {S,2,C "\033"}, {S,1,C "\033"}, DFAULT, DFAULT, DFAULT, DFAULT,
/*111*/ KBD_NONE, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/*112*/ KBD_FUNC, I, {F,0,V fkey1}, {F,0,V sfkey1}, {F,0,V cfkey1}, DFAULT, DFAULT, DFAULT, DFAULT,
/*113*/ KBD_FUNC, I, {F,0,V fkey2}, {F,0,V sfkey2}, {F,0,V cfkey2}, DFAULT, DFAULT, DFAULT, DFAULT,
/*114*/ KBD_FUNC, I, {F,0,V fkey3}, {F,0,V sfkey3}, {F,0,V cfkey3}, DFAULT, DFAULT, DFAULT, DFAULT,
/*115*/ KBD_FUNC, I, {F,0,V fkey4}, {F,0,V sfkey4}, {F,0,V cfkey4}, DFAULT, DFAULT, DFAULT, DFAULT,
/*116*/ KBD_FUNC, I, {F,0,V fkey5}, {F,0,V sfkey5}, {F,0,V cfkey5}, DFAULT, DFAULT, DFAULT, DFAULT,
/*117*/ KBD_FUNC, I, {F,0,V fkey6}, {F,0,V sfkey6}, {F,0,V cfkey6}, DFAULT, DFAULT, DFAULT, DFAULT,
/*118*/ KBD_FUNC, I, {F,0,V fkey7}, {F,0,V sfkey7}, {F,0,V cfkey7}, DFAULT, DFAULT, DFAULT, DFAULT,
/*119*/ KBD_FUNC, I, {F,0,V fkey8}, {F,0,V sfkey8}, {F,0,V cfkey8}, DFAULT, DFAULT, DFAULT, DFAULT,
/*120*/ KBD_FUNC, I, {F,0,V fkey9}, {F,0,V sfkey9}, {F,0,V cfkey9}, DFAULT, DFAULT, DFAULT, DFAULT,
/*121*/ KBD_FUNC, I, {F,0,V fkey10}, {F,0,V sfkey10}, {F,0,V cfkey10}, DFAULT, DFAULT, DFAULT, DFAULT,
/*122*/ KBD_FUNC, I, {F,0,V fkey11}, {F,0,V sfkey11}, {F,0,V cfkey11}, DFAULT, DFAULT, DFAULT, DFAULT,
/*123*/ KBD_FUNC, I, {F,0,V fkey12}, {F,0,V sfkey12}, {F,0,V cfkey12}, DFAULT, DFAULT, DFAULT, DFAULT,
/*124*/ KBD_KP, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/*125*/ KBD_SCROLL,I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/*126*/ KBD_BREAK, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
/*127*/ KBD_FUNC, I, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT, DFAULT,
#undef C
#undef U
#undef V
#undef S
#undef F
#undef I
#undef DFLT
};
#else /* PCVT_ALT_ENH */
/* define some shorthands to make the table (almost) fit into 80 columns */
#define C (u_char *)
#define V (void *)
#define S STR
#define F FNC
#define I IDX0
/* DONT EVER OVERLOAD KEY 0, THIS IS A KEY THAT MUSTN'T EXIST */
/* type index unshift shift ctrl */
/* ---------------------------------------------------------- */
/* 0*/ KBD_NONE, I, {S,C "df"}, {S,C ""}, {S,C ""},
/* 1*/ KBD_ASCII, I, {S,C "`"}, {S,C "~"}, {S,C "`"},
/* 2*/ KBD_ASCII, I, {S,C "1"}, {S,C "!"}, {S,C "1"},
/* 3*/ KBD_ASCII, I, {S,C "2"}, {S,C "@"}, {S,C "\000"},
/* 4*/ KBD_ASCII, I, {S,C "3"}, {S,C "#"}, {S,C "3"},
/* 5*/ KBD_ASCII, I, {S,C "4"}, {S,C "$"}, {S,C "4"},
/* 6*/ KBD_ASCII, I, {S,C "5"}, {S,C "%"}, {S,C "5"},
/* 7*/ KBD_ASCII, I, {S,C "6"}, {S,C "^"}, {S,C "\036"},
/* 8*/ KBD_ASCII, I, {S,C "7"}, {S,C "&"}, {S,C "7"},
/* 9*/ KBD_ASCII, I, {S,C "8"}, {S,C "*"}, {S,C "8"},
/* 10*/ KBD_ASCII, I, {S,C "9"}, {S,C "("}, {S,C "9"},
/* 11*/ KBD_ASCII, I, {S,C "0"}, {S,C ")"}, {S,C "0"},
/* 12*/ KBD_ASCII, I, {S,C "-"}, {S,C "_"}, {S,C "\037"},
/* 13*/ KBD_ASCII, I, {S,C "="}, {S,C "+"}, {S,C "="},
/* 14*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 15*/ KBD_ASCII, I, {S,C "\177"}, {S,C "\010"}, {S,C "\177"}, /* BS */
/* 16*/ KBD_ASCII, I, {S,C "\t"}, {S,C "\t"}, {S,C "\t"}, /* TAB */
/* 17*/ KBD_ASCII, I, {S,C "q"}, {S,C "Q"}, {S,C "\021"},
/* 18*/ KBD_ASCII, I, {S,C "w"}, {S,C "W"}, {S,C "\027"},
/* 19*/ KBD_ASCII, I, {S,C "e"}, {S,C "E"}, {S,C "\005"},
/* 20*/ KBD_ASCII, I, {S,C "r"}, {S,C "R"}, {S,C "\022"},
/* 21*/ KBD_ASCII, I, {S,C "t"}, {S,C "T"}, {S,C "\024"},
/* 22*/ KBD_ASCII, I, {S,C "y"}, {S,C "Y"}, {S,C "\031"},
/* 23*/ KBD_ASCII, I, {S,C "u"}, {S,C "U"}, {S,C "\025"},
/* 24*/ KBD_ASCII, I, {S,C "i"}, {S,C "I"}, {S,C "\011"},
/* 25*/ KBD_ASCII, I, {S,C "o"}, {S,C "O"}, {S,C "\017"},
/* 26*/ KBD_ASCII, I, {S,C "p"}, {S,C "P"}, {S,C "\020"},
/* 27*/ KBD_ASCII, I, {S,C "["}, {S,C "{"}, {S,C "\033"},
/* 28*/ KBD_ASCII, I, {S,C "]"}, {S,C "}"}, {S,C "\035"},
/* 29*/ KBD_ASCII, I, {S,C "\\"}, {S,C "|"}, {S,C "\034"},
/* 30*/ KBD_CAPS, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 31*/ KBD_ASCII, I, {S,C "a"}, {S,C "A"}, {S,C "\001"},
/* 32*/ KBD_ASCII, I, {S,C "s"}, {S,C "S"}, {S,C "\023"},
/* 33*/ KBD_ASCII, I, {S,C "d"}, {S,C "D"}, {S,C "\004"},
/* 34*/ KBD_ASCII, I, {S,C "f"}, {S,C "F"}, {S,C "\006"},
/* 35*/ KBD_ASCII, I, {S,C "g"}, {S,C "G"}, {S,C "\007"},
/* 36*/ KBD_ASCII, I, {S,C "h"}, {S,C "H"}, {S,C "\010"},
/* 37*/ KBD_ASCII, I, {S,C "j"}, {S,C "J"}, {S,C "\n"},
/* 38*/ KBD_ASCII, I, {S,C "k"}, {S,C "K"}, {S,C "\013"},
/* 39*/ KBD_ASCII, I, {S,C "l"}, {S,C "L"}, {S,C "\014"},
/* 40*/ KBD_ASCII, I, {S,C ";"}, {S,C ":"}, {S,C ";"},
/* 41*/ KBD_ASCII, I, {S,C "'"}, {S,C "\""}, {S,C "'"},
/* 42*/ KBD_ASCII, I, {S,C "\\"}, {S,C "|"}, {S,C "\034"}, /* special */
/* 43*/ KBD_RETURN,I, {S,C "\r"}, {S,C "\r"}, {S,C "\r"}, /* RETURN */
/* 44*/ KBD_SHIFT, I, {S,C ""}, {S,C ""}, {S,C ""}, /* SHIFT left */
/* 45*/ KBD_ASCII, I, {S,C "<"}, {S,C ">"}, {S,C ""},
/* 46*/ KBD_ASCII, I, {S,C "z"}, {S,C "Z"}, {S,C "\032"},
/* 47*/ KBD_ASCII, I, {S,C "x"}, {S,C "X"}, {S,C "\030"},
/* 48*/ KBD_ASCII, I, {S,C "c"}, {S,C "C"}, {S,C "\003"},
/* 49*/ KBD_ASCII, I, {S,C "v"}, {S,C "V"}, {S,C "\026"},
/* 50*/ KBD_ASCII, I, {S,C "b"}, {S,C "B"}, {S,C "\002"},
/* 51*/ KBD_ASCII, I, {S,C "n"}, {S,C "N"}, {S,C "\016"},
/* 52*/ KBD_ASCII, I, {S,C "m"}, {S,C "M"}, {S,C "\r"},
/* 53*/ KBD_ASCII, I, {S,C ","}, {S,C "<"}, {S,C ","},
/* 54*/ KBD_ASCII, I, {S,C "."}, {S,C ">"}, {S,C "."},
/* 55*/ KBD_ASCII, I, {S,C "/"}, {S,C "?"}, {S,C "/"},
/* 56*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 57*/ KBD_SHIFT, I, {S,C ""}, {S,C ""}, {S,C ""}, /* SHIFT right */
/* 58*/ KBD_CTL, I, {S,C ""}, {S,C ""}, {S,C ""}, /* CTL left */
/* 59*/ KBD_ASCII, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 60*/ KBD_META, I, {S,C ""}, {S,C ""}, {S,C ""}, /* ALT left */
#if !PCVT_NULLCHARS
/* 61*/ KBD_ASCII, I, {S,C " "}, {S,C " "}, {S,C " "}, /* SPACE */
#else
/* 61*/ KBD_ASCII, I, {S,C " "}, {S,C " "}, {S,C "\000"}, /* SPACE */
#endif /* PCVT_NULLCHARS */
/* 62*/ KBD_META, I, {S,C ""}, {S,C ""}, {S,C ""}, /* ALT right */
/* 63*/ KBD_ASCII, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 64*/ KBD_CTL, I, {S,C ""}, {S,C ""}, {S,C ""}, /* CTL right */
/* 65*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 66*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 67*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 68*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 69*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 70*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 71*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 72*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 73*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 74*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 75*/ KBD_FUNC, I, {S,C "\033[2~"},{S,C "\033[2~"},{S,C "\033[2~"},/* INS */
/* 76*/ KBD_FUNC, I, {S,C "\033[3~"},{S,C "\033[3~"},{S,C "\033[3~"},/* DEL */
/* 77*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 78*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 79*/ KBD_CURSOR,I, {S,C "\033[D"},{S,C "\033OD"},{S,C "\033[D"}, /* CU <- */
/* 80*/ KBD_FUNC, I, {S,C "\033[1~"},{S,C "\033[1~"},{S,C "\033[1~"},/* HOME = FIND*/
/* 81*/ KBD_FUNC, I, {S,C "\033[4~"},{S,C "\033[4~"},{S,C "\033[4~"},/* END = SELECT */
/* 82*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 83*/ KBD_CURSOR,I, {S,C "\033[A"},{S,C "\033OA"},{S,C "\033[A"}, /* CU ^ */
/* 84*/ KBD_CURSOR,I, {S,C "\033[B"},{S,C "\033OB"},{S,C "\033[B"}, /* CU v */
/* 85*/ KBD_FUNC, I, {S,C "\033[5~"},{S,C "\033[5~"},{S,C "\033[5~"},/*PG UP*/
/* 86*/ KBD_FUNC, I, {S,C "\033[6~"},{S,C "\033[6~"},{S,C "\033[6~"},/*PG DN*/
/* 87*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 88*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 89*/ KBD_CURSOR,I, {S,C "\033[C"},{S,C "\033OC"},{S,C "\033[C"}, /* CU -> */
/* 90*/ KBD_NUM, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 91*/ KBD_KP, I, {S,C "7"}, {S,C "\033Ow"},{S,C "7"},
/* 92*/ KBD_KP, I, {S,C "4"}, {S,C "\033Ot"},{S,C "4"},
/* 93*/ KBD_KP, I, {S,C "1"}, {S,C "\033Oq"},{S,C "1"},
/* 94*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/* 95*/ KBD_KP, I, {S,C "/"}, {S,C "/"}, {S,C "/"},
/* 96*/ KBD_KP, I, {S,C "8"}, {S,C "\033Ox"},{S,C "8"},
/* 97*/ KBD_KP, I, {S,C "5"}, {S,C "\033Ou"},{S,C "5"},
/* 98*/ KBD_KP, I, {S,C "2"}, {S,C "\033Or"},{S,C "2"},
/* 99*/ KBD_KP, I, {S,C "0"}, {S,C "\033Op"},{S,C "0"},
/*100*/ KBD_KP, I, {S,C "*"}, {S,C "*"}, {S,C "*"},
/*101*/ KBD_KP, I, {S,C "9"}, {S,C "\033Oy"},{S,C "9"},
/*102*/ KBD_KP, I, {S,C "6"}, {S,C "\033Ov"},{S,C "6"},
/*103*/ KBD_KP, I, {S,C "3"}, {S,C "\033Os"},{S,C "3"},
/*104*/ KBD_KP, I, {S,C "."}, {S,C "\033On"},{S,C "."},
/*105*/ KBD_KP, I, {S,C "-"}, {S,C "\033Om"},{S,C "-"},
/*106*/ KBD_KP, I, {S,C "+"}, {S,C "+"}, {S,C "+"},
/*107*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/*108*/ KBD_RETURN,I, {S,C "\r"}, {S,C "\033OM"},{S,C "\r"}, /* KP ENTER */
/*109*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/*110*/ KBD_ASCII, I, {S,C "\033"}, {S,C "\033"}, {S,C "\033"},
/*111*/ KBD_NONE, I, {S,C ""}, {S,C ""}, {S,C ""},
/*112*/ KBD_FUNC, I, {F,V fkey1}, {F,V sfkey1}, {F,V cfkey1}, /* F1 */
/*113*/ KBD_FUNC, I, {F,V fkey2}, {F,V sfkey2}, {F,V cfkey2}, /* F2 */
/*114*/ KBD_FUNC, I, {F,V fkey3}, {F,V sfkey3}, {F,V cfkey3}, /* F3 */
/*115*/ KBD_FUNC, I, {F,V fkey4}, {F,V sfkey4}, {F,V cfkey4}, /* F4 */
/*116*/ KBD_FUNC, I, {F,V fkey5}, {F,V sfkey5}, {F,V cfkey5}, /* F5 */
/*117*/ KBD_FUNC, I, {F,V fkey6}, {F,V sfkey6}, {F,V cfkey6}, /* F6 */
/*118*/ KBD_FUNC, I, {F,V fkey7}, {F,V sfkey7}, {F,V cfkey7}, /* F7 */
/*119*/ KBD_FUNC, I, {F,V fkey8}, {F,V sfkey8}, {F,V cfkey8}, /* F8 */
/*120*/ KBD_FUNC, I, {F,V fkey9}, {F,V sfkey9}, {F,V cfkey9}, /* F9 */
/*121*/ KBD_FUNC, I, {F,V fkey10}, {F,V sfkey10}, {F,V cfkey10}, /* F10 */
/*122*/ KBD_FUNC, I, {F,V fkey11}, {F,V sfkey11}, {F,V cfkey11}, /* F11 */
/*123*/ KBD_FUNC, I, {F,V fkey12}, {F,V sfkey12}, {F,V cfkey12}, /* F12 */
/*124*/ KBD_KP, I, {S,C ""}, {S,C ""}, {S,C ""},
/*125*/ KBD_SCROLL,I, {S,C ""}, {S,C ""}, {S,C ""},
/*126*/ KBD_BREAK, I, {S,C ""}, {S,C ""}, {S,C ""},
/*127*/ KBD_FUNC, I, {S,C ""}, {S,C ""}, {S,C ""}, /* SysRq */
#undef C
#undef V
#undef S
#undef F
#undef I
};
#endif /* PCVT_ALT_ENH */
static short keypad2num[] = {
7, 4, 1, -1, -1, 8, 5, 2, 0, -1, 9, 6, 3, -1, -1, -1, -1
};
#if PCVT_USL_VT_COMPAT
#define N_KEYNUMS 128
/*
* this is the reverse mapping from keynumbers to scanset 1 codes
* it is used to emulate the SysV-style GIO_KEYMAP ioctl cmd
*/
static u_char key2scan1[N_KEYNUMS] = {
0,0x29,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, /* 0 */
0x0a,0x0b,0x0c,0x0d, 0,0x0e,0x0f,0x10,0x11,0x12, /* 10 */
0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x2b, /* 20 */
0x3a,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26, /* 30 */
0x27,0x28, 0,0x1c,0x2a,0x56,0x2c,0x2d,0x2e,0x2f, /* 40 */
0x30,0x31,0x32,0x33,0x34,0x35,0x56,0x36,0x1d, 0, /* 50 */
0x38,0x39, 0, 0, 0, 0, 0, 0, 0, 0, /* 60 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 70 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 80 */
0x45,0x47,0x4b,0x4f, 0, 0,0x48,0x4c,0x50,0x52, /* 90 */
0x37,0x49,0x4d,0x51,0x53,0x4a,0x4e, 0, 0, 0, /* 100 */
0x01, 0,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42, /* 110 */
0x43,0x44,0x57,0x58, 0,0x46, 0,0x54 /* 120 */
};
/*
* SysV is brain-dead enough to stick on the IBM code page 437. So we
* have to translate our keymapping into IBM 437 (possibly losing keys),
* in order to have the X server convert it back into ISO8859.1
*/
/* NB: this table only contains the mapping for codes >= 128 */
static u_char iso2ibm437[] =
{
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0xff, 0xad, 0x9b, 0x9c, 0, 0x9d, 0, 0x40,
0x6f, 0x63, 0x61, 0xae, 0, 0, 0, 0,
0xf8, 0xf1, 0xfd, 0x33, 0, 0xe6, 0, 0xfa,
0, 0x31, 0x6f, 0xaf, 0xac, 0xab, 0, 0xa8,
0x41, 0x41, 0x41, 0x41, 0x8e, 0x8f, 0x92, 0x80,
0x45, 0x90, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
0x81, 0xa5, 0x4f, 0x4f, 0x4f, 0x4f, 0x99, 0x4f,
0x4f, 0x55, 0x55, 0x55, 0x9a, 0x59, 0, 0xe1,
0x85, 0xa0, 0x83, 0x61, 0x84, 0x86, 0x91, 0x87,
0x8a, 0x82, 0x88, 0x89, 0x8d, 0xa1, 0x8c, 0x8b,
0, 0xa4, 0x95, 0xa2, 0x93, 0x6f, 0x94, 0x6f,
0x6f, 0x97, 0xa3, 0x96, 0x81, 0x98, 0, 0
};
#endif /* PCVT_USL_VT_COMPAT */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,475 +0,0 @@
/*
* Copyright (c) 1992, 1995 Hellmuth Michaelis.
*
* 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
* 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_tbl.h, 3.20, Last Edit-Date: [Sun Apr 2 18:59:19 1995]
*
*/
/*---------------------------------------------------------------------------*
*
* pcvt_tbl.h VT220 Driver Character Set Conversion Tables
* ------------------------------------------------------------
* -hm splitting off pccons_out.c
* -hm default tables for pure mda/hcg/cga
*
* in pcvt_out.c, hooks are provided for the following charactersets:
*
* HAVECS_BRITISH
* HAVECS_ASCII
* HAVECS_FINNISH
* HAVECS_NORWEGIANDANISH
* HAVECS_SWEDISH
* HAVECS_GERMAN
* HAVECS_FRENCHCANADA
* HAVECS_FRENCH
* HAVECS_ITALIAN
* HAVECS_SPANISH
* HAVECS_SPECIAL
* HAVECS_ALTERNATEROM1
* HAVECS_ALTERNATEROM2
* HAVECS_ROMAN8
* HAVECS_DUTCH
* HAVECS_SUPPLEMENTAL
* HAVECS_SWISS
* HAVECS_TECHNICAL
* HAVECS_ISOLATIN
*
* to add support for a new charcterset, you have to provide the
* table named "cs_<charset>",define the according "HAVECS_<CHARSET>"
* and recompile everything. ref: pcvt_out.c, vt_designate()
*
*---------------------------------------------------------------------------*/
/*===========================================================================*
* DEFAULT TABLES FOR MDA/HCG/CGA
*===========================================================================*/
/*---------------------------------------------------------------------------*
* ASCII Characterset
*---------------------------------------------------------------------------*/
#define HAVECSD_ASCII
u_short csd_ascii[CSSIZE] = {
/* 20 */ 0x20 | CSL, 0x21 | CSL, 0x22 | CSL, 0x23 | CSL,
/* 24 */ 0x24 | CSL, 0x25 | CSL, 0x26 | CSL, 0x27 | CSL,
/* 28 */ 0x28 | CSL, 0x29 | CSL, 0x2A | CSL, 0x2B | CSL,
/* 2C */ 0x2C | CSL, 0x2D | CSL, 0x2E | CSL, 0x2F | CSL,
/* 30 */ 0x30 | CSL, 0x31 | CSL, 0x32 | CSL, 0x33 | CSL,
/* 34 */ 0x34 | CSL, 0x35 | CSL, 0x36 | CSL, 0x37 | CSL,
/* 38 */ 0x38 | CSL, 0x39 | CSL, 0x3A | CSL, 0x3B | CSL,
/* 3C */ 0x3C | CSL, 0x3D | CSL, 0x3E | CSL, 0x3F | CSL,
/* 40 */ 0x40 | CSL, 0x41 | CSL, 0x42 | CSL, 0x43 | CSL,
/* 44 */ 0x44 | CSL, 0x45 | CSL, 0x46 | CSL, 0x47 | CSL,
/* 48 */ 0x48 | CSL, 0x49 | CSL, 0x4A | CSL, 0x4B | CSL,
/* 4C */ 0x4C | CSL, 0x4D | CSL, 0x4E | CSL, 0x4F | CSL,
/* 50 */ 0x50 | CSL, 0x51 | CSL, 0x52 | CSL, 0x53 | CSL,
/* 54 */ 0x54 | CSL, 0x55 | CSL, 0x56 | CSL, 0x57 | CSL,
/* 58 */ 0x58 | CSL, 0x59 | CSL, 0x5A | CSL, 0x5B | CSL,
/* 5C */ 0x5C | CSL, 0x5D | CSL, 0x5E | CSL, 0x5F | CSL,
/* 60 */ 0x60 | CSL, 0x61 | CSL, 0x62 | CSL, 0x63 | CSL,
/* 64 */ 0x64 | CSL, 0x65 | CSL, 0x66 | CSL, 0x67 | CSL,
/* 68 */ 0x68 | CSL, 0x69 | CSL, 0x6A | CSL, 0x6B | CSL,
/* 6C */ 0x6C | CSL, 0x6D | CSL, 0x6E | CSL, 0x6F | CSL,
/* 70 */ 0x70 | CSL, 0x71 | CSL, 0x72 | CSL, 0x73 | CSL,
/* 74 */ 0x74 | CSL, 0x75 | CSL, 0x76 | CSL, 0x77 | CSL,
/* 78 */ 0x78 | CSL, 0x79 | CSL, 0x7A | CSL, 0x7B | CSL,
/* 7C */ 0x7C | CSL, 0x7D | CSL, 0x7E | CSL, 0x7F | CSL,
};
/*---------------------------------------------------------------------------*
* DEC Supplemental Graphic Characterset
*---------------------------------------------------------------------------*/
#define HAVECSD_SUPPLEMENTAL
u_short csd_supplemental[CSSIZE] = {
/* 20 */ 0x20 | CSL, 0xAD | CSL, 0x9B | CSL, 0x9C | CSL,
/* 24 */ 0x20 | CSL, 0x9D | CSL, 0x20 | CSL, 0x20 | CSL,
/* 28 */ 0x20 | CSL, 0x20 | CSL, 0xA6 | CSL, 0xAE | CSL,
/* 2C */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 30 */ 0xF8 | CSL, 0xF1 | CSL, 0xFD | CSL, 0x20 | CSL,
/* 34 */ 0x20 | CSL, 0xE6 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 38 */ 0x20 | CSL, 0x20 | CSL, 0xA7 | CSL, 0xAF | CSL,
/* 3C */ 0xAC | CSL, 0xAB | CSL, 0x20 | CSL, 0xA8 | CSL,
/* 40 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 44 */ 0x8E | CSL, 0x8F | CSL, 0x92 | CSL, 0x80 | CSL,
/* 48 */ 0x20 | CSL, 0x90 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 4C */ 0x8D | CSL, 0xA1 | CSL, 0x8C | CSL, 0x8B | CSL,
/* 50 */ 0x20 | CSL, 0xA5 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 54 */ 0x20 | CSL, 0x20 | CSL, 0x99 | CSL, 0x20 | CSL,
/* 58 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 5C */ 0x9A | CSL, 0x20 | CSL, 0x20 | CSL, 0xE1 | CSL,
/* 60 */ 0x85 | CSL, 0xA0 | CSL, 0x83 | CSL, 0x20 | CSL,
/* 64 */ 0x84 | CSL, 0x86 | CSL, 0x91 | CSL, 0x87 | CSL,
/* 68 */ 0x8A | CSL, 0x82 | CSL, 0x88 | CSL, 0x89 | CSL,
/* 6C */ 0x8D | CSL, 0xA1 | CSL, 0x8C | CSL, 0x8B | CSL,
/* 70 */ 0x20 | CSL, 0xA4 | CSL, 0x95 | CSL, 0xA2 | CSL,
/* 74 */ 0x93 | CSL, 0x20 | CSL, 0x94 | CSL, 0x20 | CSL,
/* 78 */ 0x20 | CSL, 0x97 | CSL, 0xA3 | CSL, 0x96 | CSL,
/* 7C */ 0x81 | CSL, 0x98 | CSL, 0x20 | CSL, 0x20 | CSL
};
/*---------------------------------------------------------------------------*
* DEC Special Graphic Characterset
*---------------------------------------------------------------------------*/
#define HAVECSD_SPECIAL
u_short csd_special[CSSIZE] = {
/* 20 */ 0x20 | CSL, 0x21 | CSL, 0x22 | CSL, 0x23 | CSL,
/* 24 */ 0x24 | CSL, 0x25 | CSL, 0x26 | CSL, 0x27 | CSL,
/* 28 */ 0x28 | CSL, 0x29 | CSL, 0x2A | CSL, 0x2B | CSL,
/* 2C */ 0x2C | CSL, 0x2D | CSL, 0x2E | CSL, 0x2F | CSL,
/* 30 */ 0x30 | CSL, 0x31 | CSL, 0x32 | CSL, 0x33 | CSL,
/* 34 */ 0x34 | CSL, 0x35 | CSL, 0x36 | CSL, 0x37 | CSL,
/* 38 */ 0x38 | CSL, 0x39 | CSL, 0x3A | CSL, 0x3B | CSL,
/* 3C */ 0x3C | CSL, 0x3D | CSL, 0x3E | CSL, 0x3F | CSL,
/* 40 */ 0x40 | CSL, 0x41 | CSL, 0x42 | CSL, 0x43 | CSL,
/* 44 */ 0x44 | CSL, 0x45 | CSL, 0x46 | CSL, 0x47 | CSL,
/* 48 */ 0x48 | CSL, 0x49 | CSL, 0x4A | CSL, 0x4B | CSL,
/* 4C */ 0x4C | CSL, 0x4D | CSL, 0x4E | CSL, 0x4F | CSL,
/* 50 */ 0x50 | CSL, 0x51 | CSL, 0x52 | CSL, 0x53 | CSL,
/* 54 */ 0x54 | CSL, 0x55 | CSL, 0x56 | CSL, 0x57 | CSL,
/* 58 */ 0x58 | CSL, 0x59 | CSL, 0x5A | CSL, 0x5B | CSL,
/* 5C */ 0x5C | CSL, 0x5D | CSL, 0x5E | CSL, 0x20 | CSL,
/* 60 */ 0x20 | CSL, 0xB0 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 64 */ 0x20 | CSL, 0x20 | CSL, 0xF8 | CSL, 0xF1 | CSL,
/* 68 */ 0x20 | CSL, 0x20 | CSL, 0xD9 | CSL, 0xBF | CSL,
/* 6C */ 0xDA | CSL, 0xC0 | CSL, 0xC5 | CSL, 0x20 | CSL,
/* 70 */ 0x20 | CSL, 0xC4 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 74 */ 0xC3 | CSL, 0xB4 | CSL, 0xC1 | CSL, 0xC2 | CSL,
/* 78 */ 0xB3 | CSL, 0xF3 | CSL, 0xF2 | CSL, 0xE3 | CSL,
/* 7C */ 0x20 | CSL, 0x9C | CSL, 0x20 | CSL, 0x20 | CSL
};
/*---------------------------------------------------------------------------*
* DEC Technical Characterset
*---------------------------------------------------------------------------*/
#define HAVECSD_TECHNICAL
u_short csd_technical[CSSIZE] = {
/* 20 */ 0xFE | CSH, 0xFB | CSL, 0xDA | CSL, 0xC4 | CSL,
/* 24 */ 0xF4 | CSL, 0xF5 | CSL, 0xB3 | CSL, 0xDA | CSL,
/* 28 */ 0xC0 | CSL, 0xBF | CSL, 0xD9 | CSL, 0x20 | CSL,
/* 2C */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 30 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 34 */ 0x20 | CSL, 0xAA | CSL, 0xA9 | CSL, 0x3E | CSL,
/* 38 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 3C */ 0xF3 | CSL, 0x20 | CSL, 0xF2 | CSL, 0x20 | CSL,
/* 40 */ 0x20 | CSL, 0x20 | CSL, 0xEC | CSL, 0xF6 | CSL,
/* 44 */ 0x20 | CSL, 0x20 | CSL, 0xE8 | CSL, 0xE2 | CSL,
/* 48 */ 0x20 | CSL, 0xF7 | CSL, 0xE9 | CSL, 0x78 | CSL,
/* 4C */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0xF0 | CSL,
/* 50 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0xE4 | CSL,
/* 54 */ 0x20 | CSL, 0x20 | CSL, 0xFB | CSL, 0xEA | CSL,
/* 58 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 5C */ 0xEF | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 60 */ 0xAA | CSL, 0xE0 | CSL, 0xE1 | CSL, 0x20 | CSL,
/* 64 */ 0xEB | CSL, 0x20 | CSL, 0xED | CSL, 0x59 | CSL,
/* 68 */ 0x20 | CSL, 0x20 | CSL, 0xE9 | CSL, 0x20 | CSL,
/* 6C */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 70 */ 0xE3 | CSL, 0x20 | CSL, 0x20 | CSL, 0xE5 | CSL,
/* 74 */ 0xE7 | CSL, 0x20 | CSL, 0x9F | CSL, 0x20 | CSL,
/* 78 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 7C */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL
};
/*---------------------------------------------------------------------------*
* ISO Latin-1 Characterset
*---------------------------------------------------------------------------*/
#define HAVECSD_ISOLATIN
u_short csd_isolatin[CSSIZE] = {
/* 20 */ 0x20 | CSL, 0xAD | CSL, 0x9B | CSL, 0x9C | CSL,
/* 24 */ 0x20 | CSL, 0x9D | CSL, 0x7C | CSL, 0x20 | CSL,
/* 28 */ 0x22 | CSL, 0x20 | CSL, 0xA6 | CSL, 0xAE | CSL,
/* 2C */ 0xAA | CSL, 0x2D | CSL, 0x20 | CSL, 0x2D | CSL,
/* 30 */ 0xF8 | CSL, 0xF1 | CSL, 0xFD | CSL, 0x20 | CSL,
/* 34 */ 0x27 | CSL, 0xE6 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 38 */ 0x20 | CSL, 0x20 | CSL, 0xA7 | CSL, 0xAF | CSL,
/* 3C */ 0xAC | CSL, 0xAB | CSL, 0x20 | CSL, 0xA8 | CSL,
/* 40 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 44 */ 0x8E | CSL, 0x8F | CSL, 0x92 | CSL, 0x80 | CSL,
/* 48 */ 0x20 | CSL, 0x90 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 4C */ 0x8D | CSL, 0xA1 | CSL, 0x8C | CSL, 0x8B | CSL,
/* 50 */ 0x20 | CSL, 0xA5 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 54 */ 0x20 | CSL, 0x20 | CSL, 0x99 | CSL, 0x78 | CSL,
/* 58 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
/* 5C */ 0x9A | CSL, 0x20 | CSL, 0x20 | CSL, 0xE1 | CSL,
/* 60 */ 0x85 | CSL, 0xA0 | CSL, 0x83 | CSL, 0x20 | CSL,
/* 64 */ 0x84 | CSL, 0x86 | CSL, 0x91 | CSL, 0x87 | CSL,
/* 68 */ 0x8A | CSL, 0x82 | CSL, 0x88 | CSL, 0x89 | CSL,
/* 6C */ 0x8D | CSL, 0xA1 | CSL, 0x8C | CSL, 0x8B | CSL,
/* 70 */ 0x20 | CSL, 0xA4 | CSL, 0x95 | CSL, 0xA2 | CSL,
/* 74 */ 0x93 | CSL, 0x20 | CSL, 0x94 | CSL, 0xF6 | CSL,
/* 78 */ 0x20 | CSL, 0x97 | CSL, 0xA3 | CSL, 0x96 | CSL,
/* 7C */ 0x81 | CSL, 0x20 | CSL, 0x20 | CSL, 0x98 | CSL
};
/*===========================================================================*
* EXTENDED TABLES FOR EGA/VGA
*===========================================================================*/
/*---------------------------------------------------------------------------*
* ASCII Characterset
*---------------------------------------------------------------------------*/
#define HAVECSE_ASCII
u_short cse_ascii[CSSIZE] = {
/* 20 */ 0x20 | CSL, 0x21 | CSL, 0x22 | CSL, 0x23 | CSL,
/* 24 */ 0x24 | CSL, 0x25 | CSL, 0x26 | CSL, 0x27 | CSL,
/* 28 */ 0x28 | CSL, 0x29 | CSL, 0x2A | CSL, 0x2B | CSL,
/* 2C */ 0x2C | CSL, 0x2D | CSL, 0x2E | CSL, 0x2F | CSL,
/* 30 */ 0x30 | CSL, 0x31 | CSL, 0x32 | CSL, 0x33 | CSL,
/* 34 */ 0x34 | CSL, 0x35 | CSL, 0x36 | CSL, 0x37 | CSL,
/* 38 */ 0x38 | CSL, 0x39 | CSL, 0x3A | CSL, 0x3B | CSL,
/* 3C */ 0x3C | CSL, 0x3D | CSL, 0x3E | CSL, 0x3F | CSL,
/* 40 */ 0x40 | CSL, 0x41 | CSL, 0x42 | CSL, 0x43 | CSL,
/* 44 */ 0x44 | CSL, 0x45 | CSL, 0x46 | CSL, 0x47 | CSL,
/* 48 */ 0x48 | CSL, 0x49 | CSL, 0x4A | CSL, 0x4B | CSL,
/* 4C */ 0x4C | CSL, 0x4D | CSL, 0x4E | CSL, 0x4F | CSL,
/* 50 */ 0x50 | CSL, 0x51 | CSL, 0x52 | CSL, 0x53 | CSL,
/* 54 */ 0x54 | CSL, 0x55 | CSL, 0x56 | CSL, 0x57 | CSL,
/* 58 */ 0x58 | CSL, 0x59 | CSL, 0x5A | CSL, 0x5B | CSL,
/* 5C */ 0x5C | CSL, 0x5D | CSL, 0x5E | CSL, 0x5F | CSL,
/* 60 */ 0x60 | CSL, 0x61 | CSL, 0x62 | CSL, 0x63 | CSL,
/* 64 */ 0x64 | CSL, 0x65 | CSL, 0x66 | CSL, 0x67 | CSL,
/* 68 */ 0x68 | CSL, 0x69 | CSL, 0x6A | CSL, 0x6B | CSL,
/* 6C */ 0x6C | CSL, 0x6D | CSL, 0x6E | CSL, 0x6F | CSL,
/* 70 */ 0x70 | CSL, 0x71 | CSL, 0x72 | CSL, 0x73 | CSL,
/* 74 */ 0x74 | CSL, 0x75 | CSL, 0x76 | CSL, 0x77 | CSL,
/* 78 */ 0x78 | CSL, 0x79 | CSL, 0x7A | CSL, 0x7B | CSL,
/* 7C */ 0x7C | CSL, 0x7D | CSL, 0x7E | CSL, 0xB0 | CSL,
};
/*---------------------------------------------------------------------------*
* DEC Supplemental Graphic Characterset
*---------------------------------------------------------------------------*/
#define HAVECSE_SUPPLEMENTAL
u_short cse_supplemental[CSSIZE] = {
/* 20 */ 0x20 | CSL, 0xAD | CSL, 0x9B | CSL, 0x9C | CSL,
/* 24 */ 0x9F | CSH, 0x67 | CSH, 0x9F | CSH, 0x15 | CSL,
/* 28 */ 0x9D | CSH, 0x9C | CSH, 0xA6 | CSL, 0xAE | CSL,
/* 2C */ 0x9F | CSH, 0x9F | CSH, 0x9F | CSH, 0x9F | CSH,
/* 30 */ 0xF8 | CSL, 0xF1 | CSL, 0xFD | CSL, 0x9B | CSH,
/* 34 */ 0x9F | CSH, 0xE6 | CSL, 0x14 | CSL, 0x99 | CSH,
/* 38 */ 0x9F | CSH, 0x98 | CSH, 0xA7 | CSL, 0xAF | CSL,
/* 3C */ 0xAC | CSL, 0xAB | CSL, 0x9F | CSH, 0xA8 | CSL,
/* 40 */ 0x97 | CSH, 0x96 | CSH, 0x95 | CSH, 0x94 | CSH,
/* 44 */ 0x8E | CSL, 0x8F | CSL, 0x92 | CSL, 0x80 | CSL,
/* 48 */ 0x93 | CSH, 0x90 | CSL, 0x92 | CSH, 0x91 | CSH,
/* 4C */ 0x90 | CSH, 0x8F | CSH, 0x8E | CSH, 0x8D | CSH,
/* 50 */ 0x9F | CSH, 0xA5 | CSL, 0x8C | CSH, 0x8B | CSH,
/* 54 */ 0x8A | CSH, 0x89 | CSH, 0x99 | CSL, 0x88 | CSH,
/* 58 */ 0x87 | CSH, 0x86 | CSH, 0x85 | CSH, 0x84 | CSH,
/* 5C */ 0x9A | CSL, 0x83 | CSH, 0x9F | CSH, 0xE1 | CSL,
/* 60 */ 0x85 | CSL, 0xA0 | CSL, 0x83 | CSL, 0x82 | CSH,
/* 64 */ 0x84 | CSL, 0x86 | CSL, 0x91 | CSL, 0x87 | CSL,
/* 68 */ 0x8A | CSL, 0x82 | CSL, 0x88 | CSL, 0x89 | CSL,
/* 6C */ 0x8D | CSL, 0xA1 | CSL, 0x8C | CSL, 0x8B | CSL,
/* 70 */ 0x9F | CSH, 0xA4 | CSL, 0x95 | CSL, 0xA2 | CSL,
/* 74 */ 0x93 | CSL, 0x81 | CSH, 0x94 | CSL, 0x80 | CSH,
/* 78 */ 0x7F | CSH, 0x97 | CSL, 0xA3 | CSL, 0x96 | CSL,
/* 7C */ 0x81 | CSL, 0x98 | CSL, 0x9F | CSH, 0x20 | CSL
};
/*---------------------------------------------------------------------------*
* DEC Special Graphic Characterset
*---------------------------------------------------------------------------*/
#define HAVECSE_SPECIAL
u_short cse_special[CSSIZE] = {
/* 20 */ 0x20 | CSL, 0x21 | CSL, 0x22 | CSL, 0x23 | CSL,
/* 24 */ 0x24 | CSL, 0x25 | CSL, 0x26 | CSL, 0x27 | CSL,
/* 28 */ 0x28 | CSL, 0x29 | CSL, 0x2A | CSL, 0x2B | CSL,
/* 2C */ 0x2C | CSL, 0x2D | CSL, 0x2E | CSL, 0x2F | CSL,
/* 30 */ 0x30 | CSL, 0x31 | CSL, 0x32 | CSL, 0x33 | CSL,
/* 34 */ 0x34 | CSL, 0x35 | CSL, 0x36 | CSL, 0x37 | CSL,
/* 38 */ 0x38 | CSL, 0x39 | CSL, 0x3A | CSL, 0x3B | CSL,
/* 3C */ 0x3C | CSL, 0x3D | CSL, 0x3E | CSL, 0x3F | CSL,
/* 40 */ 0x40 | CSL, 0x41 | CSL, 0x42 | CSL, 0x43 | CSL,
/* 44 */ 0x44 | CSL, 0x45 | CSL, 0x46 | CSL, 0x47 | CSL,
/* 48 */ 0x48 | CSL, 0x49 | CSL, 0x4A | CSL, 0x4B | CSL,
/* 4C */ 0x4C | CSL, 0x4D | CSL, 0x4E | CSL, 0x4F | CSL,
/* 50 */ 0x50 | CSL, 0x51 | CSL, 0x52 | CSL, 0x53 | CSL,
/* 54 */ 0x54 | CSL, 0x55 | CSL, 0x56 | CSL, 0x57 | CSL,
/* 58 */ 0x58 | CSL, 0x59 | CSL, 0x5A | CSL, 0x5B | CSL,
/* 5C */ 0x5C | CSL, 0x5D | CSL, 0x5E | CSL, 0x20 | CSL,
/* 60 */ 0x04 | CSL, 0xB0 | CSL, 0x09 | CSH, 0x0C | CSH,
/* 64 */ 0x0D | CSH, 0x0A | CSH, 0xF8 | CSL, 0xF1 | CSL,
/* 68 */ 0x00 | CSH, 0x0B | CSH, 0xD9 | CSL, 0xBF | CSL,
/* 6C */ 0xDA | CSL, 0xC0 | CSL, 0xC5 | CSL, 0x7D | CSH,
/* 70 */ 0x7C | CSH, 0x7B | CSH, 0x7A | CSH, 0x79 | CSH,
/* 74 */ 0xC3 | CSL, 0xB4 | CSL, 0xC1 | CSL, 0xC2 | CSL,
/* 78 */ 0xB3 | CSL, 0xF3 | CSL, 0xF2 | CSL, 0xE3 | CSL,
/* 7C */ 0x78 | CSH, 0x9C | CSL, 0x99 | CSH, 0x20 | CSL
};
/*---------------------------------------------------------------------------*
* DEC Technical Characterset
*---------------------------------------------------------------------------*/
#define HAVECSE_TECHNICAL
u_short cse_technical[CSSIZE] = {
/* 20 */ 0x20 | CSL, 0x65 | CSH, 0xDA | CSL, 0xC4 | CSL,
/* 24 */ 0xF4 | CSL, 0xF5 | CSL, 0xB3 | CSL, 0xDA | CSL,
/* 28 */ 0xC0 | CSL, 0xBF | CSL, 0xD9 | CSL, 0x61 | CSH,
/* 2C */ 0x62 | CSH, 0x63 | CSH, 0x64 | CSH, 0x5F | CSH,
/* 30 */ 0x60 | CSH, 0x5E | CSH, 0x5D | CSH, 0x5C | CSH,
/* 34 */ 0x5B | CSH, 0xAA | CSL, 0xA9 | CSL, 0x3E | CSL,
/* 38 */ 0x9F | CSH, 0x9F | CSH, 0x9F | CSH, 0x9F | CSH,
/* 3C */ 0xF3 | CSL, 0x78 | CSH, 0xF2 | CSL, 0x5A | CSH,
/* 40 */ 0x59 | CSH, 0x58 | CSH, 0xEC | CSL, 0xF6 | CSL,
/* 44 */ 0x57 | CSH, 0x56 | CSH, 0xE8 | CSL, 0xE2 | CSL,
/* 48 */ 0x77 | CSH, 0x55 | CSH, 0x54 | CSH, 0x6E | CSH,
/* 4C */ 0x53 | CSH, 0x52 | CSH, 0x51 | CSH, 0xF0 | CSL,
/* 50 */ 0x50 | CSH, 0x4F | CSH, 0x9F | CSH, 0xE4 | CSL,
/* 54 */ 0x9F | CSH, 0x9F | CSH, 0xFB | CSL, 0xEA | CSL,
/* 58 */ 0x4E | CSH, 0x4D | CSH, 0x4C | CSH, 0x4B | CSH,
/* 5C */ 0xEF | CSL, 0x4A | CSH, 0x49 | CSH, 0x48 | CSH,
/* 60 */ 0xAA | CSL, 0xE0 | CSL, 0xE1 | CSL, 0x47 | CSH,
/* 64 */ 0xEB | CSL, 0x46 | CSH, 0xED | CSL, 0x59 | CSL,
/* 68 */ 0x45 | CSH, 0x44 | CSH, 0xE9 | CSL, 0x9E | CSH,
/* 6C */ 0x43 | CSH, 0x9F | CSH, 0x76 | CSL, 0x42 | CSH,
/* 70 */ 0xE3 | CSL, 0x41 | CSH, 0x40 | CSH, 0xE5 | CSL,
/* 74 */ 0xE7 | CSL, 0x9F | CSH, 0x9F | CSL, 0x66 | CSH,
/* 78 */ 0x68 | CSH, 0x7E | CSH, 0x9A | CSH, 0x1B | CSL,
/* 7C */ 0x18 | CSL, 0x1A | CSL, 0x19 | CSL, 0x20 | CSL
};
/*---------------------------------------------------------------------------*
* ISO Latin-1 Characterset
*---------------------------------------------------------------------------*/
#define HAVECSE_ISOLATIN
u_short cse_isolatin[CSSIZE] = {
/* 20 */ 0x20 | CSL, 0xAD | CSL, 0x9B | CSL, 0x9C | CSL,
/* 24 */ 0x9D | CSH, 0x9D | CSL, 0x7C | CSL, 0x15 | CSL,
/* 28 */ 0x77 | CSH, 0x9C | CSH, 0xA6 | CSL, 0xAE | CSL,
/* 2C */ 0x76 | CSH, 0x75 | CSH, 0x74 | CSH, 0x73 | CSH,
/* 30 */ 0xF8 | CSL, 0xF1 | CSL, 0xFD | CSL, 0x9B | CSH,
/* 34 */ 0x72 | CSH, 0xE6 | CSL, 0x14 | CSL, 0x99 | CSH,
/* 38 */ 0x71 | CSH, 0x98 | CSH, 0xA7 | CSL, 0xAF | CSL,
/* 3C */ 0xAC | CSL, 0xAB | CSL, 0x70 | CSH, 0xA8 | CSL,
/* 40 */ 0x97 | CSH, 0x96 | CSH, 0x95 | CSH, 0x94 | CSH,
/* 44 */ 0x8E | CSL, 0x8F | CSL, 0x92 | CSL, 0x80 | CSL,
/* 48 */ 0x93 | CSH, 0x90 | CSL, 0x92 | CSH, 0x91 | CSH,
/* 4C */ 0x90 | CSH, 0x8F | CSH, 0x8E | CSH, 0x8D | CSH,
/* 50 */ 0x6F | CSH, 0xA5 | CSL, 0x8C | CSH, 0x8B | CSH,
/* 54 */ 0x8A | CSH, 0x89 | CSH, 0x99 | CSL, 0x6E | CSH,
/* 58 */ 0x87 | CSH, 0x86 | CSH, 0x85 | CSH, 0x84 | CSH,
/* 5C */ 0x9A | CSL, 0x6D | CSH, 0x6C | CSH, 0xE1 | CSL,
/* 60 */ 0x85 | CSL, 0xA0 | CSL, 0x83 | CSL, 0x82 | CSH,
/* 64 */ 0x84 | CSL, 0x86 | CSL, 0x91 | CSL, 0x87 | CSL,
/* 68 */ 0x8A | CSL, 0x82 | CSL, 0x88 | CSL, 0x89 | CSL,
/* 6C */ 0x8D | CSL, 0xA1 | CSL, 0x8C | CSL, 0x8B | CSL,
/* 70 */ 0x6B | CSH, 0xA4 | CSL, 0x95 | CSL, 0xA2 | CSL,
/* 74 */ 0x93 | CSL, 0x81 | CSH, 0x94 | CSL, 0xF6 | CSL,
/* 78 */ 0x7F | CSH, 0x97 | CSL, 0xA3 | CSL, 0x96 | CSL,
/* 7C */ 0x81 | CSL, 0x69 | CSH, 0x6A | CSH, 0x98 | CSL
};
/*---------------------------------------------------------------------------*
* Downloadable Characterset
*---------------------------------------------------------------------------*/
#define HAVECSE_DOWNLOADABLE
u_short cse_downloadable[CSSIZE] = {
/* 20 */ 0xA0 | CSH, 0xA1 | CSH, 0xA2 | CSH, 0xA3 | CSH,
/* 24 */ 0xA4 | CSH, 0xA5 | CSH, 0xA6 | CSH, 0xA7 | CSH,
/* 28 */ 0xA8 | CSH, 0xA9 | CSH, 0xAA | CSH, 0xAB | CSH,
/* 2C */ 0xAC | CSH, 0xAD | CSH, 0xAE | CSH, 0xAF | CSH,
/* 30 */ 0xB0 | CSH, 0xB1 | CSH, 0xB2 | CSH, 0xB3 | CSH,
/* 34 */ 0xB4 | CSH, 0xB5 | CSH, 0xB6 | CSH, 0xB7 | CSH,
/* 38 */ 0xB8 | CSH, 0xB9 | CSH, 0xBA | CSH, 0xBB | CSH,
/* 3C */ 0xBC | CSH, 0xBD | CSH, 0xBE | CSH, 0xBF | CSH,
/* 40 */ 0xC0 | CSH, 0xC1 | CSH, 0xC2 | CSH, 0xC3 | CSH,
/* 44 */ 0xC4 | CSH, 0xC5 | CSH, 0xC6 | CSH, 0xC7 | CSH,
/* 48 */ 0xC8 | CSH, 0xC9 | CSH, 0xCA | CSH, 0xCB | CSH,
/* 4C */ 0xCC | CSH, 0xCD | CSH, 0xCE | CSH, 0xCF | CSH,
/* 50 */ 0xD0 | CSH, 0xD1 | CSH, 0xD2 | CSH, 0xD3 | CSH,
/* 54 */ 0xD4 | CSH, 0xD5 | CSH, 0xD6 | CSH, 0xD7 | CSH,
/* 58 */ 0xD8 | CSH, 0xD9 | CSH, 0xDA | CSH, 0xDB | CSH,
/* 5C */ 0xDC | CSH, 0xDD | CSH, 0xDE | CSH, 0xDF | CSH,
/* 60 */ 0xE0 | CSH, 0xE1 | CSH, 0xE2 | CSH, 0xE3 | CSH,
/* 64 */ 0xE4 | CSH, 0xE5 | CSH, 0xE6 | CSH, 0xE7 | CSH,
/* 68 */ 0xE8 | CSH, 0xE9 | CSH, 0xEA | CSH, 0xEB | CSH,
/* 6C */ 0xEC | CSH, 0xED | CSH, 0xEE | CSH, 0xEF | CSH,
/* 70 */ 0xF0 | CSH, 0xF1 | CSH, 0xF2 | CSH, 0xF3 | CSH,
/* 74 */ 0xF4 | CSH, 0xF5 | CSH, 0xF6 | CSH, 0xF7 | CSH,
/* 78 */ 0xF8 | CSH, 0xF9 | CSH, 0xFA | CSH, 0xFB | CSH,
/* 7C */ 0xFC | CSH, 0xFD | CSH, 0xFE | CSH, 0xFF | CSH,
};
/* ------------------------- E O F ------------------------------------------*/

File diff suppressed because it is too large Load Diff