|
|
1.1 root 1: .\"$Header: mouse.4,v 10.1 86/11/19 10:56:12 jg Exp $
2: .\"$Source: /u1/X/libibm/doc/man/RCS/mouse.4,v $
3: .\"Contains -man macros and eqn source
4: .TH MOUSE 4 "30 Sep 1985" "Space overwritten by .AC macro" " "
5: .UC 4
6: .AC 1 0
7: .SH NAME
8: mouse \- mouse interface
9: .SH SYNOPSIS
10: .B "pseudo-device ms"
11: .SH DESCRIPTION
12: The mouse driver provides a low-level interface to the
13: mouse for the IBM RT PC.
14: A
15: .IR tty (4)-like
16: interface is provided, in that
17: the kernel uses
18: internal tty
19: protocols for buffering data to read data from the interface. Thus, the
20: system calls
21: .IR select (2)
22: and
23: .IR fcntl (2)
24: relating to non-blocking I/O may be used.
25: Commands are issued to the mouse through the standard
26: .IR ioctl (2)
27: mechanism,
28: although
29: none of the terminal-specific
30: .IR ioctl s
31: apply and that the mouse is always in ``mouse-discipline'' mode.
32: .PP
33: The mouse can only be opened by one process at a time; subsequent
34: processes will receive ENXIO in response to
35: .IR open (2)
36: calls.
37: .SS Data
38: The data structures necessary for communicating with the mouse are
39: provided in
40: .IR <machineio/mouseio.h> .
41: This file also includes macros for interpreting the mouse stream data,
42: and symbolic names for the commands the mouse understands.
43: .PP
44: Since many applications expect a three-button mouse,
45: a three-button mouse is simulated by indicating
46: a middle button when both buttons are depressed.
47: This means that an application program will never see a data report
48: indicating that both buttons are pressed.
49: There is a small
50: delay in recognizing a single button,
51: in order to
52: allow smooth recognition of both buttons, since one cannot
53: always press
54: both buttons at exactly the same time.
55: In addition,
56: a single button from a middle
57: (double-button) transition will not be reported
58: until both buttons have been released and
59: then the single button pressed.
60: .SS Commands
61: The commands available to the user through
62: .I ioctls
63: are defined in
64: .I <machineio/mouseio.h>
65: and described below.
66: When in
67: .I stream
68: mode, the driver will disable the mouse
69: before issuing commands which expect responses.
70: .IP MSIC_STREAM
71: Sets the mouse in
72: .I stream
73: mode which, when enabled, sends unsolicited
74: data reports.
75: This is the default after the mouse has been opened.
76: .IP MSIC_REMOTE
77: Sets the mouse to
78: .I remote
79: mode, where it will send data
80: reports only in response to a
81: MSIC_READXY
82: command;
83: no unsolicited data will be sent.
84: .IP MSIC_STATUS
85: The current mouse status data report, as defined in
86: .IR <machineio/mouseio.h> ,
87: will be placed in the passed four-byte character pointer.
88: Note that the status report contains the true state of the buttons;
89: a middle button is not simulated.
90: .IP MSIC_READXY
91: This will solicit a data report from the mouse even if it hasn't
92: been moved or button conditions have not changed. MSIC_READXY
93: can be used in either
94: .I stream
95: or
96: .I remote
97: mode.
98: In
99: .I stream
100: mode, the driver will disable the mouse
101: before performing the read.
102: .IP MSIC_ENABLE
103: Enable the mouse to send unsolicited data reports in
104: .I stream
105: mode.
106: This is the default after the mouse has been opened.
107: .IP MSIC_DISABLE
108: Prohibits the mouse from sending unsolicited data reports in
109: .I stream
110: mode.
111:
112: .IP MSIC_EXP
113: An exponential transform is applied to data reported by the mouse, as
114: follows:
115: .IP
116: .\" Pipe the following through eqn or neqn, as appropriate,
117: .\" to generate the corresponding nroff/troff code.
118: .\" (in vi, copy, mark, and pipe through sed s/...// | eqn)
119: .\".EQ
120: .\"delim @@
121: .\"ndefine sup '"^"'
122: .\"tdefine Z @ roman sign (x) cdot (2 sup N )@
123: .\"ndefine Z @ (( sign (x) ) (2 sup N ))@
124: .\".EN
125: .\"Let @x@ be the number of counts accumulated in the sample interval.
126: .\"The value reported will be @Z@
127: .\"where
128: .\".IP
129: .\".RS
130: .\".RS
131: .\".EQ
132: .\"tdefine Y '{roman abs ( x ) cdot roman rate } over roman resolution ~-~ 3 .'
133: .\"ndefine Y '(( abs ( x ) ) ( rate ) ) / ( resolution - 3 . )'
134: .\"N = Y
135: .\".RE
136: .\".RE
137: .\".EN
138: .if n \{\
139: .\"nroff code goes here
140: .EQ
141: .nr 99 \n(.s
142: .nr 98 \n(.f
143: .ps 10
144: .ft 1
145: .ps \n(99
146: .ft \n(98
147: .EN
148: .nr 99 \n(.s
149: .nr 98 \n(.f
150: .rm 11
151: .as 11 "Let
152: .ps 10
153: .ft 1
154: .ds 12 "x
155: .ds 12 \x'0'\f1\s10\*(12\|\s\n(99\f\n(98
156: .as 11 \*(12
157: .ps \n(99
158: .ft \n(98
159: .as 11 " be the number of counts accumulated in the sample interval.
160: .ps \n(99
161: .ft \n(98
162: \*(11
163: .nr 99 \n(.s
164: .nr 98 \n(.f
165: .rm 11
166: .as 11 "The value reported will be
167: .ps 10
168: .ft 1
169: .ds 12 "\f1(\fP\|\f1(\fP
170: .ds 13 "sign
171: .as 12 "\|\*(13
172: .ds 13 "\f1(\fPx\|\f1)\fP
173: .as 12 "\|\*(13
174: .ds 13 "\f1)\fP
175: .as 12 "\|\*(13
176: .ds 13 "\f1(\fP\|\f12\fP
177: .as 12 "\|\*(13
178: .ds 13 "^
179: .as 12 "\|\*(13
180: .ds 13 "N
181: .as 12 "\|\*(13
182: .ds 13 "\f1)\fP\|\f1)\fP
183: .as 12 "\|\*(13
184: .ds 12 \x'0'\f1\s10\*(12\|\s\n(99\f\n(98
185: .as 11 \*(12
186: .ps \n(99
187: .ft \n(98
188: .as 11 "
189: .ps \n(99
190: .ft \n(98
191: \*(11
192: where
193: .IP
194: .RS
195: .RS
196: .EQ
197: .nr 99 \n(.s
198: .nr 98 \n(.f
199: .ps 10
200: .ft 1
201: .ds 11 "N
202: .ds 12 "\(eq
203: .as 11 "\|\*(12
204: .ds 12 "\f1(\fP\|\f1(\fP
205: .as 11 "\|\*(12
206: .ds 12 "abs
207: .as 11 "\|\*(12
208: .ds 12 "\f1(\fP
209: .as 11 "\|\*(12
210: .ds 12 "x
211: .as 11 "\|\*(12
212: .ds 12 "\f1)\fP
213: .as 11 "\|\*(12
214: .ds 12 "\f1)\fP
215: .as 11 "\|\*(12
216: .ds 12 "\f1(\fP
217: .as 11 "\|\*(12
218: .ds 12 "rate
219: .as 11 "\|\*(12
220: .ds 12 "\f1)\fP
221: .as 11 "\|\*(12
222: .ds 12 "\f1)\fP
223: .as 11 "\|\*(12
224: .ds 12 "\(sl
225: .as 11 "\|\*(12
226: .ds 12 "\f1(\fP
227: .as 11 "\|\*(12
228: .ds 12 "resolution
229: .as 11 "\|\*(12
230: .ds 12 "\(mi
231: .as 11 "\|\*(12
232: .ds 12 "\f13\fP
233: .as 11 "\|\*(12
234: .ds 12 ".
235: .as 11 "\*(12
236: .ds 12 "\f1)\fP
237: .as 11 "\*(12
238: .ds 11 \x'0'\f1\s10\*(11\|\s\n(99\f\n(98
239: .nr 11 \w'\*(11'
240: .nr MK 0
241: .if 40>\n(.v .ne 40u
242: .rn 11 10
243: \*(10
244: .ps \n(99
245: .ft \n(98
246: .RE
247: .RE
248: .EN
249: .\"end of nroff code
250: .\}
251: .if t \{\
252: .\"troff code goes here
253: .EQ
254: .nr 99 \n(.s
255: .nr 98 \n(.f
256: .ps 10
257: .ft 2
258: .ps \n(99
259: .ft \n(98
260: .EN
261: .nr 99 \n(.s
262: .nr 98 \n(.f
263: .rm 11
264: .as 11 "Let
265: .ps 10
266: .ft 2
267: .ds 12 "x
268: .ds 12 \x'0'\f2\s10\*(12\|\s\n(99\f\n(98
269: .as 11 \*(12
270: .ps \n(99
271: .ft \n(98
272: .as 11 " be the number of counts accumulated in the sample interval.
273: .ps \n(99
274: .ft \n(98
275: \*(11
276: .nr 99 \n(.s
277: .nr 98 \n(.f
278: .rm 11
279: .as 11 "The value reported will be
280: .ps 10
281: .ft 2
282: .ft 1
283: .ds 12 "sign
284: .ds 12 \f1\*(12\f2
285: .ft 2
286: .ds 13 "\f1(\fPx\|\f1)\fP
287: .as 12 "\*(13
288: .ds 13 "\v'-.3m'.\v'.3m'
289: .as 12 "\*(13
290: .ds 13 "\f1(\fP\f12\fP
291: .ds 14 "N
292: .as 13 \v'-24u'\s-3\*(14\s+3\|\v'24u'
293: .as 12 "\*(13
294: .ds 13 "\f1)\fP
295: .as 12 "\*(13
296: .ds 12 \x'0'\f2\s10\*(12\s\n(99\f\n(98
297: .as 11 \*(12
298: .ps \n(99
299: .ft \n(98
300: .as 11 "
301: .ps \n(99
302: .ft \n(98
303: \*(11
304: where
305: .IP
306: .RS
307: .RS
308: .EQ
309: .nr 99 \n(.s
310: .nr 98 \n(.f
311: .ps 10
312: .ft 2
313: .ds 11 "N
314: .ds 12 "\(eq
315: .as 11 "\|\*(12
316: .ft 1
317: .ds 12 "abs
318: .ds 12 \f1\*(12\f2
319: .ft 2
320: .ds 13 "\f1(\fP
321: .as 12 "\*(13
322: .ds 13 "x
323: .as 12 "\*(13
324: .ds 13 "\f1)\fP
325: .as 12 "\|\*(13
326: .ds 13 "\v'-.3m'.\v'.3m'
327: .as 12 "\*(13
328: .ft 1
329: .ds 13 "rate
330: .ds 13 \f1\*(13\f2
331: .ft 2
332: .as 12 "\*(13
333: .ft 1
334: .ds 13 "resolution
335: .ds 13 \f1\*(13\f2
336: .ft 2
337: .nr 12 \w'\s10\*(12'
338: .nr 13 \w'\s10\*(13'
339: .nr 14 \n(12
340: .if \n(13>\n(14 .nr 14 \n(13
341: .nr 14 \n(14+\s10.5m\s0
342: .ds 12 \v'42u'\h'\n(14u-\n(13u/2u'\*(13\
343: \h'-\n(13u-\n(12u/2u'\v'-78u'\*(12\
344: \h'-\n(14u-\n(12u/2u+.1m'\v'18u'\l'\n(14u-.2m'\h'.1m'\v'18u'
345: .as 11 "\*(12
346: .ds 12 "\
347: .as 11 "\*(12
348: .ds 12 "\(mi
349: .as 11 "\*(12
350: .ds 12 "\
351: .as 11 "\*(12
352: .ds 12 "\f13\fP
353: .as 11 "\*(12
354: .ds 12 ".
355: .as 11 "\*(12
356: .ds 11 \x'0'\x'0-24u'\f2\s10\*(11\s\n(99\f\n(98\x'30u'
357: .nr 11 \w'\*(11'
358: .nr MK 0
359: .if 138>\n(.v .ne 138u
360: .rn 11 10
361: \*(10
362: .ps \n(99
363: .ft \n(98
364: .RE
365: .RE
366: .EN
367: .\"end of troff code
368: .\}
369: .IP
370: This scaling applies only to mouse-generated reports.
371: Reports generated in response to
372: MSIC_READXY
373: are always linear.
374: .IP MSIC_LINEAR
375: Set the mouse back to linear scaling, where the value reported is the number
376: of counts. This is the default after the mouse has been opened.
377: .IP MSIC_SAMP
378: Set the mouse sampling rate.
379: The argument passed in the
380: .I ioctl
381: must contain the desired sampling reate in counts per second.
382: Legal
383: values are 10, 20, 40, 60, 80 and 100.
384: These are provided in
385: .I <machineio/mouseio.h>
386: as MS_RATE_10, MS_RATE_20, ..., MS_RATE_100 respectively.
387: The default after the mouse has been opened is
388: MS_RATE_100.
389: .IP MSIC_RESL
390: Set the mouse resolution.
391: The argument passed must contain the the required resolution in counts
392: per inch.
393: Legal resolutions are 25, 50, 100, 200.
394: These are provided in
395: .I <machineio/mouseio.h>
396: as MS_RES_25, MS_RES_50, MS_RES_100, MS_RES_200, respectively.
397: The default after the mouse has been opened is
398: MS_RES_100.
399: .SH FILES
400: /dev/mouse
401: .SH "SEE ALSO"
402: tty(4), select(2)
403: .br
404: .IR "IBM RT PC Technical Reference Manual" ,
405: ``Adapter'', section 3.1.4
406: .br
407: .IR "IBM RT PC Technical Reference Manual" ,
408: ``Mouse'', section 6.2
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.