Add vkdb(4) man page and connect vkbd(4) to the build.
This commit is contained in:
parent
f89a7b24b4
commit
6e81ac21f3
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=137777
@ -330,6 +330,7 @@ MAN= aac.4 \
|
||||
vga.4 \
|
||||
vge.4 \
|
||||
vinum.4 \
|
||||
vkbd.4 \
|
||||
vlan.4 \
|
||||
vpo.4 \
|
||||
vr.4 \
|
||||
|
154
share/man/man4/vkbd.4
Normal file
154
share/man/man4/vkbd.4
Normal file
@ -0,0 +1,154 @@
|
||||
.\" $Id: vkbd.4,v 1.4 2004/11/16 16:49:39 max Exp $
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd August 12, 2004
|
||||
.Os
|
||||
.Dt VKBD 4
|
||||
.Sh NAME
|
||||
.Nm vkbd
|
||||
.Nd the virtual AT keyboard interface
|
||||
.Sh SYNOPSIS
|
||||
.Cd device vkbd
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
interface is a software loopback mechanism that can be loosely
|
||||
described as the virtual AT keyboard analog of the
|
||||
.Xr pty 4 ,
|
||||
that is,
|
||||
.Nm
|
||||
does for virtual AT keyboards what the
|
||||
.Nm pty
|
||||
driver does for terminals.
|
||||
.Pp
|
||||
The
|
||||
.Nm
|
||||
driver, like the
|
||||
.Nm pty
|
||||
driver, provides two interfaces: a keyboard interface like the usual
|
||||
facility it is simulating (a virtual AT keyboard in the case of
|
||||
.Nm ,
|
||||
or a terminal for
|
||||
.Nm pty ) ,
|
||||
and a character-special device
|
||||
.Dq control
|
||||
interface.
|
||||
.Pp
|
||||
The virtual AT keyboards are named
|
||||
.Dq Li vkbd0 ,
|
||||
.Dq Li vkbd1 ,
|
||||
etc., one for each control device that has been opened.
|
||||
.Pp
|
||||
The
|
||||
.Nm
|
||||
interface permits opens on the special control device
|
||||
.Pa /dev/vkbdctl .
|
||||
When this device is opened,
|
||||
.Nm
|
||||
will return a handle for the lowest unused
|
||||
.Nm vkbdctl
|
||||
device (use
|
||||
.Xr devname 3
|
||||
to determine which).
|
||||
.Pp
|
||||
Each virtual AT keyboad supports the usual keyboard interface
|
||||
.Xr ioctl 2 Ns s ,
|
||||
and thus can be used with
|
||||
.Xr kbdcontrol 1
|
||||
like any other keyboard.
|
||||
The control device supports exactly the same
|
||||
.Xr ioctl 2 Ns s
|
||||
as the virtual AT keyboad device.
|
||||
Writing AT scan codes to the control device generates an input on
|
||||
the virtual AT keyboard, as if the
|
||||
(non-existent)
|
||||
hardware had just received it.
|
||||
.Pp
|
||||
The virtual AT kerboard control device, normally
|
||||
.Pa /dev/vkbdctl Ns Sy N ,
|
||||
is exclusive-open
|
||||
(it cannot be opened if it is already open)
|
||||
and is restricted to the super-user.
|
||||
A
|
||||
.Fn read
|
||||
call will return the virtual AT keyboard status structure
|
||||
(defined in
|
||||
.In dev/vkbd/vkbd_var.h )
|
||||
if one is available;
|
||||
if not, it will either block until one is or return
|
||||
.Er EWOULDBLOCK ,
|
||||
depending on whether non-blocking I/O has been enabled.
|
||||
.Pp
|
||||
A
|
||||
.Xr write 2
|
||||
call passes AT scan codes to be
|
||||
.Dq received
|
||||
from the virtual AT keyboard.
|
||||
Each AT scan code must be passed as
|
||||
.Vt unsigned int .
|
||||
Although AT scan codes must be passes as
|
||||
.Vt unsigned int Ns s ,
|
||||
the size of the buffer passed to
|
||||
.Xr write 2
|
||||
still should be in bytes, i.e.
|
||||
.Bd -literal -offset indent
|
||||
static unsigned int codes[] =
|
||||
{
|
||||
/* Make Break */
|
||||
0x1e, 0x9e
|
||||
};
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
int fd, len;
|
||||
|
||||
fd = open("/dev/vkbdctl0", O_RDWR);
|
||||
if (fd < 0)
|
||||
err(1, "open");
|
||||
|
||||
/* Note sizeof(codes) - not 2! */
|
||||
len = write(fd, codes, sizeof(codes));
|
||||
if (len < 0)
|
||||
err(1, "write");
|
||||
|
||||
close(fd);
|
||||
|
||||
return (0);
|
||||
}
|
||||
.Ed
|
||||
.Pp
|
||||
Write will block if there is not enough space in the input queue.
|
||||
.Pp
|
||||
The control device also supports
|
||||
.Xr select 2
|
||||
for read and write.
|
||||
.Pp
|
||||
On the last close of the control device, the virtual AT keyboard is removed.
|
||||
All queued scan codes are thrown away.
|
||||
.Sh SEE ALSO
|
||||
.Xr kbdcontrol 1 ,
|
||||
.Xr atkbdc 4 ,
|
||||
.Xr pcvt 4 ,
|
||||
.Xr psm 4 ,
|
||||
.Xr syscons 4
|
||||
.Sh CAVEAT
|
||||
The
|
||||
.Nm
|
||||
interface is a software loopback mechanism, and, thus
|
||||
.Xr ddb 4
|
||||
will not work with it.
|
||||
Current implementation of the
|
||||
.Xr syscons 4
|
||||
driver can accept input from only one keyboard, even if it is virtual.
|
||||
Thus is it not possible to have both wired and virtual keyboard to be active
|
||||
at the same time. It is, however, in principal possible to obtain AT scan
|
||||
codes from the different sources and write them into the same virtual keyboard.
|
||||
The virtual keyboard state synchronization is the user's responsibility.
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
module was implemented in
|
||||
.Fx 6.0 .
|
||||
.Sh AUTHORS
|
||||
.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
|
@ -835,6 +835,7 @@ dev/usb/usbdi.c optional usb
|
||||
dev/usb/usbdi_util.c optional usb
|
||||
dev/utopia/utopia.c optional utopia
|
||||
dev/vge/if_vge.c optional vge
|
||||
dev/vkbd/vkbd.c optional vkbd
|
||||
dev/vx/if_vx.c optional vx
|
||||
dev/vx/if_vx_eisa.c optional vx eisa
|
||||
dev/vx/if_vx_pci.c optional vx pci
|
||||
|
@ -242,6 +242,7 @@ SUBDIR= ${_3dfx} \
|
||||
uvscom \
|
||||
${_vesa} \
|
||||
vge \
|
||||
vkbd \
|
||||
vpo \
|
||||
vr \
|
||||
vx \
|
||||
|
Loading…
Reference in New Issue
Block a user