VUIDMICE(4M) STREAMS Modules VUIDMICE(4M)

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
VUIDGFORMAT 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
messages 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 module 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 possible to set the state
back to VUID_NATIVE once the state becomes
VUID_FIRM_EVENT. To disable 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 information 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 information
is desired.


VUIDSWHEELSTATE
VUIDGWHEELSTATE
VUIDSWHEELSTATE sets the state of the wheel to
that specified in the stateflags. VUIDGWHEELSTATE
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 | /dev/tty* |
| | Microsoft 2 Button | |
| | Serial Mouse | |
+---------+---------------------+--------------------+
|vuidm4p | 4-Byte Protocol | /dev/tty* |
| | Logitech 3 Button | |
| | Mouseman | |
+---------+---------------------+--------------------+
|vuidm5p | Logitech 3 Button | /dev/logi/ dev/msm |
| | Bus Mouse Microsoft | |
| | Bus Mouse | |
+---------+---------------------+--------------------+
|vuid2ps2 | PS/2 Protocol 2 | /dev/kdmouse |
| | Button PS/2 | |
| | Compatible Mouse | |
+---------+---------------------+--------------------+
|vuid3ps2 | PS/2 Protocol 3 | /dev/kdmouse |
| | Button PS/2 | |
| | Compatible Mouse | |
+---------+---------------------+--------------------+

ATTRIBUTES


See attributes(7) for descriptions of the following attributes:


+---------------+-----------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+-----------------+
|Architecture | x86 |
+---------------+-----------------+

SEE ALSO


virtualkm(4D), attributes(7)


STREAMS Programming Guide

June 21, 2005 VUIDMICE(4M)

tribblix@gmail.com :: GitHub :: Privacy