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