mouse(HW)
mouse --
mouse device driver for bus, serial, and PS/2 mouse devices
Description
The mouse device driver supports
several types of mouse devices:
-
Logitech bus mouse that attaches to a plug-in
card and is designed to be used in an eight-bit card
slot
-
Logitech serial type mouse that plugs directly into a serial port
connector
-
PS/2 compatible mouse that connects to a PS/2 auxiliary port
-
Microsoft bus mouse that attaches to a plug-in card and
is designed to be used in an eight-bit card slot
-
Microsoft serial type mouse that plugs directly into a serial port connector
-
Mouse Systems Corporation (MSC) compatible serial mouse that plugs
into a serial port.
The driver will support multiple
mouse applications running in virtual terminal screens, both
under the UNIX System and MS-DOS via SimulTask,
VP/ix, Merge, or another similar product.
Support for mouse administration is also provided.
See
mouseadmin(C).
The following ioctl commands are supported:
MOUSEIOCMON-
Used exclusively by /usr/lib/mousemgr to receive open and close
commands from /dev/mouse driver.
MOUSEISOPEN-
Used exclusively by mouseadmin.
Returns 16-byte character array indicating which mouse devices
are currently open; 1 is open, 0 is not open.
The array is in the linear order established by
/usr/bin/mouseadmin in building the display and device map
pairs.
MOUSEIOCCONFIG-
Used exclusively by
mouseadmin
to configure display and mouse pairs.
The mse_cfg data structure
is used to pass display and device mapping and map
pair count information to the driver:
struct mse_cfg {
struct mousemap *mapping;
unsigned count;
}
struct mousemap {
dev_t disp_dev;
dev_t mse_dev;
}
int type;
MOUSEIOCREAD-
Read mouse position and status data.
The following data structure
is used to return mouse position information to a user
application:
struct mouseinfo {
unsigned char status;
char xmotion:
char ymotion;
}
MOUSEIOCREAD will set errno to EFAULT for failure
to return a valid mouseinfo structure.
The status
byte contains the button state information
according to the following format:
0 Mv Lc Mc Rc L M R
where:
Mv:-
is 1 if the mouse has moved since last MOUSEIOCREAD
Lc:-
is 1 if Left button has changed state since last MOUSEIOCREAD
Mc:-
is 1 if Middle button has changed state since last MOUSEIOCREAD
Rc:-
is 1 if Right button has changed state since last MOUSEIOCREAD
L:-
current state of Left button (1 == depressed)
M:-
current state of Middle button
R:-
current state of Right button
The Mv bit is required because the total x and y delta since the
last MOUSEIOCREAD ioctl could be 0 yet the mouse may have been moved.
The Lc
, Mc
, and Rc
bits
are required for a similar reason;
if a button had been pushed and released since the last MOUSEIOCREAD
ioctl, the current state bit would be unchanged but the application
would want to know the button had been pushed.
The xmotion
and ymotion
fields are signed quantities
relative to the previous position in the range -127 to 127.
Deltas that would overflow a signed char have been truncated.
MOUSE320-
Used to send commands and receive responses from the
PS/2 compatible mouse devices.
Failed MOUSE320 commands will return ENXIO
as the errno value.
The following data structure is used to pass
commands, status, and position information between the driver and a
user application:
struct cmd_320 {
int cmd;
int arg1;
int arg2;
int arg3;
}
Valid commands for the PS/2 compatible devices are as follows:
MSERESET-
Reset mouse.
MSERESEND-
Resend last data.
MSESETDEF-
Set default status.
MSEOFF-
Disable mouse.
MSEON-
Enable mouse.
MSESPROMPT-
Set prompt mode.
MSEECHON-
Set echo mode.
MSEECHOFF-
Reset echo mode.
MSESTREAM-
Set stream mode.
MSESETRES-
Set resolution (counts per millimeter).
Valid arg1 values are as follows:
00 = 1 count/mm.
01 = 2 count/mm.
02 = 4 count/mm.
03 = 8 count/mm.
MSESCALE2-
Set 2:1 scaling.
MSESCALE1-
Set 1:1 scaling.
MSECHGMOD-
Set sampling rate (reports per second).
Valid arg1 values are as follows:
0A = 10 reports/sec.
14 = 20 reports/sec.
28 = 40 reports/sec.
3C = 60 reports/sec.
50 = 80 reports/sec.
64 = 100 reports/sec.
C8 = 200 reports/sec.
MSEGETDEV-
read device type returns a
zero (0) for the PS/2 compatible mouse.
MSEREPORT-
Read mouse report returns three-byte mouse/button position
where bytes two and three are 9-bit 2's complement
relative motions with the 9th bit (sign bit) coming from byte 1.
Byte 1-
b0 - left button (1 == depressed)
b1 - right button
b2 - middle button
b3 - always 1
b4 - X data sign (1 == negative)
b5 - Y data sign
b6 - X data overflow
b7 - Y data overflow
Byte 2-
X axis position data
Byte 3-
Y axis position data
MSESTATREQ-
Status request returns three-byte report with the following format:
Byte 1-
b0 - right button (1 == depressed)
b1 - middle button
b2 - left button
b3 - always 0
b4 - scaling 1:1 = 0, 2:1 = 1
b5 - disabled(0)/enabled(1)
b6 - stream(0)/prompt(1) mode
b7 - always 0
Byte 2-
b0 - 6 current resolution
b7 - always 0
Byte 3-
b0 - 7 current sampling rate
MSETIMEOUT-
Specifies the timing window for the emulation of the middle
mouse button on a 2 button mouse. The range is from 10ms to 100ms.
If the user presses the left mouse button and the right
mouse button within this timing window, a middle button event is
generated.
Files
/dev/mouse
/usr/lib/mousemgr
/usr/include/sys/mouse.h
References
mouseadmin(C)
Notices
The mouse also supports queue mode for accessing
mouse input, both motion and button events; see
display(HW)
for more information on the KDQUEMODE ioctl.
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 - 02 June 2005