usbms

- USB mouse STREAMS module

Synopsis

#include <sys/vuid_event.h>

#include <sys/vuid_wheel.h>

#include <sys/msio.h>

#include <sys/msreg.h>

Description

The usbms STREAMS module processes byte streams generated by a USB
mouse. A USB mouse is a member of the Human
Interface Device (HID) class and the usbms module supports only the
mouse boot protocol defined in the HID specification.

The usbms module must be pushed on top of the HID class
driver (see hid(7D)). In the VUID_FIRM_EVENT mode, the usbms module translates
packets from the USB mouse into Firm events. The Firm event structure
is defined in <sys/vuid_event.h>. The STREAMS module state is initially set to
raw or VUID_NATIVE mode which performs no message processing. See the
HID 1.0 specification for the raw format of the mouse packets. To initiate
mouse protocol conversion to Firm events, change the state to VUID_FIRM_EVENT.

When the usb mouse is opened or hot plugged in, the MOUSE_TYPE_ABSOLUTE
event (Firm event) is sent to the upper level to notify
the VUID application that it is the absolute mouse.

ioctls

VUIDGFORMAT

This option returns the current state of the STREAMS module. The state of the usbms STREAMS module may be either VUID_NATIVE (no message processing) or VUID_FIRM_EVENT (convert to Firm events).

VUIDSFORMAT

The argument is a pointer to an int. Set the state of the STREAMS module to the int pointed to by the argument.

The argument is a pointer to a Vuid_addr_probe structure. VUIDSADDR sets the virtual input device segment address indicated by base to next.

If base does not equal VKEY_FIRST, ENODEV is returned.

VUIDGADDR

The argument is a pointer to a Vuid_addr_probe structure. Return the address of the virtual input device segment indicated by base to current.

If base does not equal VKEY_FIRST, ENODEV is returned.

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. This ioctl returns 1 if wheel(s) are present and zero if no wheels are present.

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. If the module cannot distinguish the orientation of the wheel or the wheel is of some other format, the format is set to VUID_WHEEL_FORMAT_UNKNOWN.

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 enabled by default.

Applications that want to change the stateflags should first get the current stateflags and then change only the bit they want.