Latest fixes for the psm mouse device, also updates the docs
to reflect the new options etc.. Submitted by: Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
This commit is contained in:
parent
840c833532
commit
c61ba66705
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=21721
@ -7,7 +7,7 @@
|
|||||||
<author>Maintainer: Peter da Silva <tt><htmlurl url='mailto:pds@FreeBSD.ORG'
|
<author>Maintainer: Peter da Silva <tt><htmlurl url='mailto:pds@FreeBSD.ORG'
|
||||||
name='<pds@FreeBSD.ORG>'></tt>
|
name='<pds@FreeBSD.ORG>'></tt>
|
||||||
|
|
||||||
<date>$Date: 1997/01/14 14:40:42 $
|
<date>$Date: 1997/01/14 14:43:17 $
|
||||||
<abstract>
|
<abstract>
|
||||||
This is the FAQ for FreeBSD systems version 2.X All entries are
|
This is the FAQ for FreeBSD systems version 2.X All entries are
|
||||||
assumed to be relevant to FreeBSD 2.0.5+, unless otherwise noted.
|
assumed to be relevant to FreeBSD 2.0.5+, unless otherwise noted.
|
||||||
@ -1126,7 +1126,7 @@ drivedata: 0
|
|||||||
<verb>
|
<verb>
|
||||||
device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr
|
device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr
|
||||||
# Options for psm:
|
# Options for psm:
|
||||||
options PSM_NO_RESET #don't reset mouse hardware (some laptops)
|
options PSM_CHECKSYNC #checks the header byte for sync.
|
||||||
</verb>
|
</verb>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -1141,15 +1141,6 @@ options PSM_NO_RESET #don't reset mouse hardware (some laptops)
|
|||||||
cd /dev; sh MAKEDEV psm0
|
cd /dev; sh MAKEDEV psm0
|
||||||
</verb>
|
</verb>
|
||||||
When logged in as root.
|
When logged in as root.
|
||||||
<p>
|
|
||||||
Note: Some PS/2 mouse controllers have a problem
|
|
||||||
where the presence of the psm0 driver will cause the keyboard to
|
|
||||||
lock up (which is why this driver is not present by default in the
|
|
||||||
GENERIC kernel). This can sometimes be fixed by bouncing the
|
|
||||||
NumLock key during the boot process. Also suggest going into CMOS
|
|
||||||
setup and toggling any value for Numlock On/Off at boot time. The
|
|
||||||
real fix is, of course, to merge the PS/2 mouse driver with syscons.
|
|
||||||
Any volunteers? :)
|
|
||||||
|
|
||||||
<sect1>
|
<sect1>
|
||||||
<heading>I have a laptop with a track-ball mouse.</heading>
|
<heading>I have a laptop with a track-ball mouse.</heading>
|
||||||
@ -1817,22 +1808,6 @@ pseudo-device vn #Vnode driver (turns a file into a device)
|
|||||||
interrupt mode, apparently due to some (not yet exactly
|
interrupt mode, apparently due to some (not yet exactly
|
||||||
understood) timing problem.
|
understood) timing problem.
|
||||||
|
|
||||||
<sect1>
|
|
||||||
<heading>My keyboard locks up after switching between vtys.</heading>
|
|
||||||
<p>
|
|
||||||
Try adding the following option in your kernel configuration file
|
|
||||||
and recompile it.
|
|
||||||
<verb>
|
|
||||||
options ASYNCH
|
|
||||||
</verb>
|
|
||||||
|
|
||||||
See the section on <ref id="make-kernel" name="building a
|
|
||||||
kernel"> if you've no experience with building kernels.
|
|
||||||
|
|
||||||
<sect1>My bus mouse locks up spontaneously.</heading>
|
|
||||||
<p>
|
|
||||||
Please refer to the answer to the previous question.
|
|
||||||
|
|
||||||
<sect1>
|
<sect1>
|
||||||
<heading>Can I run DOS binaries under FreeBSD?</heading>
|
<heading>Can I run DOS binaries under FreeBSD?</heading>
|
||||||
|
|
||||||
@ -2299,6 +2274,29 @@ pseudo-device vn #Vnode driver (turns a file into a device)
|
|||||||
use that address + <tt/0x800/, and a third I/O port for reading
|
use that address + <tt/0x800/, and a third I/O port for reading
|
||||||
that can be located anywhere between <tt/0x200/ and <tt/0x3ff/.
|
that can be located anywhere between <tt/0x200/ and <tt/0x3ff/.
|
||||||
|
|
||||||
|
<sect1>
|
||||||
|
<heading>My PS/2 mouse doesn't behave properly under X Window.</heading>
|
||||||
|
<p>
|
||||||
|
Your mouse and the mouse driver have somewhat become out of
|
||||||
|
synchronization. Switching away from X to a virtual terminal
|
||||||
|
and getting back to X again may make them re-synchronized.
|
||||||
|
If the problem occurs often, you may add the following option
|
||||||
|
in your kernel configuration file and recompile it.
|
||||||
|
<verb>
|
||||||
|
options PSM_CHECKSYNC
|
||||||
|
</verb>
|
||||||
|
|
||||||
|
See the section on <ref id="make-kernel" name="building a
|
||||||
|
kernel"> if you've no experience with building kernels.
|
||||||
|
|
||||||
|
With this option, there should be less chance of synchronization
|
||||||
|
problem between the mouse and the driver. If, however, you
|
||||||
|
still see the problem, click any mouse button while holding
|
||||||
|
the mouse still to re-synchronize the mouse and the driver.
|
||||||
|
|
||||||
|
Note that unfortunately this option may not work with all the
|
||||||
|
systems and voids the ``tap'' feature of the ALPS GlidePoint
|
||||||
|
device attached to the PS/2 mouse port.
|
||||||
|
|
||||||
<sect>
|
<sect>
|
||||||
<heading>Kernel Configuration</heading>
|
<heading>Kernel Configuration</heading>
|
||||||
|
@ -1,34 +1,34 @@
|
|||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
.\"
|
.\"
|
||||||
.Dd Nov 8, 1996
|
.Dd January 13, 1997
|
||||||
.Dt PSM 4 i386
|
.Dt PSM 4 i386
|
||||||
.Os
|
.Os FreeBSD
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
.Nm psm
|
.Nm psm
|
||||||
.Nd
|
.Nd
|
||||||
PS/2 mouse style pointing device driver
|
PS/2 mouse style pointing device driver
|
||||||
.Sh SYNOPSIS
|
.Sh SYNOPSIS
|
||||||
.\".Cd "options PSM_NOCHECKSYNC"
|
.Cd "options PSM_CHECKSYNC"
|
||||||
.\".Cd "options PSM_NOEMULATION"
|
.\".Cd "options PSM_EMULATION"
|
||||||
.\".Cd "options" \&"PSM_ACCEL=N\&"
|
.Cd "options" \&"PSM_ACCEL=N\&"
|
||||||
.Cd "options" \&"PSM_RESETDELAY=N\&"
|
.Cd "options" \&"KBD_RESETDELAY=N\&"
|
||||||
.Cd "options" \&"PSM_MAXWAIT=N\&"
|
.Cd "options" \&"KBD_MAXWAIT=N\&"
|
||||||
.Cd "options" \&"PSM_DEBUG=N\&"
|
.Cd "options" \&"PSM_DEBUG=N\&"
|
||||||
|
.Cd "options" \&"KBDIO_DEBUG=N\&"
|
||||||
.Cd "device psm0 at isa? port" \&"IO_KBD\&" conflicts tty irq 12 vector psmintr
|
.Cd "device psm0 at isa? port" \&"IO_KBD\&" conflicts tty irq 12 vector psmintr
|
||||||
.Sh DESCRIPTION
|
.Sh DESCRIPTION
|
||||||
The
|
The
|
||||||
.Nm
|
.Nm
|
||||||
driver provides support for the PS/2 mouse style pointing device.
|
driver provides support for the PS/2 mouse style pointing device.
|
||||||
|
|
||||||
Note that
|
|
||||||
.Nm port \&"IO_KBD\&"
|
.Nm port \&"IO_KBD\&"
|
||||||
and
|
and
|
||||||
.Nm conflicts
|
.Nm conflicts
|
||||||
is required
|
are required,
|
||||||
as the PS/2 mouse port is located
|
as the PS/2 mouse port is located
|
||||||
at the auxially port of the keyboard controller, thus, the
|
at the auxiliary port of the keyboard controller, thus, the
|
||||||
.Nm
|
.Nm
|
||||||
driver has to share the port with the keyboard driver.
|
driver has to share the same I/O ports with the keyboard driver.
|
||||||
Note also that there is currently no provision of changing the
|
Note also that there is currently no provision of changing the
|
||||||
.Nm irq
|
.Nm irq
|
||||||
number.
|
number.
|
||||||
@ -38,9 +38,9 @@ A series of data packets is read from the
|
|||||||
driver. A data packet from the PS/2 mouse style pointing device
|
driver. A data packet from the PS/2 mouse style pointing device
|
||||||
is three bytes long:
|
is three bytes long:
|
||||||
.Pp
|
.Pp
|
||||||
.Bl -tag -width Byte_1
|
.Bl -tag -width Byte_1 -compact
|
||||||
.It Byte 1
|
.It Byte 1
|
||||||
.Bl -tag -width bit_7
|
.Bl -tag -width bit_7 -compact
|
||||||
.It bit 7
|
.It bit 7
|
||||||
One indicates overflow in the vertical movement count.
|
One indicates overflow in the vertical movement count.
|
||||||
.It bit 6
|
.It bit 6
|
||||||
@ -50,10 +50,12 @@ Set if the vertical movement count is negative.
|
|||||||
.It bit 4
|
.It bit 4
|
||||||
Set if the horizontal movement count is negative.
|
Set if the horizontal movement count is negative.
|
||||||
.It bit 3
|
.It bit 3
|
||||||
Always one?.
|
The ALPS GlidePoint clears this bit when the user `taps' the surface of
|
||||||
|
the pad, otherwise the bit is set.
|
||||||
|
Most, if not all, other devices always sets this bit.
|
||||||
.It bit 2
|
.It bit 2
|
||||||
Middle button status; set if pressed. For the device without the middle
|
Middle button status; set if pressed. For devices without the middle
|
||||||
button, this bit is always one?.
|
button, this bit seems to be always zero.
|
||||||
.It bit 1
|
.It bit 1
|
||||||
Right button status; set if pressed.
|
Right button status; set if pressed.
|
||||||
.It bit 0
|
.It bit 0
|
||||||
@ -61,10 +63,12 @@ Left button status; set if pressed.
|
|||||||
.El
|
.El
|
||||||
.It Byte 2
|
.It Byte 2
|
||||||
Horizontal movement count in two's compliment;
|
Horizontal movement count in two's compliment;
|
||||||
-128 through 127.
|
-256 through 255.
|
||||||
|
Note that the sign bit is in the first byte.
|
||||||
.It Byte 3
|
.It Byte 3
|
||||||
Vertical movement count in two's compliment;
|
Vertical movement count in two's compliment;
|
||||||
-128 through 127.
|
-256 through 255.
|
||||||
|
Note that the sign bit is in the first byte.
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
The minor device number of the
|
The minor device number of the
|
||||||
@ -75,19 +79,30 @@ minor = (`unit' << 1) | `non-blocking'
|
|||||||
.Ed
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
where `unit' is the device number (usually 0) and the `non-blocking' bit
|
where `unit' is the device number (usually 0) and the `non-blocking' bit
|
||||||
is set to indicate "don't block waiting for mouse input, return immediately".
|
is set to indicate ``don't block waiting for mouse input,
|
||||||
|
return immediately''.
|
||||||
The `non-blocking' bit should be set for \fIXFree86\fP,
|
The `non-blocking' bit should be set for \fIXFree86\fP,
|
||||||
therefore the minor device number usually used for \fIXFree86\fP is 1.
|
therefore the minor device number usually used for \fIXFree86\fP is 1.
|
||||||
|
See
|
||||||
|
.Sx FILES
|
||||||
|
for device node names.
|
||||||
.Sh KERNEL CONFIGURATION
|
.Sh KERNEL CONFIGURATION
|
||||||
There are following options to control the
|
There are following options to control the
|
||||||
.Nm
|
.Nm
|
||||||
device.
|
driver.
|
||||||
.Bl -tag -width MOUSE
|
.Bl -tag -width MOUSE
|
||||||
.\".It Em PSM_NOCHECKSYNC
|
.It Em PSM_CHECKSYNC
|
||||||
.\"By default, the driver tries to detect the first byte of
|
If this option is defined, the driver tries to detect the first byte of
|
||||||
.\"the three-byte-long data packet. However, this may not always be
|
the three-byte data packet, by checking the bit pattern of that byte.
|
||||||
.\"reliable. This feature will be turned off by specifying this option.
|
This may be useful if you often experience wierd mouse movement
|
||||||
.\".It Em PSM_NOEMULATION
|
cased by unsynchronization between the application program and the mouse.
|
||||||
|
However, the
|
||||||
|
.Em PSM_CHECKSYNC
|
||||||
|
code may not always work; some systems, mostly notebooks, set the bit
|
||||||
|
pattern differently from the others.
|
||||||
|
Note also that the `tapping' feature of the ALPS GlidePoint will be
|
||||||
|
lost when this option is used.
|
||||||
|
.\".It Em PSM_EMULATION
|
||||||
.\"The
|
.\"The
|
||||||
.\".Nm
|
.\".Nm
|
||||||
.\"driver can emulate the Microsoft Serial Mouse's three-byte
|
.\"driver can emulate the Microsoft Serial Mouse's three-byte
|
||||||
@ -96,20 +111,24 @@ device.
|
|||||||
.\".Fn ioctl
|
.\".Fn ioctl
|
||||||
.\"command
|
.\"command
|
||||||
.\".Dv MOUSE_SETMODE .
|
.\".Dv MOUSE_SETMODE .
|
||||||
.\"The emulation will be disabled with this option.
|
.\"To enable the emulation feature, define this option.
|
||||||
.\".It Em PSM_ACCEL=N
|
.It Em PSM_ACCEL=N
|
||||||
.\"The
|
The
|
||||||
.\".Nm
|
.Nm
|
||||||
.\"driver somewhat `accelerates' the movement of the pointing device.
|
driver can somewhat `accelerate' the movement of the pointing device.
|
||||||
.\"That is, the faster you move the device, the longer the pointer
|
That is, the faster you move the device, the further the pointer
|
||||||
.\"travels on the screen. This option controls the amount of acceleration.
|
travels on the screen. This option controls the amount of acceleration.
|
||||||
.\"The smaller
|
The smaller
|
||||||
.\".Fa N
|
.Fa N
|
||||||
.\"is, more sensitive the movement becomes. The default value is 2.
|
is, more sensitive the movement becomes.
|
||||||
.\"The minimum value, thus the value for the most sensitive setting, allowed
|
The minimum value allowed, thus the value for the most sensitive setting,
|
||||||
.\"is 1. Setting this option to zero will completely disables the
|
is 1. Setting this option to zero will completely disables the
|
||||||
.\"acceleration effect.
|
acceleration effect. The default value is 0 (acceleration disabled).
|
||||||
.It Em PSM_RESETDELAY=X, PSM_MAXWAIT=Y
|
The acceleration effect can also be controlled via the
|
||||||
|
.Fn ioctl
|
||||||
|
command
|
||||||
|
.Dv MOUSE_SETMODE .
|
||||||
|
.It Em KBD_RESETDELAY=X, KBD_MAXWAIT=Y
|
||||||
The
|
The
|
||||||
.Nm
|
.Nm
|
||||||
driver will attempt to reset the pointing device during the boot process.
|
driver will attempt to reset the pointing device during the boot process.
|
||||||
@ -126,197 +145,213 @@ device, you may want to increase these values. The default values are
|
|||||||
and 5
|
and 5
|
||||||
for
|
for
|
||||||
.Fa Y .
|
.Fa Y .
|
||||||
.It Em PSM_DEBUG=N
|
.It Em PSM_DEBUG=N, KBDIO_DEBUG=N
|
||||||
Sets the debug level to
|
Sets the debug level to
|
||||||
.Fa N .
|
.Fa N .
|
||||||
The default debug level is zero. See
|
The default debug level is zero. See
|
||||||
.Em DIAGNOSTICS
|
.Sx DIAGNOSTICS
|
||||||
for debug logging.
|
for debug logging.
|
||||||
.El
|
.El
|
||||||
.\".Sh IOCTL
|
.Sh IOCTL
|
||||||
.\".Bl -tag -width MOUSE
|
There are only few ioctls for the
|
||||||
.\".It Dv MOUSE_GETSTATE, MOUSECREAD
|
.Nm
|
||||||
.\"The command returns the current mouse state in the following structure
|
driver. These are defined in
|
||||||
.\"and remove the state information from the internal queue.
|
.Ao Pa machine/mouse.h Ac .
|
||||||
.\".Bd -literal
|
.Bl -tag -width MOUSE
|
||||||
.\"struct mouseinfo {
|
.It Dv MOUSEIOCREAD
|
||||||
.\" unsigned char status; /* button and motion status bits */
|
The
|
||||||
.\" char xmotion; /* horizontal motion count */
|
.Dv MOUSEIOCREAD
|
||||||
.\" char ymotion; /* vertical motion count */
|
command did NOT work before and does NOT work now. It is obsolete.
|
||||||
.\"};
|
Use the
|
||||||
.\".Ed
|
.Dv MOUSE_GETSTATE
|
||||||
.\".Pp
|
command instead.
|
||||||
.\"The
|
.It Dv MOUSE_GETSTATE
|
||||||
.\".Dv status
|
The command returns the current mouse state in the following structure
|
||||||
.\"holds a ORed value of the following constants:
|
and remove the state information from the internal queue.
|
||||||
.\".Bl -tag -width BUTSTATMASK
|
.Bd -literal
|
||||||
.\".It Dv BUT1STAT
|
typedef struct mousestatus {
|
||||||
.\"The Button 1 (left button) is pressed.
|
int button; /* button status */
|
||||||
.\".It Dv BUT2STAT
|
int obutton; /* previous button status */
|
||||||
.\"The Button 2 (middle button) is pressed.
|
int dx; /* x movement */
|
||||||
.\".It Dv BUT3STAT
|
int dy; /* y movement */
|
||||||
.\"The Button 3 (right button) is pressed.
|
} mousestatus_t;
|
||||||
.\".It Dv BUT1CHNG
|
.Ed
|
||||||
.\"The state of the button 1 has changed.
|
.Pp
|
||||||
.\".It Dv BUT2CHNG
|
The
|
||||||
.\"The state of the button 2 has changed.
|
.Dv button
|
||||||
.\".It Dv BUT3CHNG
|
and the
|
||||||
.\"The state of the button 3 has changed.
|
.Dv obutton
|
||||||
.\".It Dv MOVEMENT
|
fields hold the current and the previous state of the mouse buttons.
|
||||||
.\"Either
|
When a button is pressed, the corresponding bit is set.
|
||||||
.\".Dv xmotion
|
These bits are defined as
|
||||||
.\"or
|
.Dv MOUSE_BUTTON1DOWN
|
||||||
.\".Dv ymotion
|
through
|
||||||
.\"is not zero.
|
.Dv MOUSE_BUTTON8DOWN .
|
||||||
.\".El
|
The first three buttons are left, middle and right buttons.
|
||||||
.\".Pp
|
.Pp
|
||||||
.\"Note that these commands and
|
Note that this command and
|
||||||
.\".Fn read
|
.Fn read
|
||||||
.\"operation on the
|
operation on the
|
||||||
.\".Nm
|
.Nm
|
||||||
.\"driver uses the same internal queue. Therefore, interleaving
|
driver uses the same internal queue. Therefore, interleaving the
|
||||||
.\"these commands and
|
.Dv MOUSE_GETSTATE
|
||||||
.\".Fn read
|
command and
|
||||||
.\"operation is not recommended.
|
.Fn read
|
||||||
.\".It Dv MOUSE_GETINFO
|
operation is not recommended.
|
||||||
.\"Returns the hardware information in the following structure:
|
.It Dv MOUSE_GETINFO
|
||||||
.\".Bd -literal
|
Returns the hardware information in the following structure.
|
||||||
.\"typedef struct mousehw {
|
.Bd -literal
|
||||||
.\" int buttons; /* number of buttons */
|
typedef struct mousehw {
|
||||||
.\" int iftype; /* I/F type */
|
int buttons; /* number of buttons */
|
||||||
.\" int type; /* mouse/track ball/pad... */
|
int iftype; /* I/F type */
|
||||||
.\" int hwid; /* I/F dependent hardware ID */
|
int type; /* mouse/track ball/pad... */
|
||||||
.\"} mousehw_t;
|
int hwid; /* I/F dependent hardware ID */
|
||||||
.\".Ed
|
} mousehw_t;
|
||||||
.\".Pp
|
.Ed
|
||||||
.\"The
|
.Pp
|
||||||
.\".Dv iftype
|
The
|
||||||
.\"is
|
.Dv iftype
|
||||||
.\".Dv MOUSE_IF_PS2
|
is
|
||||||
.\"for the
|
.Dv MOUSE_IF_PS2
|
||||||
.\".Nm
|
for the
|
||||||
.\"driver. The
|
.Nm
|
||||||
.\".Dv type
|
driver. The
|
||||||
.\"tells the device type:
|
.Dv type
|
||||||
.\".Dv MOUSE_MOUSE ,
|
tells the device type:
|
||||||
.\".Dv MOUSE_TRACKBALL ,
|
.Dv MOUSE_MOUSE ,
|
||||||
.\".Dv MOUSE_STICK ,
|
.Dv MOUSE_TRACKBALL ,
|
||||||
.\".Dv MOUSE_PAD ,
|
.Dv MOUSE_STICK ,
|
||||||
.\"or
|
.Dv MOUSE_PAD ,
|
||||||
.\".Dv MOUSE_UNKNOWN .
|
or
|
||||||
.\"The user should not heavily rely on this field, as the
|
.Dv MOUSE_UNKNOWN .
|
||||||
.\".Nm
|
The user should not heavily rely on this field, as the
|
||||||
.\"driver may not always, in fact it is very rarely able to, identify
|
.Nm
|
||||||
.\"the device type.
|
driver may not always, in fact it is very rarely able to, identify
|
||||||
.\"The
|
the device type.
|
||||||
.\".Dv hwid
|
The
|
||||||
.\"is the ID value returned by the pointing device. See below for possible
|
.Dv hwid
|
||||||
.\"values.
|
is the ID value returned by the pointing device.
|
||||||
.\".It Dv MOUSE_GETMODE, MOUSE_SETMODE
|
Known IDs include:
|
||||||
.\"The commands get and set operation mode of the
|
.Bl -tag -width 0__ -compact
|
||||||
.\".Nm
|
.It Em 0
|
||||||
.\"driver.
|
Mouse (Microsoft, Logitech and many other manufacturers)
|
||||||
.\".Bd -literal
|
.It Em 2
|
||||||
.\"typedef struct mousemode {
|
Microsoft Ballpoint mouse
|
||||||
.\" int protocol; /* MOUSE_PROTO_XXX */
|
.El
|
||||||
.\" int rate; /* report rate (per sec), -1 if unknown */
|
.It Dv MOUSE_GETMODE, MOUSE_SETMODE
|
||||||
.\" int resolution; /* ppi, -1 if unknown */
|
The commands get and set the operation mode of the
|
||||||
.\" int accelfactor; /* acceleration factor (must be 1 or greater) */
|
.Nm
|
||||||
.\"} mousemode_t;
|
driver.
|
||||||
.\".Ed
|
.Bd -literal
|
||||||
.\".Pp
|
typedef struct mousemode {
|
||||||
.\"The
|
int protocol; /* MOUSE_PROTO_XXX */
|
||||||
.\".Dv protocol
|
int rate; /* report rate (per sec), -1 if unknown */
|
||||||
.\"selects the format with which the device status is returned by
|
int resolution; /* 1:low, 2:medium low, 3:medium high
|
||||||
.\".Fn read .
|
* 4:high, 0: default, -1 if unknown
|
||||||
.\"The default is
|
*/
|
||||||
.\".Dv MOUSE_PROTO_PS2 ,
|
int accelfactor; /* acceleration factor (must be 1 or greater) */
|
||||||
.\"that is, the data byte from the pointing device is returned as is.
|
} mousemode_t;
|
||||||
|
.Ed
|
||||||
|
.Pp
|
||||||
|
The
|
||||||
|
.Dv protocol
|
||||||
|
selects the format with which the device status is returned by
|
||||||
|
.Fn read .
|
||||||
|
The default is
|
||||||
|
.Dv MOUSE_PROTO_PS2 ,
|
||||||
|
that is, the data byte from the pointing device is read by user
|
||||||
|
programs as is.
|
||||||
|
No other value is allowed at the moment.
|
||||||
.\"Other possible values are:
|
.\"Other possible values are:
|
||||||
.\".Dv MOUSE_PROTO_MSS
|
.\".Dv MOUSE_PROTO_MSS
|
||||||
.\"and
|
.\"and
|
||||||
.\".Dv MOUSE_PROTO_MSC ,
|
.\".Dv MOUSE_PROTO_MSC ,
|
||||||
.\"which specifies Microsoft Serial Mouse three-byte format and
|
.\"which specifies Microsoft Serial Mouse three-byte format and
|
||||||
.\"Mouse Systems Corp.'s five-byte format respectively.
|
.\"Mouse Systems Corp.'s five-byte format respectively.
|
||||||
.\"The
|
.\"Note that the protocol cannot be set to anything other than
|
||||||
.\".Dv rate
|
.\".Dv MOUSE_PROTO_PS2
|
||||||
.\"is the status report rate (reports/sec) at which the device will send
|
.\"unless the
|
||||||
.\"movement report to the host computer.
|
.\".Em PSM_EMULATION
|
||||||
.\"The
|
.\"option is specified in the kernel configuration file.
|
||||||
.\".Dv resolution
|
.Pp
|
||||||
.\"of the pointing device is expressed in pulse-per-inch. Setting
|
The
|
||||||
.\"this field to an arbitrary value may not always work.
|
.Dv rate
|
||||||
.\"The
|
is the status report rate (reports/sec) at which the device will send
|
||||||
.\".Dv accelfactor
|
movement report to the host computer.
|
||||||
.\"holds a value to control acceleration feature (see description on
|
.Pp
|
||||||
.\".Em PSM_ACCEL
|
The
|
||||||
.\"above). It must be one or greater.
|
.Dv resolution
|
||||||
.\"If acceleration is disabled by the kernel configuration,
|
of the pointing device must be zero through four. The higher the value
|
||||||
.\"setting this field has no effect.
|
is, the finer resolution the mouse will select. Zero selects the
|
||||||
.\".El
|
default resolution.
|
||||||
|
.Pp
|
||||||
|
The
|
||||||
|
.Dv accelfactor
|
||||||
|
holds a value to control acceleration feature (see description on
|
||||||
|
.Em PSM_ACCEL
|
||||||
|
above). It must be zero or greater.
|
||||||
|
If it is zero, acceleration is disabled.
|
||||||
|
.El
|
||||||
.Sh DIAGNOSTICS
|
.Sh DIAGNOSTICS
|
||||||
.Pp
|
.Pp
|
||||||
At debug level 0, little information is logged except for the following
|
At debug level 0, little information is logged except for the following
|
||||||
line during boot process:
|
line during boot process:
|
||||||
.Bd -literal -offset indent
|
.Bd -literal -offset indent
|
||||||
psm0: device ID X, N buttons?
|
psm0: device ID X
|
||||||
.Ed
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
where
|
where
|
||||||
.Fa X
|
.Fa X
|
||||||
the device ID code returned by the found pointing device.
|
the device ID code returned by the found pointing device.
|
||||||
Known IDs include:
|
See
|
||||||
.Bl -tag -width 0__
|
.Dv MOUSE_GETINFO
|
||||||
.It Em 0
|
for known IDs.
|
||||||
Mouse (Microsoft, Logitech and many other manufacturers)
|
|
||||||
.It Em 2
|
|
||||||
Microsoft Ballpoint mouse
|
|
||||||
.El
|
|
||||||
.Pp
|
|
||||||
Currently the
|
|
||||||
.Nm
|
|
||||||
driver can detect the 3 button mouse from Logitech and report
|
|
||||||
accordingly.
|
|
||||||
The 3 button mouse from the other manufacturer may or may not be
|
|
||||||
reported correctly. However, it will not affect the operation of
|
|
||||||
the driver.
|
|
||||||
.Pp
|
.Pp
|
||||||
At debug level 1 more information will be logged
|
At debug level 1 more information will be logged
|
||||||
while the driver probes the auxially (mouse) port.
|
while the driver probes the auxiliary port (mouse port).
|
||||||
Messages are logged with the LOG_KERN facility at the LOG_DEBUG level.
|
Messages are logged with the LOG_KERN facility at the LOG_DEBUG level.
|
||||||
(See
|
(See
|
||||||
.Xr syslogd 8 . )
|
.Xr syslogd 8 . )
|
||||||
.Bd -literal -offset indent
|
.Bd -literal -offset indent
|
||||||
psm0: current command byte:xxxx
|
psm0: current command byte:xxxx
|
||||||
psm: TEST_AUX_PORT status:0000
|
kbdio: new command byte:yyyy (set_controller...)
|
||||||
psm: RESET_AUX return code:00fa
|
kbdio: TEST_AUX_PORT status:0000
|
||||||
psm: RESET_AUX status:00aa
|
kbdio: RESET_AUX return code:00fa
|
||||||
psm: RESET_AUX ID:0000
|
kbdio: RESET_AUX status:00aa
|
||||||
|
kbdio: RESET_AUX ID:0000
|
||||||
|
psm0: status after reset 00 02 64
|
||||||
|
psm: device ID: X
|
||||||
psm: status xx yy zz (get_mouse_buttons)
|
psm: status xx yy zz (get_mouse_buttons)
|
||||||
psm0: status 00 03 64
|
psm0: status 00 02 64
|
||||||
|
kbdio: new command byte:zzzz (set_controller...)
|
||||||
|
psm0 at 0x60-0x64 irq 12 on motherboard
|
||||||
|
psm0: device ID X, N buttons
|
||||||
.Ed
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
The first line shows the command byte value of the keyboard
|
The first line shows the command byte value of the keyboard
|
||||||
controller just before the auxially port is probed.
|
controller just before the auxiliary port is probed.
|
||||||
It usually is 4D, 45, 47 or 65, depending on the keyboard device
|
It usually is 4D, 45, 47 or 65, depending on how the motherboard BIOS
|
||||||
driver.
|
initialized the keyboard controller upon power-up.
|
||||||
.Pp
|
.Pp
|
||||||
The second line shows the result of the keyboard controller's
|
The third line shows the result of the keyboard controller's
|
||||||
test on the auxially port interface, with zero indicating
|
test on the auxiliary port interface, with zero indicating
|
||||||
no error; note that some controllers report no error even if
|
no error; note that some controllers report no error even if
|
||||||
the port does not exist in the system, however.
|
the port does not exist in the system, however.
|
||||||
.Pp
|
.Pp
|
||||||
The third to fifth lines show the reset status of the pointing device.
|
The forth to sixth lines show the reset status of the pointing device.
|
||||||
The functioning device should return the sequence of FA AA <ID>.
|
The functioning device should return the sequence of FA AA <ID>.
|
||||||
The ID code is described above.
|
The ID code is described above.
|
||||||
.Pp
|
.Pp
|
||||||
The seventh line show the current hardware settings; it consists
|
The tenth line shows the current hardware settings; it consists
|
||||||
of three bytes:
|
of three bytes:
|
||||||
.Bl -tag -width Byte_1
|
.Pp
|
||||||
|
.Bl -tag -width Byte_1 -compact
|
||||||
.It Byte 1
|
.It Byte 1
|
||||||
.Bl -tag -width bit_6
|
.Bl -tag -width bit_6 -compact
|
||||||
|
.It bit 7
|
||||||
|
Reserved.
|
||||||
.It bit 6
|
.It bit 6
|
||||||
0: stream mode (default after reset), 1: remote mode.
|
0 - stream mode, 1 - remote mode.
|
||||||
In the stream mode, the pointing device sends the device status
|
In the stream mode, the pointing device sends the device status
|
||||||
whenever its state changes. In the remote mode, the host computer
|
whenever its state changes. In the remote mode, the host computer
|
||||||
must request the status to be sent.
|
must request the status to be sent.
|
||||||
@ -324,6 +359,8 @@ must request the status to be sent.
|
|||||||
Set if the pointing device is currently enabled. Otherwise zero.
|
Set if the pointing device is currently enabled. Otherwise zero.
|
||||||
.It bit 4
|
.It bit 4
|
||||||
0 - 1:1 scaling, 1 - 2:1 scaling.
|
0 - 1:1 scaling, 1 - 2:1 scaling.
|
||||||
|
.It bit 3
|
||||||
|
Reserved.
|
||||||
.It bit 2
|
.It bit 2
|
||||||
Left button status; set if pressed.
|
Left button status; set if pressed.
|
||||||
.It bit 1
|
.It bit 1
|
||||||
@ -332,8 +369,15 @@ Middle button status; set if pressed.
|
|||||||
Right button status; set if pressed.
|
Right button status; set if pressed.
|
||||||
.El
|
.El
|
||||||
.It Byte 2
|
.It Byte 2
|
||||||
Resolution.
|
.Bl -tag -width bit_6_0 -compact
|
||||||
.Bl -tag -width 100
|
.It bit 7
|
||||||
|
Reserved.
|
||||||
|
.It bit 6-0
|
||||||
|
Resolution code: zero through three. The higher the number is,
|
||||||
|
the finer resolution the device has. Actual resolution for
|
||||||
|
the resolution code varies from one device to another.
|
||||||
|
The typical values are:
|
||||||
|
.Bl -tag -width 100 -compact
|
||||||
.It 0
|
.It 0
|
||||||
25 pulse per inch (ppi)
|
25 pulse per inch (ppi)
|
||||||
.It 1
|
.It 1
|
||||||
@ -343,6 +387,7 @@ Resolution.
|
|||||||
.It 3
|
.It 3
|
||||||
200 ppi
|
200 ppi
|
||||||
.El
|
.El
|
||||||
|
.El
|
||||||
.It Byte 3
|
.It Byte 3
|
||||||
The status report rate (reports/sec) at which the device will send
|
The status report rate (reports/sec) at which the device will send
|
||||||
movement report to the host computer.
|
movement report to the host computer.
|
||||||
@ -350,26 +395,51 @@ movement report to the host computer.
|
|||||||
.Pp
|
.Pp
|
||||||
Note that the pointing device will not be enabled until the
|
Note that the pointing device will not be enabled until the
|
||||||
.Nm
|
.Nm
|
||||||
device is opened by the user programs.
|
driver is opened by the user programs.
|
||||||
|
.Pp
|
||||||
|
The last line shows the device ID code and the number of detected
|
||||||
|
buttons. Currently the
|
||||||
|
.Nm
|
||||||
|
driver can detect the 3 button mouse from Logitech and report
|
||||||
|
accordingly.
|
||||||
|
The 3 button mouse from the other manufacturer may or may not be
|
||||||
|
reported correctly. However, it will not affect the operation of
|
||||||
|
the driver.
|
||||||
.Pp
|
.Pp
|
||||||
At debug level 2, much more detailed information is logged.
|
At debug level 2, much more detailed information is logged.
|
||||||
|
.Sh FILES
|
||||||
|
.Bl -tag -width /dev/npsm0 -compact
|
||||||
|
.It Pa /dev/psm0
|
||||||
|
`non-blocking' device node in the system without
|
||||||
|
.Em devfs ,
|
||||||
|
`blocking' under
|
||||||
|
.Em devfs .
|
||||||
|
.It Pa /dev/npsm0
|
||||||
|
`non-blocking' device node under
|
||||||
|
.Em devfs .
|
||||||
|
.El
|
||||||
.Sh CAVEATS
|
.Sh CAVEATS
|
||||||
There is not a guaranteed way to re-synchronize with the first byte
|
There is not a guaranteed way to re-synchronize with the first byte
|
||||||
of the packet once we are out of synchronization with the data
|
of the packet once we are out of synchronization with the data
|
||||||
stream, because there is not a unique bit pattern to identify
|
stream. However, if you are using the \fIXFree86\fP server and experiencing
|
||||||
the first byte with.
|
the problem, you may be able to make the X server synchronize with the mouse
|
||||||
|
by switching away to a virtual terminal and getting back to the X server,
|
||||||
|
unless the X server is accessing the mouse via
|
||||||
|
.Xr moused 1 .
|
||||||
|
If you have specified the
|
||||||
|
.Em PSM_CHECKSYNC
|
||||||
|
option, clicking any button without moving the mouse may also work.
|
||||||
.Sh BUGS
|
.Sh BUGS
|
||||||
The driver includes the code for the
|
The
|
||||||
.Dv MOUSECREAD
|
|
||||||
command of
|
|
||||||
.Fn ioctl
|
.Fn ioctl
|
||||||
function, which fills a
|
command
|
||||||
.Fa mouseinfo
|
.Dv MOUSEIOCREAD
|
||||||
structure (see
|
(see
|
||||||
.Ao Pa machine/mouse.h Ac ).
|
.Sx IOCTL
|
||||||
However, it currently is not functioning properly, and may be removed
|
above) was never functional and will not be. The command name
|
||||||
in the future.
|
still remains for compatibility reasons but may be removed in the future.
|
||||||
.Sh SEE ALSO
|
.Sh SEE ALSO
|
||||||
|
.Xr moused 1 ,
|
||||||
.Xr syslog 3 ,
|
.Xr syslog 3 ,
|
||||||
.Xr mse 4 ,
|
.Xr mse 4 ,
|
||||||
.Xr syslogd 8
|
.Xr syslogd 8
|
||||||
|
@ -1,34 +1,34 @@
|
|||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
.\"
|
.\"
|
||||||
.Dd Nov 8, 1996
|
.Dd January 13, 1997
|
||||||
.Dt PSM 4 i386
|
.Dt PSM 4 i386
|
||||||
.Os
|
.Os FreeBSD
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
.Nm psm
|
.Nm psm
|
||||||
.Nd
|
.Nd
|
||||||
PS/2 mouse style pointing device driver
|
PS/2 mouse style pointing device driver
|
||||||
.Sh SYNOPSIS
|
.Sh SYNOPSIS
|
||||||
.\".Cd "options PSM_NOCHECKSYNC"
|
.Cd "options PSM_CHECKSYNC"
|
||||||
.\".Cd "options PSM_NOEMULATION"
|
.\".Cd "options PSM_EMULATION"
|
||||||
.\".Cd "options" \&"PSM_ACCEL=N\&"
|
.Cd "options" \&"PSM_ACCEL=N\&"
|
||||||
.Cd "options" \&"PSM_RESETDELAY=N\&"
|
.Cd "options" \&"KBD_RESETDELAY=N\&"
|
||||||
.Cd "options" \&"PSM_MAXWAIT=N\&"
|
.Cd "options" \&"KBD_MAXWAIT=N\&"
|
||||||
.Cd "options" \&"PSM_DEBUG=N\&"
|
.Cd "options" \&"PSM_DEBUG=N\&"
|
||||||
|
.Cd "options" \&"KBDIO_DEBUG=N\&"
|
||||||
.Cd "device psm0 at isa? port" \&"IO_KBD\&" conflicts tty irq 12 vector psmintr
|
.Cd "device psm0 at isa? port" \&"IO_KBD\&" conflicts tty irq 12 vector psmintr
|
||||||
.Sh DESCRIPTION
|
.Sh DESCRIPTION
|
||||||
The
|
The
|
||||||
.Nm
|
.Nm
|
||||||
driver provides support for the PS/2 mouse style pointing device.
|
driver provides support for the PS/2 mouse style pointing device.
|
||||||
|
|
||||||
Note that
|
|
||||||
.Nm port \&"IO_KBD\&"
|
.Nm port \&"IO_KBD\&"
|
||||||
and
|
and
|
||||||
.Nm conflicts
|
.Nm conflicts
|
||||||
is required
|
are required,
|
||||||
as the PS/2 mouse port is located
|
as the PS/2 mouse port is located
|
||||||
at the auxially port of the keyboard controller, thus, the
|
at the auxiliary port of the keyboard controller, thus, the
|
||||||
.Nm
|
.Nm
|
||||||
driver has to share the port with the keyboard driver.
|
driver has to share the same I/O ports with the keyboard driver.
|
||||||
Note also that there is currently no provision of changing the
|
Note also that there is currently no provision of changing the
|
||||||
.Nm irq
|
.Nm irq
|
||||||
number.
|
number.
|
||||||
@ -38,9 +38,9 @@ A series of data packets is read from the
|
|||||||
driver. A data packet from the PS/2 mouse style pointing device
|
driver. A data packet from the PS/2 mouse style pointing device
|
||||||
is three bytes long:
|
is three bytes long:
|
||||||
.Pp
|
.Pp
|
||||||
.Bl -tag -width Byte_1
|
.Bl -tag -width Byte_1 -compact
|
||||||
.It Byte 1
|
.It Byte 1
|
||||||
.Bl -tag -width bit_7
|
.Bl -tag -width bit_7 -compact
|
||||||
.It bit 7
|
.It bit 7
|
||||||
One indicates overflow in the vertical movement count.
|
One indicates overflow in the vertical movement count.
|
||||||
.It bit 6
|
.It bit 6
|
||||||
@ -50,10 +50,12 @@ Set if the vertical movement count is negative.
|
|||||||
.It bit 4
|
.It bit 4
|
||||||
Set if the horizontal movement count is negative.
|
Set if the horizontal movement count is negative.
|
||||||
.It bit 3
|
.It bit 3
|
||||||
Always one?.
|
The ALPS GlidePoint clears this bit when the user `taps' the surface of
|
||||||
|
the pad, otherwise the bit is set.
|
||||||
|
Most, if not all, other devices always sets this bit.
|
||||||
.It bit 2
|
.It bit 2
|
||||||
Middle button status; set if pressed. For the device without the middle
|
Middle button status; set if pressed. For devices without the middle
|
||||||
button, this bit is always one?.
|
button, this bit seems to be always zero.
|
||||||
.It bit 1
|
.It bit 1
|
||||||
Right button status; set if pressed.
|
Right button status; set if pressed.
|
||||||
.It bit 0
|
.It bit 0
|
||||||
@ -61,10 +63,12 @@ Left button status; set if pressed.
|
|||||||
.El
|
.El
|
||||||
.It Byte 2
|
.It Byte 2
|
||||||
Horizontal movement count in two's compliment;
|
Horizontal movement count in two's compliment;
|
||||||
-128 through 127.
|
-256 through 255.
|
||||||
|
Note that the sign bit is in the first byte.
|
||||||
.It Byte 3
|
.It Byte 3
|
||||||
Vertical movement count in two's compliment;
|
Vertical movement count in two's compliment;
|
||||||
-128 through 127.
|
-256 through 255.
|
||||||
|
Note that the sign bit is in the first byte.
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
The minor device number of the
|
The minor device number of the
|
||||||
@ -75,19 +79,30 @@ minor = (`unit' << 1) | `non-blocking'
|
|||||||
.Ed
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
where `unit' is the device number (usually 0) and the `non-blocking' bit
|
where `unit' is the device number (usually 0) and the `non-blocking' bit
|
||||||
is set to indicate "don't block waiting for mouse input, return immediately".
|
is set to indicate ``don't block waiting for mouse input,
|
||||||
|
return immediately''.
|
||||||
The `non-blocking' bit should be set for \fIXFree86\fP,
|
The `non-blocking' bit should be set for \fIXFree86\fP,
|
||||||
therefore the minor device number usually used for \fIXFree86\fP is 1.
|
therefore the minor device number usually used for \fIXFree86\fP is 1.
|
||||||
|
See
|
||||||
|
.Sx FILES
|
||||||
|
for device node names.
|
||||||
.Sh KERNEL CONFIGURATION
|
.Sh KERNEL CONFIGURATION
|
||||||
There are following options to control the
|
There are following options to control the
|
||||||
.Nm
|
.Nm
|
||||||
device.
|
driver.
|
||||||
.Bl -tag -width MOUSE
|
.Bl -tag -width MOUSE
|
||||||
.\".It Em PSM_NOCHECKSYNC
|
.It Em PSM_CHECKSYNC
|
||||||
.\"By default, the driver tries to detect the first byte of
|
If this option is defined, the driver tries to detect the first byte of
|
||||||
.\"the three-byte-long data packet. However, this may not always be
|
the three-byte data packet, by checking the bit pattern of that byte.
|
||||||
.\"reliable. This feature will be turned off by specifying this option.
|
This may be useful if you often experience wierd mouse movement
|
||||||
.\".It Em PSM_NOEMULATION
|
cased by unsynchronization between the application program and the mouse.
|
||||||
|
However, the
|
||||||
|
.Em PSM_CHECKSYNC
|
||||||
|
code may not always work; some systems, mostly notebooks, set the bit
|
||||||
|
pattern differently from the others.
|
||||||
|
Note also that the `tapping' feature of the ALPS GlidePoint will be
|
||||||
|
lost when this option is used.
|
||||||
|
.\".It Em PSM_EMULATION
|
||||||
.\"The
|
.\"The
|
||||||
.\".Nm
|
.\".Nm
|
||||||
.\"driver can emulate the Microsoft Serial Mouse's three-byte
|
.\"driver can emulate the Microsoft Serial Mouse's three-byte
|
||||||
@ -96,20 +111,24 @@ device.
|
|||||||
.\".Fn ioctl
|
.\".Fn ioctl
|
||||||
.\"command
|
.\"command
|
||||||
.\".Dv MOUSE_SETMODE .
|
.\".Dv MOUSE_SETMODE .
|
||||||
.\"The emulation will be disabled with this option.
|
.\"To enable the emulation feature, define this option.
|
||||||
.\".It Em PSM_ACCEL=N
|
.It Em PSM_ACCEL=N
|
||||||
.\"The
|
The
|
||||||
.\".Nm
|
.Nm
|
||||||
.\"driver somewhat `accelerates' the movement of the pointing device.
|
driver can somewhat `accelerate' the movement of the pointing device.
|
||||||
.\"That is, the faster you move the device, the longer the pointer
|
That is, the faster you move the device, the further the pointer
|
||||||
.\"travels on the screen. This option controls the amount of acceleration.
|
travels on the screen. This option controls the amount of acceleration.
|
||||||
.\"The smaller
|
The smaller
|
||||||
.\".Fa N
|
.Fa N
|
||||||
.\"is, more sensitive the movement becomes. The default value is 2.
|
is, more sensitive the movement becomes.
|
||||||
.\"The minimum value, thus the value for the most sensitive setting, allowed
|
The minimum value allowed, thus the value for the most sensitive setting,
|
||||||
.\"is 1. Setting this option to zero will completely disables the
|
is 1. Setting this option to zero will completely disables the
|
||||||
.\"acceleration effect.
|
acceleration effect. The default value is 0 (acceleration disabled).
|
||||||
.It Em PSM_RESETDELAY=X, PSM_MAXWAIT=Y
|
The acceleration effect can also be controlled via the
|
||||||
|
.Fn ioctl
|
||||||
|
command
|
||||||
|
.Dv MOUSE_SETMODE .
|
||||||
|
.It Em KBD_RESETDELAY=X, KBD_MAXWAIT=Y
|
||||||
The
|
The
|
||||||
.Nm
|
.Nm
|
||||||
driver will attempt to reset the pointing device during the boot process.
|
driver will attempt to reset the pointing device during the boot process.
|
||||||
@ -126,197 +145,213 @@ device, you may want to increase these values. The default values are
|
|||||||
and 5
|
and 5
|
||||||
for
|
for
|
||||||
.Fa Y .
|
.Fa Y .
|
||||||
.It Em PSM_DEBUG=N
|
.It Em PSM_DEBUG=N, KBDIO_DEBUG=N
|
||||||
Sets the debug level to
|
Sets the debug level to
|
||||||
.Fa N .
|
.Fa N .
|
||||||
The default debug level is zero. See
|
The default debug level is zero. See
|
||||||
.Em DIAGNOSTICS
|
.Sx DIAGNOSTICS
|
||||||
for debug logging.
|
for debug logging.
|
||||||
.El
|
.El
|
||||||
.\".Sh IOCTL
|
.Sh IOCTL
|
||||||
.\".Bl -tag -width MOUSE
|
There are only few ioctls for the
|
||||||
.\".It Dv MOUSE_GETSTATE, MOUSECREAD
|
.Nm
|
||||||
.\"The command returns the current mouse state in the following structure
|
driver. These are defined in
|
||||||
.\"and remove the state information from the internal queue.
|
.Ao Pa machine/mouse.h Ac .
|
||||||
.\".Bd -literal
|
.Bl -tag -width MOUSE
|
||||||
.\"struct mouseinfo {
|
.It Dv MOUSEIOCREAD
|
||||||
.\" unsigned char status; /* button and motion status bits */
|
The
|
||||||
.\" char xmotion; /* horizontal motion count */
|
.Dv MOUSEIOCREAD
|
||||||
.\" char ymotion; /* vertical motion count */
|
command did NOT work before and does NOT work now. It is obsolete.
|
||||||
.\"};
|
Use the
|
||||||
.\".Ed
|
.Dv MOUSE_GETSTATE
|
||||||
.\".Pp
|
command instead.
|
||||||
.\"The
|
.It Dv MOUSE_GETSTATE
|
||||||
.\".Dv status
|
The command returns the current mouse state in the following structure
|
||||||
.\"holds a ORed value of the following constants:
|
and remove the state information from the internal queue.
|
||||||
.\".Bl -tag -width BUTSTATMASK
|
.Bd -literal
|
||||||
.\".It Dv BUT1STAT
|
typedef struct mousestatus {
|
||||||
.\"The Button 1 (left button) is pressed.
|
int button; /* button status */
|
||||||
.\".It Dv BUT2STAT
|
int obutton; /* previous button status */
|
||||||
.\"The Button 2 (middle button) is pressed.
|
int dx; /* x movement */
|
||||||
.\".It Dv BUT3STAT
|
int dy; /* y movement */
|
||||||
.\"The Button 3 (right button) is pressed.
|
} mousestatus_t;
|
||||||
.\".It Dv BUT1CHNG
|
.Ed
|
||||||
.\"The state of the button 1 has changed.
|
.Pp
|
||||||
.\".It Dv BUT2CHNG
|
The
|
||||||
.\"The state of the button 2 has changed.
|
.Dv button
|
||||||
.\".It Dv BUT3CHNG
|
and the
|
||||||
.\"The state of the button 3 has changed.
|
.Dv obutton
|
||||||
.\".It Dv MOVEMENT
|
fields hold the current and the previous state of the mouse buttons.
|
||||||
.\"Either
|
When a button is pressed, the corresponding bit is set.
|
||||||
.\".Dv xmotion
|
These bits are defined as
|
||||||
.\"or
|
.Dv MOUSE_BUTTON1DOWN
|
||||||
.\".Dv ymotion
|
through
|
||||||
.\"is not zero.
|
.Dv MOUSE_BUTTON8DOWN .
|
||||||
.\".El
|
The first three buttons are left, middle and right buttons.
|
||||||
.\".Pp
|
.Pp
|
||||||
.\"Note that these commands and
|
Note that this command and
|
||||||
.\".Fn read
|
.Fn read
|
||||||
.\"operation on the
|
operation on the
|
||||||
.\".Nm
|
.Nm
|
||||||
.\"driver uses the same internal queue. Therefore, interleaving
|
driver uses the same internal queue. Therefore, interleaving the
|
||||||
.\"these commands and
|
.Dv MOUSE_GETSTATE
|
||||||
.\".Fn read
|
command and
|
||||||
.\"operation is not recommended.
|
.Fn read
|
||||||
.\".It Dv MOUSE_GETINFO
|
operation is not recommended.
|
||||||
.\"Returns the hardware information in the following structure:
|
.It Dv MOUSE_GETINFO
|
||||||
.\".Bd -literal
|
Returns the hardware information in the following structure.
|
||||||
.\"typedef struct mousehw {
|
.Bd -literal
|
||||||
.\" int buttons; /* number of buttons */
|
typedef struct mousehw {
|
||||||
.\" int iftype; /* I/F type */
|
int buttons; /* number of buttons */
|
||||||
.\" int type; /* mouse/track ball/pad... */
|
int iftype; /* I/F type */
|
||||||
.\" int hwid; /* I/F dependent hardware ID */
|
int type; /* mouse/track ball/pad... */
|
||||||
.\"} mousehw_t;
|
int hwid; /* I/F dependent hardware ID */
|
||||||
.\".Ed
|
} mousehw_t;
|
||||||
.\".Pp
|
.Ed
|
||||||
.\"The
|
.Pp
|
||||||
.\".Dv iftype
|
The
|
||||||
.\"is
|
.Dv iftype
|
||||||
.\".Dv MOUSE_IF_PS2
|
is
|
||||||
.\"for the
|
.Dv MOUSE_IF_PS2
|
||||||
.\".Nm
|
for the
|
||||||
.\"driver. The
|
.Nm
|
||||||
.\".Dv type
|
driver. The
|
||||||
.\"tells the device type:
|
.Dv type
|
||||||
.\".Dv MOUSE_MOUSE ,
|
tells the device type:
|
||||||
.\".Dv MOUSE_TRACKBALL ,
|
.Dv MOUSE_MOUSE ,
|
||||||
.\".Dv MOUSE_STICK ,
|
.Dv MOUSE_TRACKBALL ,
|
||||||
.\".Dv MOUSE_PAD ,
|
.Dv MOUSE_STICK ,
|
||||||
.\"or
|
.Dv MOUSE_PAD ,
|
||||||
.\".Dv MOUSE_UNKNOWN .
|
or
|
||||||
.\"The user should not heavily rely on this field, as the
|
.Dv MOUSE_UNKNOWN .
|
||||||
.\".Nm
|
The user should not heavily rely on this field, as the
|
||||||
.\"driver may not always, in fact it is very rarely able to, identify
|
.Nm
|
||||||
.\"the device type.
|
driver may not always, in fact it is very rarely able to, identify
|
||||||
.\"The
|
the device type.
|
||||||
.\".Dv hwid
|
The
|
||||||
.\"is the ID value returned by the pointing device. See below for possible
|
.Dv hwid
|
||||||
.\"values.
|
is the ID value returned by the pointing device.
|
||||||
.\".It Dv MOUSE_GETMODE, MOUSE_SETMODE
|
Known IDs include:
|
||||||
.\"The commands get and set operation mode of the
|
.Bl -tag -width 0__ -compact
|
||||||
.\".Nm
|
.It Em 0
|
||||||
.\"driver.
|
Mouse (Microsoft, Logitech and many other manufacturers)
|
||||||
.\".Bd -literal
|
.It Em 2
|
||||||
.\"typedef struct mousemode {
|
Microsoft Ballpoint mouse
|
||||||
.\" int protocol; /* MOUSE_PROTO_XXX */
|
.El
|
||||||
.\" int rate; /* report rate (per sec), -1 if unknown */
|
.It Dv MOUSE_GETMODE, MOUSE_SETMODE
|
||||||
.\" int resolution; /* ppi, -1 if unknown */
|
The commands get and set the operation mode of the
|
||||||
.\" int accelfactor; /* acceleration factor (must be 1 or greater) */
|
.Nm
|
||||||
.\"} mousemode_t;
|
driver.
|
||||||
.\".Ed
|
.Bd -literal
|
||||||
.\".Pp
|
typedef struct mousemode {
|
||||||
.\"The
|
int protocol; /* MOUSE_PROTO_XXX */
|
||||||
.\".Dv protocol
|
int rate; /* report rate (per sec), -1 if unknown */
|
||||||
.\"selects the format with which the device status is returned by
|
int resolution; /* 1:low, 2:medium low, 3:medium high
|
||||||
.\".Fn read .
|
* 4:high, 0: default, -1 if unknown
|
||||||
.\"The default is
|
*/
|
||||||
.\".Dv MOUSE_PROTO_PS2 ,
|
int accelfactor; /* acceleration factor (must be 1 or greater) */
|
||||||
.\"that is, the data byte from the pointing device is returned as is.
|
} mousemode_t;
|
||||||
|
.Ed
|
||||||
|
.Pp
|
||||||
|
The
|
||||||
|
.Dv protocol
|
||||||
|
selects the format with which the device status is returned by
|
||||||
|
.Fn read .
|
||||||
|
The default is
|
||||||
|
.Dv MOUSE_PROTO_PS2 ,
|
||||||
|
that is, the data byte from the pointing device is read by user
|
||||||
|
programs as is.
|
||||||
|
No other value is allowed at the moment.
|
||||||
.\"Other possible values are:
|
.\"Other possible values are:
|
||||||
.\".Dv MOUSE_PROTO_MSS
|
.\".Dv MOUSE_PROTO_MSS
|
||||||
.\"and
|
.\"and
|
||||||
.\".Dv MOUSE_PROTO_MSC ,
|
.\".Dv MOUSE_PROTO_MSC ,
|
||||||
.\"which specifies Microsoft Serial Mouse three-byte format and
|
.\"which specifies Microsoft Serial Mouse three-byte format and
|
||||||
.\"Mouse Systems Corp.'s five-byte format respectively.
|
.\"Mouse Systems Corp.'s five-byte format respectively.
|
||||||
.\"The
|
.\"Note that the protocol cannot be set to anything other than
|
||||||
.\".Dv rate
|
.\".Dv MOUSE_PROTO_PS2
|
||||||
.\"is the status report rate (reports/sec) at which the device will send
|
.\"unless the
|
||||||
.\"movement report to the host computer.
|
.\".Em PSM_EMULATION
|
||||||
.\"The
|
.\"option is specified in the kernel configuration file.
|
||||||
.\".Dv resolution
|
.Pp
|
||||||
.\"of the pointing device is expressed in pulse-per-inch. Setting
|
The
|
||||||
.\"this field to an arbitrary value may not always work.
|
.Dv rate
|
||||||
.\"The
|
is the status report rate (reports/sec) at which the device will send
|
||||||
.\".Dv accelfactor
|
movement report to the host computer.
|
||||||
.\"holds a value to control acceleration feature (see description on
|
.Pp
|
||||||
.\".Em PSM_ACCEL
|
The
|
||||||
.\"above). It must be one or greater.
|
.Dv resolution
|
||||||
.\"If acceleration is disabled by the kernel configuration,
|
of the pointing device must be zero through four. The higher the value
|
||||||
.\"setting this field has no effect.
|
is, the finer resolution the mouse will select. Zero selects the
|
||||||
.\".El
|
default resolution.
|
||||||
|
.Pp
|
||||||
|
The
|
||||||
|
.Dv accelfactor
|
||||||
|
holds a value to control acceleration feature (see description on
|
||||||
|
.Em PSM_ACCEL
|
||||||
|
above). It must be zero or greater.
|
||||||
|
If it is zero, acceleration is disabled.
|
||||||
|
.El
|
||||||
.Sh DIAGNOSTICS
|
.Sh DIAGNOSTICS
|
||||||
.Pp
|
.Pp
|
||||||
At debug level 0, little information is logged except for the following
|
At debug level 0, little information is logged except for the following
|
||||||
line during boot process:
|
line during boot process:
|
||||||
.Bd -literal -offset indent
|
.Bd -literal -offset indent
|
||||||
psm0: device ID X, N buttons?
|
psm0: device ID X
|
||||||
.Ed
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
where
|
where
|
||||||
.Fa X
|
.Fa X
|
||||||
the device ID code returned by the found pointing device.
|
the device ID code returned by the found pointing device.
|
||||||
Known IDs include:
|
See
|
||||||
.Bl -tag -width 0__
|
.Dv MOUSE_GETINFO
|
||||||
.It Em 0
|
for known IDs.
|
||||||
Mouse (Microsoft, Logitech and many other manufacturers)
|
|
||||||
.It Em 2
|
|
||||||
Microsoft Ballpoint mouse
|
|
||||||
.El
|
|
||||||
.Pp
|
|
||||||
Currently the
|
|
||||||
.Nm
|
|
||||||
driver can detect the 3 button mouse from Logitech and report
|
|
||||||
accordingly.
|
|
||||||
The 3 button mouse from the other manufacturer may or may not be
|
|
||||||
reported correctly. However, it will not affect the operation of
|
|
||||||
the driver.
|
|
||||||
.Pp
|
.Pp
|
||||||
At debug level 1 more information will be logged
|
At debug level 1 more information will be logged
|
||||||
while the driver probes the auxially (mouse) port.
|
while the driver probes the auxiliary port (mouse port).
|
||||||
Messages are logged with the LOG_KERN facility at the LOG_DEBUG level.
|
Messages are logged with the LOG_KERN facility at the LOG_DEBUG level.
|
||||||
(See
|
(See
|
||||||
.Xr syslogd 8 . )
|
.Xr syslogd 8 . )
|
||||||
.Bd -literal -offset indent
|
.Bd -literal -offset indent
|
||||||
psm0: current command byte:xxxx
|
psm0: current command byte:xxxx
|
||||||
psm: TEST_AUX_PORT status:0000
|
kbdio: new command byte:yyyy (set_controller...)
|
||||||
psm: RESET_AUX return code:00fa
|
kbdio: TEST_AUX_PORT status:0000
|
||||||
psm: RESET_AUX status:00aa
|
kbdio: RESET_AUX return code:00fa
|
||||||
psm: RESET_AUX ID:0000
|
kbdio: RESET_AUX status:00aa
|
||||||
|
kbdio: RESET_AUX ID:0000
|
||||||
|
psm0: status after reset 00 02 64
|
||||||
|
psm: device ID: X
|
||||||
psm: status xx yy zz (get_mouse_buttons)
|
psm: status xx yy zz (get_mouse_buttons)
|
||||||
psm0: status 00 03 64
|
psm0: status 00 02 64
|
||||||
|
kbdio: new command byte:zzzz (set_controller...)
|
||||||
|
psm0 at 0x60-0x64 irq 12 on motherboard
|
||||||
|
psm0: device ID X, N buttons
|
||||||
.Ed
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
The first line shows the command byte value of the keyboard
|
The first line shows the command byte value of the keyboard
|
||||||
controller just before the auxially port is probed.
|
controller just before the auxiliary port is probed.
|
||||||
It usually is 4D, 45, 47 or 65, depending on the keyboard device
|
It usually is 4D, 45, 47 or 65, depending on how the motherboard BIOS
|
||||||
driver.
|
initialized the keyboard controller upon power-up.
|
||||||
.Pp
|
.Pp
|
||||||
The second line shows the result of the keyboard controller's
|
The third line shows the result of the keyboard controller's
|
||||||
test on the auxially port interface, with zero indicating
|
test on the auxiliary port interface, with zero indicating
|
||||||
no error; note that some controllers report no error even if
|
no error; note that some controllers report no error even if
|
||||||
the port does not exist in the system, however.
|
the port does not exist in the system, however.
|
||||||
.Pp
|
.Pp
|
||||||
The third to fifth lines show the reset status of the pointing device.
|
The forth to sixth lines show the reset status of the pointing device.
|
||||||
The functioning device should return the sequence of FA AA <ID>.
|
The functioning device should return the sequence of FA AA <ID>.
|
||||||
The ID code is described above.
|
The ID code is described above.
|
||||||
.Pp
|
.Pp
|
||||||
The seventh line show the current hardware settings; it consists
|
The tenth line shows the current hardware settings; it consists
|
||||||
of three bytes:
|
of three bytes:
|
||||||
.Bl -tag -width Byte_1
|
.Pp
|
||||||
|
.Bl -tag -width Byte_1 -compact
|
||||||
.It Byte 1
|
.It Byte 1
|
||||||
.Bl -tag -width bit_6
|
.Bl -tag -width bit_6 -compact
|
||||||
|
.It bit 7
|
||||||
|
Reserved.
|
||||||
.It bit 6
|
.It bit 6
|
||||||
0: stream mode (default after reset), 1: remote mode.
|
0 - stream mode, 1 - remote mode.
|
||||||
In the stream mode, the pointing device sends the device status
|
In the stream mode, the pointing device sends the device status
|
||||||
whenever its state changes. In the remote mode, the host computer
|
whenever its state changes. In the remote mode, the host computer
|
||||||
must request the status to be sent.
|
must request the status to be sent.
|
||||||
@ -324,6 +359,8 @@ must request the status to be sent.
|
|||||||
Set if the pointing device is currently enabled. Otherwise zero.
|
Set if the pointing device is currently enabled. Otherwise zero.
|
||||||
.It bit 4
|
.It bit 4
|
||||||
0 - 1:1 scaling, 1 - 2:1 scaling.
|
0 - 1:1 scaling, 1 - 2:1 scaling.
|
||||||
|
.It bit 3
|
||||||
|
Reserved.
|
||||||
.It bit 2
|
.It bit 2
|
||||||
Left button status; set if pressed.
|
Left button status; set if pressed.
|
||||||
.It bit 1
|
.It bit 1
|
||||||
@ -332,8 +369,15 @@ Middle button status; set if pressed.
|
|||||||
Right button status; set if pressed.
|
Right button status; set if pressed.
|
||||||
.El
|
.El
|
||||||
.It Byte 2
|
.It Byte 2
|
||||||
Resolution.
|
.Bl -tag -width bit_6_0 -compact
|
||||||
.Bl -tag -width 100
|
.It bit 7
|
||||||
|
Reserved.
|
||||||
|
.It bit 6-0
|
||||||
|
Resolution code: zero through three. The higher the number is,
|
||||||
|
the finer resolution the device has. Actual resolution for
|
||||||
|
the resolution code varies from one device to another.
|
||||||
|
The typical values are:
|
||||||
|
.Bl -tag -width 100 -compact
|
||||||
.It 0
|
.It 0
|
||||||
25 pulse per inch (ppi)
|
25 pulse per inch (ppi)
|
||||||
.It 1
|
.It 1
|
||||||
@ -343,6 +387,7 @@ Resolution.
|
|||||||
.It 3
|
.It 3
|
||||||
200 ppi
|
200 ppi
|
||||||
.El
|
.El
|
||||||
|
.El
|
||||||
.It Byte 3
|
.It Byte 3
|
||||||
The status report rate (reports/sec) at which the device will send
|
The status report rate (reports/sec) at which the device will send
|
||||||
movement report to the host computer.
|
movement report to the host computer.
|
||||||
@ -350,26 +395,51 @@ movement report to the host computer.
|
|||||||
.Pp
|
.Pp
|
||||||
Note that the pointing device will not be enabled until the
|
Note that the pointing device will not be enabled until the
|
||||||
.Nm
|
.Nm
|
||||||
device is opened by the user programs.
|
driver is opened by the user programs.
|
||||||
|
.Pp
|
||||||
|
The last line shows the device ID code and the number of detected
|
||||||
|
buttons. Currently the
|
||||||
|
.Nm
|
||||||
|
driver can detect the 3 button mouse from Logitech and report
|
||||||
|
accordingly.
|
||||||
|
The 3 button mouse from the other manufacturer may or may not be
|
||||||
|
reported correctly. However, it will not affect the operation of
|
||||||
|
the driver.
|
||||||
.Pp
|
.Pp
|
||||||
At debug level 2, much more detailed information is logged.
|
At debug level 2, much more detailed information is logged.
|
||||||
|
.Sh FILES
|
||||||
|
.Bl -tag -width /dev/npsm0 -compact
|
||||||
|
.It Pa /dev/psm0
|
||||||
|
`non-blocking' device node in the system without
|
||||||
|
.Em devfs ,
|
||||||
|
`blocking' under
|
||||||
|
.Em devfs .
|
||||||
|
.It Pa /dev/npsm0
|
||||||
|
`non-blocking' device node under
|
||||||
|
.Em devfs .
|
||||||
|
.El
|
||||||
.Sh CAVEATS
|
.Sh CAVEATS
|
||||||
There is not a guaranteed way to re-synchronize with the first byte
|
There is not a guaranteed way to re-synchronize with the first byte
|
||||||
of the packet once we are out of synchronization with the data
|
of the packet once we are out of synchronization with the data
|
||||||
stream, because there is not a unique bit pattern to identify
|
stream. However, if you are using the \fIXFree86\fP server and experiencing
|
||||||
the first byte with.
|
the problem, you may be able to make the X server synchronize with the mouse
|
||||||
|
by switching away to a virtual terminal and getting back to the X server,
|
||||||
|
unless the X server is accessing the mouse via
|
||||||
|
.Xr moused 1 .
|
||||||
|
If you have specified the
|
||||||
|
.Em PSM_CHECKSYNC
|
||||||
|
option, clicking any button without moving the mouse may also work.
|
||||||
.Sh BUGS
|
.Sh BUGS
|
||||||
The driver includes the code for the
|
The
|
||||||
.Dv MOUSECREAD
|
|
||||||
command of
|
|
||||||
.Fn ioctl
|
.Fn ioctl
|
||||||
function, which fills a
|
command
|
||||||
.Fa mouseinfo
|
.Dv MOUSEIOCREAD
|
||||||
structure (see
|
(see
|
||||||
.Ao Pa machine/mouse.h Ac ).
|
.Sx IOCTL
|
||||||
However, it currently is not functioning properly, and may be removed
|
above) was never functional and will not be. The command name
|
||||||
in the future.
|
still remains for compatibility reasons but may be removed in the future.
|
||||||
.Sh SEE ALSO
|
.Sh SEE ALSO
|
||||||
|
.Xr moused 1 ,
|
||||||
.Xr syslog 3 ,
|
.Xr syslog 3 ,
|
||||||
.Xr mse 4 ,
|
.Xr mse 4 ,
|
||||||
.Xr syslogd 8
|
.Xr syslogd 8
|
||||||
|
Loading…
Reference in New Issue
Block a user