]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - share/man/man4/pcvt.4
mdoc(7) police: use the new features of the Nm macro.
[FreeBSD/FreeBSD.git] / share / man / man4 / pcvt.4
1 .\" 
2 .\"  Copyright (c) 1992, 2000 Hellmuth Michaelis, Brian Dunford-Shore,
3 .\"                           Joerg Wunsch and Holger Veit.
4 .\" 
5 .\"  All rights reserved.
6 .\" 
7 .\" Redistribution and use in source and binary forms, with or without
8 .\" modification, are permitted provided that the following conditions
9 .\" are met:
10 .\" 1. Redistributions of source code must retain the above copyright
11 .\"    notice, this list of conditions and the following disclaimer.
12 .\" 2. Redistributions in binary form must reproduce the above copyright
13 .\"    notice, this list of conditions and the following disclaimer in the
14 .\"    documentation and/or other materials provided with the distribution.
15 .\" 3. All advertising materials mentioning features or use of this software
16 .\"    must display the following acknowledgement:
17 .\"     This product includes software developed by Hellmuth Michaelis,
18 .\"     Brian Dunford-Shore, Joerg Wunsch and Holger Veit.
19 .\" 4. The name authors may not be used to endorse or promote products
20 .\"    derived from this software without specific prior written permission.
21 .\"
22 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
23 .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
24 .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
25 .\" IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
27 .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
31 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 .\"
33 .\" Last Edit-Date: [Sun Mar 26 14:39:08 2000]
34 .\"
35 .\" $FreeBSD$
36 .\"
37 .\" Man page pcvt(4) created after pcvt_ioctl.h on 13-Jan-93
38 .\" by Joerg Wunsch
39 .\"
40 .Dd March 26, 2000
41 .Dt PCVT 4
42 .Sh NAME
43 .Nm pcvt ,
44 .Nm vt
45 .Nd VT220 virtual screen system console 
46 .Sh SYNOPSIS
47 .Cd "device vt0 at isa?"
48 .Sh DESCRIPTION
49 .Ss Overview
50 The
51 .Nm
52 driver provides a virtual screen handling system.
53 Probably most important is an emulation of a wide range
54 of DEC
55 .Tn VT-220
56 functionality.
57 See
58 .Sx Features
59 for a detailed description.
60 .Pp
61 The
62 .Nm
63 driver requires the keyboard driver
64 .Nm atkbd
65 to be also configured in the kernel.
66 .Ss Features
67 .Bl -bullet -compact
68 .It
69 Almost full DEC
70 .Tn VT220
71 functionality
72 .Po
73 moving towards
74 .Tn VT320
75 .Pc
76 .It
77 Completely independent virtual terminals for MDA/HGC/CGA/EGA and VGA
78 .It
79 25, 28, 35, 40, 43 or 50x80 screen resolution for each virtual screen
80 .It
81 Fully remappable keyboard to support national keyboards
82 .It
83 All VT220 character sets plus ISO Latin-1 and DEC technical supported 
84 .It
85 VT220 downloadable character set supported when run on EGA/VGA
86 .It
87 VT220 user defined keys for each virtual terminal
88 .It
89 Optional function key label support
90 \('a la Hewlett-Packard terminals
91 .It
92 Display function codes functionality
93 .It
94 Support for MDA, CGA, EGA and VGA display adaptors
95 .It
96 Support for 132 column operation on some VGA chipsets
97 .It
98 X Window Support for XFree86 
99 .Po
100 requires
101 .Em XSERVER
102 to be defined
103 .Pc
104 .El
105 .Pp
106 What it cannot:
107 .Pp
108 .Bl -bullet -compact
109 .It
110 No double wide/high characters
111 .It
112 No softscroll
113 .It
114 No inverse background
115 .It
116 No VT220 printer output support
117 .It
118 No VT52 support at all
119 .It
120 No 8-bit controls
121 .It
122 Only limited AT-keyboard
123 .Pq 84 keys
124 support
125 .El
126 .Ss Scrollback
127 Each virtual
128 .Nm
129 virtual terminal has 8 pages of memory attached which are used as a 
130 scrollback buffer.
131 By using
132 .Em SHIFT-PageUp
133 and
134 .Em SHIFT-PageDown
135 it is possible to scroll the screen back and forward.
136 .Ss Configuration
137 The
138 .Nm
139 console driver is available for the Intel-based
140 .Fx
141 operating system.
142 It has been designed to be highly configurable in order to satisfy
143 everyone's needs.
144 The preferred way for those configurations is to
145 provide appropriate
146 .Em options
147 lines within the config file, possibly overriding the built-in default
148 values.
149 .Pp
150 The following list gives a short overview of the available configuration
151 options.
152 Refer to the file
153 .Pa i386/isa/pcvt/pcvt_conf.h
154 in the kernel source tree for detailed documentation.
155 .Pp
156 Note: the following conventions apply to all the Boolean options.
157 If an option is given with no value, a value of 1
158 .Pq activated
159 is substituted.
160 If an option value is given as 0, this options is
161 deactivated.
162 Any other value is substituted by 1, too.
163 If an option
164 is omitted, a built-in default is assumed.
165 .Pp
166 .Bl -tag -width indent -compact
167 .It Em PCVT_NSCREENS
168 Defines the number of virtual screens.
169 .It No
170 Default: 8
171 .Pp
172 .It Em PCVT_VT220KEYB
173 If activated, a keyboard layout resembling a DEC VT200 (TM) is generated.
174 If deactivated, a mixture between VT220 and HP is used.
175 See the files
176 .Pa Keyboard.VT
177 and
178 .Pa Keyboard.HP
179 in the
180 .Nm
181 documentation directory for a full description.
182 .It No
183 Default: off
184 .Pp
185 .It Em PCVT_SCREENSAVER
186 Enables the builtin screensaver feature.
187 .It No
188 Default: on
189 .Pp
190 .It Em PCVT_PRETTYSCRNS
191 If enabled, a blinking-star screensaver is used.
192 If disabled, the screen
193 is simply blanked
194 .Pq which might be useful for energy-saving monitors .
195 .It No
196 Default: on
197 .Pp
198 .It Em PCVT_CTRL_ALT_DEL
199 If enabled, the key combination
200 .Aq Em Ctrl
201 .Aq Em Alt
202 .Aq Em Del
203 invokes a CPU reset.
204 .It No
205 Default: off
206 .Pp
207 .It Em PCVT_USEKBDSEC
208 Do NOT override a security lock for the keyboard.
209 .It No
210 Default: on
211 .Pp
212 .It Em PCVT_24LINESDEF
213 If enabled, the 25-line modi
214 .Po
215 VT emulation with 25 lines, and HP emulation with 28 lines
216 .Pc
217 default to 24 lines only to provide a better compatibility to the
218 original DEV VT220 (TM). Thus it should be possible to use the
219 terminal information for those terminals without further changes.
220 Note that this is a startup option; it is possible to toggle between
221 the 24- and 25-lines' display by the
222 .Xr scon 1
223 utility.
224 .It No
225 Default: off
226 .Pp
227 .It Em PCVT_META_ESC
228 If enabled, a sequence composed of
229 .Aq Em esc ,
230 followed by the normal key code is emitted if a key is pressed with the
231 .Aq Em Alt
232 key modifier.
233 If disabled, then normal key code with the value
234 .Em 0x80
235 added is sent.
236 .It No
237 Default: off
238 .El
239 .Pp
240 Note that there are further options available which are mainly used for
241 debugging purposes or as a workaround for hardware problems.
242 They are found in
243 .Pa i386/isa/pcvt/pcvt_conf.h
244 along with their documentation.
245 .Ss Internal Functions
246 The functionality described below may be accessed via
247 .Xr ioctl 2
248 system calls with a file descriptor opened on a device node
249 related to the
250 .Nm
251 driver.
252 To make use of them, a program should contain the following line:
253 .Pp
254 .Dl #include <machine/pcvt_ioctl.h>
255 .Pp
256 Any parameter definitions cited below can be found in that file.
257 .Pp
258 .Em Keyboard related functions
259 .Pp
260 Three functions are related to basic keyboard hardware:
261 .Pp
262 .Bl -tag -width 20n -offset indent -compact
263 .It KBDRESET
264 reset keyboard, set defaults;
265 .It KBDGTPMAT
266 get current typematic value, parameter is a pointer to int where
267 the values is stored to;
268 .It KBDSTPMAT
269 set current typematic value, similar to above command.
270 .El
271 .Pp
272 Symbolic values are available for the appropriate constants.
273 To specify the initial typematic delay time, they are
274 KBD_TPD250 for 250 ms through
275 KBD_TPD1000 for 1000 ms, in steps of 250 ms.
276 The typematic repeat
277 rates are
278 KBD_TPM300, specifying 30.0 characters per second through
279 KBD_TPM20 for 2.0 characters per second.
280 The intermediate values
281 are: 30.0, 26.7, 24.0, 21.8, 20.0, 18.5, 17.1, 16.0, 15.0, 13.3,
282 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,
283 4.0, 3.7, 3.3, 3.0, 2.7, 2.5, 2.3, 2.1, 2.0 characters per second.
284 .Pp
285 .Bl -tag -width 20n -offset indent -compact
286 .It KBDGREPSW
287 get key repetition switch, and
288 .It KBDSREPSW
289 set key repetition switch
290 .El
291 .Pp
292 again take a pointer to int as argument.
293 They manipulate the
294 drivers internal keyboard repetition flag, possible values are:
295 KBD_REPEATOFF or KBD_REPEATON.
296 .Pp
297 .Bl -tag -width 20n -offset indent -compact
298 .It KBDGLEDS
299 get LED state, and
300 .It KBDSLEDS
301 set LED state manipulate the keyboard indicators, but do not influence
302 the drivers idea of lock key state.
303 .El
304 .Pp
305 The int where the argument points to
306 may have the values
307 KBD_SCROLLLOCK, KBD_NUMLOCK, KBD_CAPSLOCK, which may be used in any
308 conjunction.
309 .Pp
310 .Bl -tag -width 20n -offset indent -compact
311 .It KBDGLOCK
312 gets state of SCROLL,NUM,CAPS, and
313 .It KBDSLOCK
314 sets state of SCROLL,NUM,CAPS + LEDs
315 .El
316 .Pp
317 should be used in a same manner to get/set the drivers internal
318 LED flags.
319 .Pp
320 .Em Keyboard remapping
321 .Pp
322 One important feature of the
323 .Nm
324 driver is its ability to overload the built in key definition.
325 .Pp
326 .Bl -tag -width 20n -offset indent -compact
327 .It KBDGCKEY
328 get current key values,
329 .It KBDSCKEY
330 set new key assignment values, and
331 .It KBDGOKEY
332 get original key assignment values
333 .El
334 .Pp
335 arrange those functions.
336 The take a pointer to a
337 .Em struct kbd_ovlkey
338 as argument as described below.
339 In addition,
340 .Pp
341 .Bl -tag -width 20n -offset indent -compact
342 .It KBDRMKEY
343 removes a key assignment, taking a pointer to an int as argument which
344 contains the affected key number;
345 .It KBDDEFAULT
346 removes all key assignments.
347 .El
348 .Bd -literal
349 struct kbd_ovlkey                /* complete definition of a key */
350 {
351     u_short keynum;                      /* the key itself */
352     u_short type;                        /* type of key, see below */
353     u_char  subu;                        /* subtype, ignored on write */
354     char    unshift[KBDMAXOVLKEYSIZE+1]; /* emitted string, unshifted */
355     u_char  subs;                        /* subtype, ignored on write */
356     char    shift[KBDMAXOVLKEYSIZE+1];   /* emitted string, shifted */
357     u_char  subc;                        /* subtype, ignored on write */
358     char    ctrl[KBDMAXOVLKEYSIZE+1];    /* emitted string, control */
359     u_char  suba;                        /* subtype, ignored on write */
360     char    altgr[KBDMAXOVLKEYSIZE+1];   /* emitted string, altgr */
361 };
362 .Ed
363 .Pp
364 The appropriate values for the
365 .Em type
366 field are:
367 .Pp
368 .Bl -tag -width 20n -offset indent -compact
369 .It KBD_NONE
370 no function, key is disabled,
371 .It KBD_SHIFT
372 keyboard shift,
373 .It KBD_META
374 alternate shift, sets bit8 to ASCII code,
375 .It KBD_NUM
376 numeric shift, keypad numeric / application mode,
377 .It KBD_CTL
378 control code generation,
379 .It KBD_CAPS
380 caps shift - swaps case of letter,
381 .It KBD_ASCII
382 ASCII code generating key,
383 .It KBD_SCROLL
384 stop output,
385 .It KBD_FUNC    
386 function key,
387 .It KBD_KP
388 keypad keys,
389 .It KBD_BREAK
390 ignored,
391 .It KBD_ALTGR
392 AltGr translation feature,
393 .It KBD_SHFTLOCK
394 shift lock,
395 .It KBD_CURSOR
396 cursor keys, and
397 .It KBD_RETURN
398 .Dq Return
399 or
400 .Dq Enter
401 keys.
402 .El
403 .Pp
404 The
405 .Em subtype
406 field contains one of the values
407 .Pp
408 .Bl -tag -width 20n -offset indent -compact
409 .It KBD_SUBT_STR
410 key is bound to a string, or
411 .It KBD_SUBT_FNC
412 key is bound to a function.
413 .El
414 .Pp
415 .Em Downloadable character set interface
416 .Pp
417 EGA and VGA video adaptors provide the capability of downloadable
418 software fonts.
419 Since the
420 .Sq native character set
421 of any IBM-compatible PC video board does not allow the full interpretation
422 of DEC multinational character set or ISO Latin-1
423 .Pq ISO 8859-1 ,
424 this might be very useful for a U**X environment.
425 .Pp
426 .Bl -tag -width 20n -offset indent -compact
427 .It VGASETFONTATTR
428 set font attr, and
429 .It VGAGETFONTATTR
430 get font attr
431 .El
432 .Pp
433 are used to manipulate the drivers information about a downloaded
434 font.
435 The take a pointer to a
436 .Em struct vgafontattr
437 as argument:
438 .Bd -literal
439 struct vgafontattr {
440     int character_set;          /* VGA character set */
441     int font_loaded;            /* Mark font loaded or unloaded */
442     int screen_size;            /* Character rows per screen */
443     int character_scanlines;    /* Scanlines per character - 1 */
444     int screen_scanlines;       /* Scanlines per screen - 1 byte */
445 };
446 .Ed
447 .Pp
448 Each character of each font is to be downloaded with
449 .Pp
450 .Bl -tag -width 20n -offset indent -compact
451 .It VGALOADCHAR
452 load vga char,
453 .El
454 .Pp
455 taking a pointer to
456 .Em struct vgaloadchar
457 as its argument:
458 .Bd -literal
459 struct vgaloadchar {
460     int character_set;       /* VGA character set to load into */
461     int character;           /* Character to load */
462     int character_scanlines; /* Scanlines per character */
463     u_char char_table[32];   /* VGA character shape table */
464 };
465 .Ed
466 .Pp
467 The field
468 .Em character_set
469 takes the values
470 CH_SET0, CH_SET1, CH_SET2, CH_SET3 on EGA's or VGA's. Since VGA's
471 might have up to eight simultaneously loaded fonts, they can take
472 CH_SET4, CH_SET5, CH_SET6, or CH_SET7, too.
473 .Pp
474 Note that there's a dependence between the font size
475 and a possible screen height
476 .Pq in character rows ,
477 depending on the video adaptor used:
478 .Bd -literal
479 Screen size (rows) on:          EGA             VGA
480 Font size
481
482 8 x 8                           43              50
483 8 x 10                          35              40
484 8 x 14                          25              28
485 8 x 16                          not             25
486                                 applicable
487 .Ed
488 .Pp
489 .Em General screen manipulation commands
490 .Pp
491 .Bl -tag -width 20n -offset indent -compact
492 .It VGACURSOR
493 sets cursor shape,
494 .El
495 .Pp
496 taking a pointer to the following structure as argument:
497 .Bd -literal
498 struct cursorshape {
499     int screen_no; /* screen number for which to set,               */
500                    /*  or -1 to set on current active screen        */
501     int start;     /* top scanline, range 0... Character Height - 1 */
502     int end;       /* end scanline, range 0... Character Height - 1 */
503 };
504 .Ed
505 .Pp
506 .Bl -tag -width 20n -offset indent -compact
507 .It VGASETSCREEN
508 set screen info, and
509 .It VGAGETSCREEN
510 get screen info,
511 .El
512 .Pp
513 provide an interface to some general driver internal variables
514 which might modify the behaviour of the screens,
515 or which might simply be used to force the driver to switch
516 to one certain screen.
517 Their argument is a pointer to the structure:
518 .Bd -literal
519 struct screeninfo {
520     int adaptor_type;   /* type of video adaptor installed     */
521                         /* read only, ignored on write (yet!)  */
522     int totalfonts;     /* no of downloadable fonts            */
523                         /* read only, ignored on write         */
524     int totalscreens;   /* no of virtual screens               */
525                         /* read only, ignored on write         */
526     int screen_no;      /* screen number, this was got from    */
527                         /* on write, if -1, apply pure_vt_mode */
528                         /* and/or screen_size to current screen*/
529                         /* else to screen_no supplied          */
530     int current_screen; /* screen number, which is displayed.  */
531                         /* on write, if -1, make this screen   */
532                         /* the current screen, else set current*/
533                         /* displayed screen to parameter       */
534     int pure_vt_mode;   /* flag, pure VT mode or HP/VT mode    */
535                         /* on write, if -1, no change          */
536     int screen_size;    /* screen size                         */
537                         /* on write, if -1, no change          */    
538     int force_24lines;  /* force 24 lines if 25 lines VT mode  */
539                         /* or 28 lines HP mode to get pure     */
540                         /* VT220 screen size                   */
541                         /* on write, if -1, no change          */
542     int vga_family;     /* if adaptor_type = VGA, this reflects*/
543                         /* the chipset family after a read     */
544                         /* nothing happenes on write ...       */
545     int vga_type;       /* if adaptor_type = VGA, this reflects*/
546                         /* the chipset after a read            */
547                         /* nothing happenes on write ...       */
548     int vga_132;        /* set to 1 if driver has support for  */
549                         /* 132 column operation for chipset    */
550                         /* currently ignored on write          */
551 };
552 .Ed
553 .Pp
554 Its field
555 .Em pure_vt_mode
556 may take the values M_HPVT for a mixed VTxxx and HP Mode, with function
557 key labels and a status line, or M_PUREVT for only VTxxx sequences
558 recognized, with no labels.
559 .Pp
560 .Bl -tag -width 20n -offset indent -compact
561 .It VGASETCOLMS
562 sets the number of columns for the current screen,
563 .El
564 .Pp
565 its parameter is a pointer to an integer containing either a value of 80,
566 or a value of 132.
567 Note that setting the number of columns to 132 is only supported on 
568 some VGA adaptors.
569 Any unsupported numbers cause the ioctl to fail with
570 .Em errno
571 .Pq see Xr intro 2
572 being set to
573 .Em EINVAL .
574 .Pp
575 .Em VGA color palette interface
576 .Pp
577 Only on VGA adaptors, there's a color palette register at the output.
578 It is responsible for the red, green and blue output voltage provided
579 for each of the 256 internal color codes, each lying in the range of
580 0 through 63 (with 63 representing the brightest value for a base color).
581 Thus, these adaptors map each color code to a color of a
582 .Dq palette
583 out of 262144 colors.
584 The commands
585 .Pp
586 .Bl -tag -width 20n -offset indent -compact
587 .It VGAREADPEL
588 read VGA palette entry, and
589 .It VGAWRITEPEL
590 write VGA palette entry
591 .El
592 .Pp
593 establish an interface to these palette registers.
594 Their argument is
595 a pointer to:
596 .Bd -literal
597 struct vgapel {
598     unsigned idx;      /* index into palette, 0 .. 255 valid   */
599     unsigned r, g, b;  /* RGB values, masked by VGA_PMASK (63) */
600 };
601 .Ed
602 .Pp
603 .Em Driver identification
604 .Pp
605 .Bl -tag -width 20n -offset indent -compact
606 .It VGAPCVTID
607 returns information if the current compiled in driver is pcvt and it's
608 major and minor revision numbers. the call is taking a pointer to the
609 following structure as argument:
610 .El
611 .Bd -literal
612 struct pcvtid {
613 #define PCVTIDNAMELN  16                /* driver id - string length */
614         char name[PCVTIDNAMELN];        /* driver name, == PCVTIDSTR    */
615 #define PCVTIDNAME    "pcvt"            /* driver id - string */
616         int rmajor;                     /* revision number, major       */
617 #define PCVTIDMAJOR   3
618         int rminor;                     /* revision number, minor       */
619 #define PCVTIDMINOR   00        
620 };
621 .Ed
622 .Pp
623 .Bl -tag -width 20n -offset indent -compact
624 .It VGAPCVTINFO
625 returns information if the current compiled in driver is pcvt and it's
626 compile time options. the call is taking a pointer to the following
627 structure as argument:
628 .El
629 .Bd -literal
630 struct pcvtinfo {
631         u_int opsys;                    /* PCVT_xxx(x)BSD */
632 #define CONF_UNKNOWNOPSYS       0
633 #define CONF_386BSD             1       /* unsupported !!! */
634 #define CONF_NETBSD             2
635 #define CONF_FREEBSD            3
636         u_int opsysrel;                 /* Release for NetBSD/FreeBSD */
637         u_int nscreens;                 /* PCVT_NSCREENS */
638         u_int scanset;                  /* PCVT_SCANSET */
639         u_int updatefast;               /* PCVT_UPDATEFAST */
640         u_int updateslow;               /* PCVT_UPDATESLOW */
641         u_int sysbeepf;                 /* PCVT_SYSBEEPF */
642         u_int pcburst;                  /* PCVT_PCBURST */
643         u_int kbd_fifo_sz;              /* PCVT_KBD_FIFO_SZ */
644
645 /* config booleans */
646
647         u_long compile_opts;            /* PCVT_xxxxxxxxxxxxxxx */
648 };
649 .Ed
650 .Pp
651 .Em Screen saver
652 .Pp
653 Depending on the configuration of a
654 .Nm
655 driver, their might be a simple screen saver available.
656 It is controlled
657 by the command
658 .Pp
659 .Bl -tag -width 20n -offset indent -compact
660 .It VGASCREENSAVER
661 set timeout for screen saver in seconds; 0 turns it off,
662 .El
663 .Pp
664 taking a pointer to an integer as argument.
665 Despite of its command name,
666 this is available on
667 .Em any
668 kind of adaptor if configured in by the
669 .Xr config 8
670 option
671 .Dq PCVT_SCREENSAVER
672 .Pp
673 .Em Compatibility commands for USL-style VT's
674 .Pp
675 .Nm
676 supports a subset of the USL-style commands used to control
677 the virtual terminal interface.
678 This feature is mainly intended to allow
679 .Em XFree86 
680 to switch between virtual screens even when
681 running an X server.
682 They are ugly with respect to the implied semantics
683 .Pq i.\& e., they break Berkeley semantics.
684 See the file
685 .Pa i386/include/pcvt_ioctl.h
686 for their documentation.
687 .Sh FILES
688 .Bl -tag -width /usr/include/machine/pcvt_ioctl.h
689 .It Pa /usr/include/machine/pcvt_ioctl.h
690 Definitions for
691 .Xr ioctl 2
692 function calls
693 .It Pa /dev/ttyv?
694 .It Pa /dev/console
695 Device nodes to access the
696 .Nm
697 driver
698 .It Pa i386/isa/pcvt/pcvt_conf.h
699 .Pq relative to the kernel source tree
700 Documents the various compile-time options to tailor
701 .Nm .
702 .Sh HISTORY
703 The
704 .Nm
705 driver has been developed for and contributed to 386BSD 0.1.
706 Since then
707 .Nm
708 has become a standard part of
709 .Fx ,
710 .Nx
711 and
712 OpenBSD.
713 Since
714 .Fx 5.0 ,
715 .Nm
716 is
717 .Fx
718 specific with support for
719 .Nx
720 and
721 .Ox
722 removed to
723 ease further maintenance.
724 .Sh AUTHORS
725 Written by
726 .An Hellmuth Michaelis Aq hm@FreeBSD.org
727 with much help from
728 .An Brian Dunford-Shore Aq brian@morpheus.wustl.edu
729 and
730 .An J\(:org Wunsch Aq joerg@FreeBSD.org
731 .Pp
732 This driver is based on several people's previous work, notably 
733 the historic 
734 .Xr pccons 4
735 implementation by
736 .An William Jolitz Aq ljolitz@cardio.ucsf.edu
737 and
738 .An Don Ahn ,
739 and the keyboard mapping code from 
740 .An Holger Veit Aq veit@first.gmd.de.
741 .Sh SEE ALSO
742 .Xr cursor 1 ,
743 .Xr loadfont 1 ,
744 .Xr scon 1 ,
745 .Xr intro 2 ,
746 .Xr ioctl 2 ,
747 .Xr atkbd 4 ,
748 .Xr keyboard 4 ,
749 .Xr config 8 ,
750 .Xr ispcvt 8
751 .Sh BUGS
752 At least one left.