vuidmice(7M) STREAMS Modules vuidmice(7M)NAME
vuidmice, vuidm3p, vuidm4p, vuidm5p, vuid2ps2, vuid3ps2 - converts
mouse protocol to Firm Events
SYNOPSIS
#include <sys/stream.h>
#include <sys/vuid_event.h>
#include <sys/vuid_wheel.h>
int ioctl(fd, I_PUSH, vuidm3p);
int ioctl(fd, I_PUSH, vuidm4p);
int ioctl(fd, I_PUSH, vuidm5p);
int ioctl(fd, I_PUSH, vuid2ps2);
int ioctl(fd, I_PUSH, vuid3ps2);
DESCRIPTION
The STREAMS modules vuidm3p, vuidm4p, vuidm5p, vuid2ps2, and vuid3ps2
convert mouse protocols to Firm events. The Firm event structure is
described in <sys/vuid_event.h>. Pushing a STREAMS module does not
automatically enable mouse protocol conversion to Firm events. The
STREAMS module state is initially set to raw or VUID_NATIVE mode which
performs no message processing. You must change the state to
VUID_FIRM_EVENT mode to initiate mouse protocol conversion to Firm
events. This can be accomplished by the following code:
int format;
format = VUID_FIRM_EVENT;
ioctl(fd, VUIDSFORMAT, &format);
You can also query the state of the STREAMS module by using the VUIDG‐
FORMAT option.
int format;
int fd; /* file descriptor */
ioctl(fd, VUIDGFORMAT, &format);
if ( format == VUID_NATIVE );
/* The state of the module is in raw mode.
* Message processing is not enabled.
*/
if ( format == VUID_FIRM_EVENT );
/* Message processing is enabled.
* Mouse protocol conversion to Firm events
* are performed.
The remainder of this section describes the processing of STREAMS mes‐
sages on the read- and write-side.
Read Side Behavior
M_DATA Incoming messages are queued and converted to Firm
events.
M_FLUSH The read queue of the module is flushed of all its data
messages and all data in the record being accumulated
are also flushed. The message is passed upstream.
Write Side Behavior
M_IOCTL Messages sent downstream as a result of an
ioctl(2) system call. The two valid ioctl
options processed by the vuidmice modules are
VUIDGFORMAT and VUIDSFORMAT.
M_FLUSH The write queue of the module is flushed of all
its data messages and the message is passed
downstream.
VUIDGFORMAT This option returns the current state of the
STREAMS module. The state of the vuidmice
STREAMS module may either be VUID_NATIVE (no
message processing) or VUID_FIRM_EVENT (convert
to Firm events).
VUIDSFORMAT This option sets the state of the STREAMS mod‐
ule to VUID_FIRM_EVENT. If the state of the
STREAMS module is already in VUID_FIRM_EVENT,
this option is non-operational. It is not pos‐
sible to set the state back to VUID_NATIVE
once the state becomes VUID_FIRM_EVENT. To dis‐
able message processing, pop the STREAMS module
out by calling ioctl(fd, 1I_POP, vuid*).
The following wheel support ioctls are defined for PS/2 mouse only:
VUIDGWHEELCOUNT This ioctl takes a pointer to an integer as
argument and sets the value of the integer to
the number of wheels available on this device.
VUIDGWHEELINFO This command returns static information about
the wheel that does not change while a
device is in use. Currently the only informa‐
tion defined is the wheel orientation
which is either VUID_WHEEL_FORMAT_VERTICAL or
VUID_WHEEL_FORMAT_HORIZONTAL.
typedef struct {
int vers;
int id;
int format;
} wheel_info;
The ioctl takes a pointer to "wheel_info"
structure with the "vers" set to the current
version of the "wheel_info" structure and "id"
set to the id of the wheel for which the infor‐
mation is desired.
VUIDSWHEELSTATE VUIDSWHEELSTATE sets the state of the wheel to
VUIDGWHEELSTATE that specified in the stateflags. VUIDGWHEEL‐
STATE returns the current state settings in the
stateflags field.
stateflags is an OR'ed set of flag bits. The
only flag currently defined is
VUID_WHEEL_STATE_ENABLED.
When stateflags is set to
VUID_WHEEL_STATE_ENABLED the module converts
motion of the specified wheel into VUID events
and sends those up stream.
Wheel events are disabled by default.
Applications that want to change a flag
should first get the current flags and then
change only the bit they want.
typedef struct {
int vers;
int id;
uint32_t stateflags;
} wheel_state;
These ioctls take pointer to 'wheel_state' as
an argument with the 'vers' and 'id' members
filled up. These members have the same meaning
as that for 'VUIDGWHEELINFO' ioctl.
Mouse Configurations
┌─────────────┬───────────────────────────┬────────────────────┐
│Module │ Protocol Type │ Device │
├─────────────┼───────────────────────────┼────────────────────┤
│vuidm3p │ 3-Byte Protocol Microsoft │ /dev/tty* │
│ │ 2 Button Serial Mouse │ │
├─────────────┼───────────────────────────┼────────────────────┤
│vuidm4p │ 4-Byte Protocol Logitech │ /dev/tty* │
│ │ 3 Button Mouseman │ │
├─────────────┼───────────────────────────┼────────────────────┤
│vuidm5p │ Logitech 3 Button Bus │ /dev/logi/ dev/msm │
│ │ Mouse Microsoft Bus Mouse │ │
├─────────────┼───────────────────────────┼────────────────────┤
│vuid2ps2 │ PS/2 Protocol 2 Button │ /dev/kdmouse │
│ │ PS/2 Compatible Mouse │ │
├─────────────┼───────────────────────────┼────────────────────┤
│vuid3ps2 │ PS/2 Protocol 3 Button │ /dev/kdmouse │
│ │ PS/2 Compatible Mouse │ │
└─────────────┴───────────────────────────┴────────────────────┘
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
┌─────────────────────────────┬─────────────────────────────┐
│ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
├─────────────────────────────┼─────────────────────────────┤
│Architecture │x86 │
└─────────────────────────────┴─────────────────────────────┘
SEE ALSOattributes(5), virtualkm(7D)
STREAMS Programming Guide
SunOS 5.10 21 June 2005 vuidmice(7M)