
devmouse controls the screen blanking timeout, so move the code there avoiding cross calls between modules. the only function that needs to be provided is blankscreen(), which gets called with drawlock locked. the blank timeout is set thru /dev/mousectl now, so kernels without devvga can set it. blanking now only happens while /dev/mouse is read. so this avoids accidentally blanking the screen on cpu servers that do not have a mouse to unblank it.
228 lines
4.6 KiB
Text
228 lines
4.6 KiB
Text
.TH MOUSE 3
|
|
.SH NAME
|
|
mouse, cursor \- kernel mouse interface
|
|
.SH SYNOPSIS
|
|
.nf
|
|
.B bind -a #m /dev
|
|
|
|
.B /dev/mouse
|
|
.B /dev/mousein
|
|
.B /dev/mousectl
|
|
.B /dev/cursor
|
|
.fi
|
|
.SH DESCRIPTION
|
|
The
|
|
.I mouse
|
|
device provides an interface to the mouse.
|
|
There is also a cursor associated with the screen;
|
|
it is always displayed at the current mouse position.
|
|
.PP
|
|
Reading the
|
|
.B mouse
|
|
file returns the mouse status: its position and button state.
|
|
The read blocks until the state has changed since the last read.
|
|
The read returns 49 bytes: the letter
|
|
.B m
|
|
followed by four decimal strings, each 11 characters
|
|
wide followed by a blank:
|
|
.I x
|
|
and
|
|
.IR y ,
|
|
coordinates of the mouse position in the screen image;
|
|
.IR buttons ,
|
|
a bitmask with the
|
|
1, 2, and 4 bits set when the
|
|
mouse's left, middle, and right buttons,
|
|
respectively, are down;
|
|
and
|
|
.IR msec ,
|
|
a time stamp, in units of milliseconds.
|
|
.PP
|
|
Writing the
|
|
.B mouse
|
|
file, in the same format,
|
|
causes the mouse cursor to move to the position specified by the
|
|
.I x
|
|
and
|
|
.I y
|
|
coordinates of the message.
|
|
The
|
|
.I buttons
|
|
and
|
|
.I msec
|
|
fields are ignored and may be omitted.
|
|
.PP
|
|
Writes to the
|
|
.B mousein
|
|
file are processed as if they were generated by the
|
|
mouse hardware itself,
|
|
as extra mouse events to be processed and passed back via
|
|
the
|
|
.B mouse
|
|
file.
|
|
The
|
|
.B mousein
|
|
file, which is exclusive-use and may be opened
|
|
only by the host owner, is intended for controlling devices, such as USB mice,
|
|
that are managed by user-level software.
|
|
Each event should consist of
|
|
the letter
|
|
.B m
|
|
followed by delta
|
|
.IR x ,
|
|
delta
|
|
.IR y ,
|
|
and
|
|
.IR buttons
|
|
as space-separated decimal numbers.
|
|
.PP
|
|
Writing to the
|
|
.B mousectl
|
|
file configures and controls the mouse.
|
|
The messages are:
|
|
.TF ps2intellimouse
|
|
.TP
|
|
.B "serial\fI n\fP"
|
|
sets serial port
|
|
.I n
|
|
to be the mouse port.
|
|
.TP
|
|
.B ps2
|
|
sets the PS2 port to be the mouse port.
|
|
.TP
|
|
.B intellimouse
|
|
uses the wheel on a Microsoft Intellimouse
|
|
as the middle button.
|
|
.TP
|
|
.B ps2intellimouse
|
|
is equivalent to a write of
|
|
.B ps2
|
|
followed by a write of
|
|
.BR intellimouse .
|
|
.TP
|
|
.B "accelerated\fI [n]\fP"
|
|
turns on mouse acceleration.
|
|
.I N
|
|
is an optional acceleration factor.
|
|
.TP
|
|
.B linear
|
|
turns off mouse acceleration.
|
|
.TP
|
|
.B "res\fI n\fR"
|
|
sets mouse resolution to a setting between 0 and
|
|
3 inclusive.
|
|
.TP
|
|
.B "hwaccel\fI on/off\fP"
|
|
sets whether acceleration is done in hardware or
|
|
software.
|
|
By default, PS2 mice use hardware and serial mice use
|
|
software.
|
|
Some laptops (notably the IBM Thinkpad T23) don't
|
|
implement hardware acceleration for external mice.
|
|
.TP
|
|
.B swap
|
|
swaps the left and right buttons on the mouse.
|
|
.TP
|
|
.B "buttonmap\fI xyz\fP"
|
|
numbers the left, middle, and right mouse buttons
|
|
.IR x ,
|
|
.IR y ,
|
|
and
|
|
.IR z ,
|
|
respectively.
|
|
If
|
|
.I xyz
|
|
is omitted, the default map, 123, is used.
|
|
Thus in the default state writing
|
|
.B "buttonmap 321
|
|
swaps left and right buttons
|
|
and writing
|
|
.B "buttonmap 123
|
|
or just
|
|
.B buttonmap
|
|
restores their usual meaning.
|
|
Note that
|
|
.B buttonmap
|
|
messages are idempotent,
|
|
unlike
|
|
.BR swap .
|
|
.TP
|
|
.B reset
|
|
clears the mouse
|
|
to its default state.
|
|
.TP
|
|
.B blank
|
|
Blank the screen.
|
|
The screen also blanks after 30 minutes of inactivity.
|
|
The screen can be unblanked by moving the mouse.
|
|
.TP
|
|
.BI blanktime " minutes"
|
|
Set the timeout before the
|
|
screen blanks; the default is 30 minutes.
|
|
If
|
|
.I minutes
|
|
is zero, blanking is disabled.
|
|
.TP
|
|
.B twitch
|
|
unblanks the screen and resets the idle timeout as if the
|
|
mouse was twitched.
|
|
.PD
|
|
.PP
|
|
Not all mice interpret all messages; with some devices,
|
|
some of the messages may be no-ops.
|
|
.PP
|
|
Cursors are described in
|
|
.IR graphics (2).
|
|
When read or written from or to the
|
|
.B cursor
|
|
file, they are represented in a 72-byte binary format.
|
|
The first and second four bytes are little endian
|
|
32-bit numbers specifying the
|
|
.I x
|
|
and
|
|
.I y
|
|
coordinates of the cursor
|
|
.IR offset ;
|
|
the next 32 bytes are the
|
|
.B clr
|
|
bitmask,
|
|
and the last 32 bytes the
|
|
.B set
|
|
bitmask.
|
|
.PP
|
|
Reading from the
|
|
.B cursor
|
|
file returns the current cursor information.
|
|
Writing to the
|
|
.B cursor
|
|
file sets the current cursor information.
|
|
A write of fewer than 72 bytes sets the
|
|
cursor to the default, an arrow.
|
|
.PP
|
|
The
|
|
.B mouse
|
|
and
|
|
.B cursor
|
|
files are multiplexed by
|
|
.IR rio (1)
|
|
to give the illusion of a private mouse to each of its clients.
|
|
The semantics are otherwise the same except that notification
|
|
of a window resize is passed to the application using a
|
|
.B mouse
|
|
message beginning with
|
|
.B r
|
|
rather than
|
|
.BR m ;
|
|
see
|
|
.IR rio (4)
|
|
for details.
|
|
.PP
|
|
To cope with pointing devices with only two buttons, when the
|
|
shift key is pressed, the right mouse button generates middle-button events.
|
|
.SH SOURCE
|
|
.B /sys/src/9/port/devmouse.c
|
|
.SH "SEE ALSO
|
|
.IR rio (4)
|
|
.SH BUGS
|
|
The cursor format is big endian while the
|
|
rest of the graphics interface is little endian.
|