Blame


1 cfa37a7b 2004-04-10 devnull .TH EVENT 3
2 cfa37a7b 2004-04-10 devnull .SH NAME
3 cfa37a7b 2004-04-10 devnull event, einit, estart, estartfn, etimer, eread, emouse, ekbd, ecanread, ecanmouse, ecankbd, ereadmouse, eatomouse, eresized, egetrect, edrawgetrect, emenuhit, emoveto, esetcursor, Event, Mouse, Menu \- graphics events
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .nf
6 cfa37a7b 2004-04-10 devnull .PP
7 cfa37a7b 2004-04-10 devnull .B
8 cfa37a7b 2004-04-10 devnull #include <u.h>
9 cfa37a7b 2004-04-10 devnull .B
10 cfa37a7b 2004-04-10 devnull #include <libc.h>
11 cfa37a7b 2004-04-10 devnull .B
12 cfa37a7b 2004-04-10 devnull #include <draw.h>
13 cfa37a7b 2004-04-10 devnull .B
14 cfa37a7b 2004-04-10 devnull #include <event.h>
15 cfa37a7b 2004-04-10 devnull .B
16 cfa37a7b 2004-04-10 devnull #include <cursor.h>
17 cfa37a7b 2004-04-10 devnull .ta \w'\fLRectangle 'u
18 cfa37a7b 2004-04-10 devnull .PP
19 cfa37a7b 2004-04-10 devnull .B
20 cfa37a7b 2004-04-10 devnull void einit(ulong keys)
21 cfa37a7b 2004-04-10 devnull .PP
22 cfa37a7b 2004-04-10 devnull .B
23 cfa37a7b 2004-04-10 devnull ulong event(Event *e)
24 cfa37a7b 2004-04-10 devnull .PP
25 cfa37a7b 2004-04-10 devnull .B
26 cfa37a7b 2004-04-10 devnull Mouse emouse(void)
27 cfa37a7b 2004-04-10 devnull .PP
28 cfa37a7b 2004-04-10 devnull .B
29 cfa37a7b 2004-04-10 devnull int ekbd(void)
30 cfa37a7b 2004-04-10 devnull .PP
31 cfa37a7b 2004-04-10 devnull .B
32 cfa37a7b 2004-04-10 devnull int ecanmouse(void)
33 cfa37a7b 2004-04-10 devnull .PP
34 cfa37a7b 2004-04-10 devnull .B
35 cfa37a7b 2004-04-10 devnull int ecankbd(void)
36 cfa37a7b 2004-04-10 devnull .PP
37 cfa37a7b 2004-04-10 devnull .B
38 cfa37a7b 2004-04-10 devnull int ereadmouse(Mouse *m)
39 cfa37a7b 2004-04-10 devnull .PP
40 cfa37a7b 2004-04-10 devnull .B
41 cfa37a7b 2004-04-10 devnull int eatomouse(Mouse *m, char *buf, int n)
42 cfa37a7b 2004-04-10 devnull .PP
43 cfa37a7b 2004-04-10 devnull .B
44 cfa37a7b 2004-04-10 devnull ulong estart(ulong key, int fd, int n)
45 cfa37a7b 2004-04-10 devnull .PP
46 cfa37a7b 2004-04-10 devnull .B
47 cfa37a7b 2004-04-10 devnull ulong estartfn(int id, ulong key, int fd, int n,
48 cfa37a7b 2004-04-10 devnull .B
49 cfa37a7b 2004-04-10 devnull int (*fn)(Event*, uchar*, int))
50 cfa37a7b 2004-04-10 devnull .PP
51 cfa37a7b 2004-04-10 devnull .B
52 cfa37a7b 2004-04-10 devnull ulong etimer(ulong key, int n)
53 cfa37a7b 2004-04-10 devnull .PP
54 cfa37a7b 2004-04-10 devnull .B
55 cfa37a7b 2004-04-10 devnull ulong eread(ulong keys, Event *e)
56 cfa37a7b 2004-04-10 devnull .PP
57 cfa37a7b 2004-04-10 devnull .B
58 cfa37a7b 2004-04-10 devnull int ecanread(ulong keys)
59 cfa37a7b 2004-04-10 devnull .PP
60 cfa37a7b 2004-04-10 devnull .B
61 cfa37a7b 2004-04-10 devnull void eresized(int new)
62 cfa37a7b 2004-04-10 devnull .PP
63 cfa37a7b 2004-04-10 devnull .B
64 cfa37a7b 2004-04-10 devnull Rectangle egetrect(int but, Mouse *m)
65 cfa37a7b 2004-04-10 devnull .PP
66 cfa37a7b 2004-04-10 devnull .B
67 cfa37a7b 2004-04-10 devnull void edrawgetrect(Rectangle r, int up)
68 cfa37a7b 2004-04-10 devnull .PP
69 cfa37a7b 2004-04-10 devnull .B
70 cfa37a7b 2004-04-10 devnull int emenuhit(int but, Mouse *m, Menu *menu)
71 cfa37a7b 2004-04-10 devnull .PP
72 cfa37a7b 2004-04-10 devnull .PP
73 cfa37a7b 2004-04-10 devnull .B
74 cfa37a7b 2004-04-10 devnull int emoveto(Point p)
75 cfa37a7b 2004-04-10 devnull .PP
76 cfa37a7b 2004-04-10 devnull .PP
77 cfa37a7b 2004-04-10 devnull .B
78 cfa37a7b 2004-04-10 devnull int esetcursor(Cursor *c)
79 cfa37a7b 2004-04-10 devnull .PP
80 cfa37a7b 2004-04-10 devnull .B
81 cfa37a7b 2004-04-10 devnull extern Mouse *mouse
82 cfa37a7b 2004-04-10 devnull .PP
83 cfa37a7b 2004-04-10 devnull .B
84 cfa37a7b 2004-04-10 devnull enum{
85 cfa37a7b 2004-04-10 devnull .B
86 cfa37a7b 2004-04-10 devnull Emouse = 1,
87 cfa37a7b 2004-04-10 devnull .B
88 cfa37a7b 2004-04-10 devnull Ekeyboard = 2,
89 cfa37a7b 2004-04-10 devnull .B
90 cfa37a7b 2004-04-10 devnull };
91 cfa37a7b 2004-04-10 devnull .PP
92 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
93 cfa37a7b 2004-04-10 devnull These routines provide an interface to multiple sources of input for unthreaded
94 cfa37a7b 2004-04-10 devnull programs.
95 cfa37a7b 2004-04-10 devnull Threaded programs (see
96 d32deab1 2020-08-16 rsc .MR thread (3) )
97 cfa37a7b 2004-04-10 devnull should instead use the threaded mouse and keyboard interface described
98 cfa37a7b 2004-04-10 devnull in
99 d32deab1 2020-08-16 rsc .MR mouse (3)
100 cfa37a7b 2004-04-10 devnull and
101 d32deab1 2020-08-16 rsc .MR keyboard (3) .
102 cfa37a7b 2004-04-10 devnull .PP
103 cfa37a7b 2004-04-10 devnull .I Einit
104 cfa37a7b 2004-04-10 devnull must be called first.
105 cfa37a7b 2004-04-10 devnull If the argument to
106 cfa37a7b 2004-04-10 devnull .I einit
107 cfa37a7b 2004-04-10 devnull has the
108 cfa37a7b 2004-04-10 devnull .B Emouse
109 cfa37a7b 2004-04-10 devnull and
110 cfa37a7b 2004-04-10 devnull .B Ekeyboard
111 cfa37a7b 2004-04-10 devnull bits set,
112 cfa37a7b 2004-04-10 devnull the mouse and keyboard events will be enabled;
113 cfa37a7b 2004-04-10 devnull in this case,
114 cfa37a7b 2004-04-10 devnull .IR initdraw
115 cfa37a7b 2004-04-10 devnull (see
116 d32deab1 2020-08-16 rsc .MR graphics (3) )
117 cfa37a7b 2004-04-10 devnull must have already been called.
118 cfa37a7b 2004-04-10 devnull The user must provide a function called
119 cfa37a7b 2004-04-10 devnull .IR eresized
120 cfa37a7b 2004-04-10 devnull to be called whenever the window in which the process
121 cfa37a7b 2004-04-10 devnull is running has been resized; the argument
122 cfa37a7b 2004-04-10 devnull .I new
123 cfa37a7b 2004-04-10 devnull is a flag specifying whether the program must call
124 cfa37a7b 2004-04-10 devnull .I getwindow
125 cfa37a7b 2004-04-10 devnull (see
126 d32deab1 2020-08-16 rsc .MR graphics (3) )
127 cfa37a7b 2004-04-10 devnull to re-establish a connection to its window.
128 cfa37a7b 2004-04-10 devnull After resizing (and perhaps calling
129 cfa37a7b 2004-04-10 devnull .IR getwindow ),
130 cfa37a7b 2004-04-10 devnull the global variable
131 cfa37a7b 2004-04-10 devnull .B screen
132 cfa37a7b 2004-04-10 devnull will be updated to point to the new window's
133 cfa37a7b 2004-04-10 devnull .B Image
134 cfa37a7b 2004-04-10 devnull structure.
135 cfa37a7b 2004-04-10 devnull .PP
136 cfa37a7b 2004-04-10 devnull As characters are typed on the keyboard, they are read by the
137 cfa37a7b 2004-04-10 devnull event mechanism and put in a queue.
138 cfa37a7b 2004-04-10 devnull .I Ekbd
139 cfa37a7b 2004-04-10 devnull returns the next rune from the queue, blocking until the
140 cfa37a7b 2004-04-10 devnull queue is non-empty.
141 058b0118 2005-01-03 devnull The characters are read in raw mode,
142 058b0118 2005-01-03 devnull .\" (see
143 058b0118 2005-01-03 devnull .\" .IR cons (3)),
144 cfa37a7b 2004-04-10 devnull so they are available as soon as a complete rune is typed.
145 cfa37a7b 2004-04-10 devnull .PP
146 cfa37a7b 2004-04-10 devnull When the mouse moves or a mouse button is pressed or released,
147 cfa37a7b 2004-04-10 devnull a new mouse event is queued by the event mechanism.
148 cfa37a7b 2004-04-10 devnull .I Emouse
149 cfa37a7b 2004-04-10 devnull returns the next mouse event from the queue, blocking until the
150 cfa37a7b 2004-04-10 devnull queue is non-empty.
151 cfa37a7b 2004-04-10 devnull .I Emouse
152 cfa37a7b 2004-04-10 devnull returns a
153 cfa37a7b 2004-04-10 devnull .B Mouse
154 cfa37a7b 2004-04-10 devnull structure:
155 cfa37a7b 2004-04-10 devnull .IP
156 cfa37a7b 2004-04-10 devnull .EX
157 cfa37a7b 2004-04-10 devnull .ta 6n +\w'Point 'u
158 cfa37a7b 2004-04-10 devnull struct Mouse
159 cfa37a7b 2004-04-10 devnull {
160 cfa37a7b 2004-04-10 devnull int buttons;
161 cfa37a7b 2004-04-10 devnull Point xy;
162 cfa37a7b 2004-04-10 devnull ulong msec;
163 cfa37a7b 2004-04-10 devnull };
164 cfa37a7b 2004-04-10 devnull .EE
165 cfa37a7b 2004-04-10 devnull .PP
166 cfa37a7b 2004-04-10 devnull .B Buttons&1
167 cfa37a7b 2004-04-10 devnull is set when the left mouse button is pressed,
168 cfa37a7b 2004-04-10 devnull .B buttons&2
169 cfa37a7b 2004-04-10 devnull when the middle button is pressed,
170 cfa37a7b 2004-04-10 devnull and
171 cfa37a7b 2004-04-10 devnull .B buttons&4
172 cfa37a7b 2004-04-10 devnull when the right button is pressed.
173 cfa37a7b 2004-04-10 devnull The current mouse position is always returned in
174 cfa37a7b 2004-04-10 devnull .BR xy .
175 cfa37a7b 2004-04-10 devnull .B Msec
176 cfa37a7b 2004-04-10 devnull is a time stamp in units of milliseconds.
177 cfa37a7b 2004-04-10 devnull .PP
178 cfa37a7b 2004-04-10 devnull .I Ecankbd
179 cfa37a7b 2004-04-10 devnull and
180 cfa37a7b 2004-04-10 devnull .I ecanmouse
181 cfa37a7b 2004-04-10 devnull return non-zero when there are keyboard or mouse events available
182 cfa37a7b 2004-04-10 devnull to be read.
183 cfa37a7b 2004-04-10 devnull .PP
184 cfa37a7b 2004-04-10 devnull .I Ereadmouse
185 cfa37a7b 2004-04-10 devnull reads the next mouse event from the file descriptor connected to the mouse,
186 cfa37a7b 2004-04-10 devnull converts the textual data into a
187 cfa37a7b 2004-04-10 devnull .B Mouse
188 cfa37a7b 2004-04-10 devnull structure by calling
189 cfa37a7b 2004-04-10 devnull .I eatomouse
190 cfa37a7b 2004-04-10 devnull with the buffer and count from the read call,
191 cfa37a7b 2004-04-10 devnull and returns the number of bytes read, or \-1 for an error.
192 cfa37a7b 2004-04-10 devnull .PP
193 cfa37a7b 2004-04-10 devnull .I Estart
194 cfa37a7b 2004-04-10 devnull can be used to register additional file descriptors to scan for input.
195 cfa37a7b 2004-04-10 devnull It takes as arguments the file descriptor to register,
196 cfa37a7b 2004-04-10 devnull the maximum length of an event message on that descriptor,
197 cfa37a7b 2004-04-10 devnull and a key to be used in accessing the event.
198 cfa37a7b 2004-04-10 devnull The key must be a power of 2 and must not conflict with any previous keys.
199 cfa37a7b 2004-04-10 devnull If a zero key is given, a key will be allocated and returned.
200 cfa37a7b 2004-04-10 devnull .I Estartfn
201 cfa37a7b 2004-04-10 devnull is similar to
202 cfa37a7b 2004-04-10 devnull .IR estart ,
203 cfa37a7b 2004-04-10 devnull but processes the data received by calling
204 cfa37a7b 2004-04-10 devnull .I fn
205 cfa37a7b 2004-04-10 devnull before returning the event to the user.
206 cfa37a7b 2004-04-10 devnull The function
207 cfa37a7b 2004-04-10 devnull .I fn
208 cfa37a7b 2004-04-10 devnull is called with the
209 cfa37a7b 2004-04-10 devnull .B id
210 cfa37a7b 2004-04-10 devnull of the event; it should return
211 cfa37a7b 2004-04-10 devnull .B id
212 cfa37a7b 2004-04-10 devnull if the event is to be passed to the user,
213 cfa37a7b 2004-04-10 devnull .B 0
214 cfa37a7b 2004-04-10 devnull if it is to be ignored.
215 cfa37a7b 2004-04-10 devnull The variable
216 cfa37a7b 2004-04-10 devnull .B Event.v
217 cfa37a7b 2004-04-10 devnull can be used by
218 cfa37a7b 2004-04-10 devnull .I fn
219 cfa37a7b 2004-04-10 devnull to attach an arbitrary data item to the returned
220 cfa37a7b 2004-04-10 devnull .B Event
221 cfa37a7b 2004-04-10 devnull structure.
222 cfa37a7b 2004-04-10 devnull .B
223 cfa37a7b 2004-04-10 devnull Ekeyboard
224 cfa37a7b 2004-04-10 devnull and
225 cfa37a7b 2004-04-10 devnull .B Emouse
226 cfa37a7b 2004-04-10 devnull are the keyboard and mouse event keys.
227 cfa37a7b 2004-04-10 devnull .PP
228 cfa37a7b 2004-04-10 devnull .I Etimer
229 cfa37a7b 2004-04-10 devnull starts a repeating timer with a period of
230 cfa37a7b 2004-04-10 devnull .I n
231 cfa37a7b 2004-04-10 devnull milliseconds; it returns the timer event key, or zero if it fails.
232 cfa37a7b 2004-04-10 devnull Only one timer can be started.
233 cfa37a7b 2004-04-10 devnull Extra timer events are not queued and the timer channel has no associated data.
234 cfa37a7b 2004-04-10 devnull .PP
235 cfa37a7b 2004-04-10 devnull .I Eread
236 cfa37a7b 2004-04-10 devnull waits for the next event specified by the mask
237 cfa37a7b 2004-04-10 devnull .I keys
238 cfa37a7b 2004-04-10 devnull of event keys submitted to
239 cfa37a7b 2004-04-10 devnull .IR estart .
240 cfa37a7b 2004-04-10 devnull It fills in the appropriate field of the argument
241 cfa37a7b 2004-04-10 devnull .B Event
242 cfa37a7b 2004-04-10 devnull structure, which looks like:
243 cfa37a7b 2004-04-10 devnull .IP
244 cfa37a7b 2004-04-10 devnull .EX
245 cfa37a7b 2004-04-10 devnull struct Event
246 cfa37a7b 2004-04-10 devnull {
247 cfa37a7b 2004-04-10 devnull int kbdc;
248 cfa37a7b 2004-04-10 devnull Mouse mouse;
249 cfa37a7b 2004-04-10 devnull int n;
250 cfa37a7b 2004-04-10 devnull void *v;
251 cfa37a7b 2004-04-10 devnull uchar data[EMAXMSG];
252 cfa37a7b 2004-04-10 devnull };
253 cfa37a7b 2004-04-10 devnull .EE
254 cfa37a7b 2004-04-10 devnull .PP
255 cfa37a7b 2004-04-10 devnull .B Data
256 cfa37a7b 2004-04-10 devnull is an array which is large enough to hold a 9P message.
257 cfa37a7b 2004-04-10 devnull .I Eread
258 cfa37a7b 2004-04-10 devnull returns the key for the event which was chosen.
259 cfa37a7b 2004-04-10 devnull For example, if a mouse event was read,
260 cfa37a7b 2004-04-10 devnull .B Emouse
261 cfa37a7b 2004-04-10 devnull will be returned.
262 cfa37a7b 2004-04-10 devnull .PP
263 cfa37a7b 2004-04-10 devnull .I Event
264 cfa37a7b 2004-04-10 devnull waits for the next event of any kind.
265 cfa37a7b 2004-04-10 devnull The return is the same as for
266 cfa37a7b 2004-04-10 devnull .IR eread .
267 cfa37a7b 2004-04-10 devnull .PP
268 cfa37a7b 2004-04-10 devnull As described in
269 d32deab1 2020-08-16 rsc .MR graphics (3) ,
270 cfa37a7b 2004-04-10 devnull the graphics functions are buffered.
271 cfa37a7b 2004-04-10 devnull .IR Event ,
272 cfa37a7b 2004-04-10 devnull .IR eread ,
273 cfa37a7b 2004-04-10 devnull .IR emouse ,
274 cfa37a7b 2004-04-10 devnull and
275 cfa37a7b 2004-04-10 devnull .I ekbd
276 cfa37a7b 2004-04-10 devnull all cause a buffer flush unless there is an event of the
277 cfa37a7b 2004-04-10 devnull appropriate type already queued.
278 cfa37a7b 2004-04-10 devnull .PP
279 cfa37a7b 2004-04-10 devnull .I Ecanread
280 cfa37a7b 2004-04-10 devnull checks whether a call to
281 cfa37a7b 2004-04-10 devnull .B eread(keys)
282 cfa37a7b 2004-04-10 devnull would block, returning 0 if it would, 1 if it would not.
283 cfa37a7b 2004-04-10 devnull .PP
284 cfa37a7b 2004-04-10 devnull .I Getrect
285 cfa37a7b 2004-04-10 devnull prompts the user to sweep a rectangle.
286 cfa37a7b 2004-04-10 devnull It should be called with
287 cfa37a7b 2004-04-10 devnull .I m
288 cfa37a7b 2004-04-10 devnull holding the mouse event that triggered the
289 cfa37a7b 2004-04-10 devnull .I egetrect
290 cfa37a7b 2004-04-10 devnull (or, if none, a
291 cfa37a7b 2004-04-10 devnull .B Mouse
292 cfa37a7b 2004-04-10 devnull with
293 cfa37a7b 2004-04-10 devnull .B buttons
294 cfa37a7b 2004-04-10 devnull set to 7).
295 cfa37a7b 2004-04-10 devnull It changes to the sweep cursor,
296 cfa37a7b 2004-04-10 devnull waits for the buttons all to be released,
297 cfa37a7b 2004-04-10 devnull and then waits for button number
298 cfa37a7b 2004-04-10 devnull .I but
299 cfa37a7b 2004-04-10 devnull to be pressed, marking the initial corner.
300 cfa37a7b 2004-04-10 devnull If another button is pressed instead,
301 cfa37a7b 2004-04-10 devnull .I egetrect
302 cfa37a7b 2004-04-10 devnull returns a rectangle
303 cfa37a7b 2004-04-10 devnull with zero for both corners, after
304 cfa37a7b 2004-04-10 devnull waiting for all the buttons to be released.
305 cfa37a7b 2004-04-10 devnull Otherwise,
306 cfa37a7b 2004-04-10 devnull .I egetrect
307 cfa37a7b 2004-04-10 devnull continually draws the swept rectangle
308 cfa37a7b 2004-04-10 devnull until the button is released again, and returns the swept rectangle.
309 cfa37a7b 2004-04-10 devnull The mouse structure pointed to by
310 cfa37a7b 2004-04-10 devnull .I m
311 cfa37a7b 2004-04-10 devnull will contain the final mouse event.
312 cfa37a7b 2004-04-10 devnull .PP
313 cfa37a7b 2004-04-10 devnull .I Egetrect
314 cfa37a7b 2004-04-10 devnull uses successive calls to
315 cfa37a7b 2004-04-10 devnull .I edrawgetrect
316 cfa37a7b 2004-04-10 devnull to maintain the red rectangle showing the sweep-in-progress.
317 cfa37a7b 2004-04-10 devnull The rectangle to be drawn is specified by
318 cfa37a7b 2004-04-10 devnull .I rc
319 cfa37a7b 2004-04-10 devnull and the
320 cfa37a7b 2004-04-10 devnull .I up
321 cfa37a7b 2004-04-10 devnull parameter says whether to draw (1) or erase (0) the rectangle.
322 cfa37a7b 2004-04-10 devnull .PP
323 cfa37a7b 2004-04-10 devnull .I Emenuhit
324 cfa37a7b 2004-04-10 devnull displays a menu and returns a selected menu item number.
325 cfa37a7b 2004-04-10 devnull It should be called with
326 cfa37a7b 2004-04-10 devnull .I m
327 cfa37a7b 2004-04-10 devnull holding the mouse event that triggered the
328 cfa37a7b 2004-04-10 devnull .IR emenuhit ;
329 cfa37a7b 2004-04-10 devnull it will call
330 cfa37a7b 2004-04-10 devnull .I emouse
331 cfa37a7b 2004-04-10 devnull to update it.
332 cfa37a7b 2004-04-10 devnull A
333 cfa37a7b 2004-04-10 devnull .B Menu
334 cfa37a7b 2004-04-10 devnull is a structure:
335 cfa37a7b 2004-04-10 devnull .IP
336 cfa37a7b 2004-04-10 devnull .EX
337 cfa37a7b 2004-04-10 devnull struct Menu
338 cfa37a7b 2004-04-10 devnull {
339 cfa37a7b 2004-04-10 devnull char **item;
340 cfa37a7b 2004-04-10 devnull char *(*gen)(int);
341 cfa37a7b 2004-04-10 devnull int lasthit;
342 cfa37a7b 2004-04-10 devnull };
343 cfa37a7b 2004-04-10 devnull .EE
344 cfa37a7b 2004-04-10 devnull .PP
345 cfa37a7b 2004-04-10 devnull If
346 cfa37a7b 2004-04-10 devnull .B item
347 cfa37a7b 2004-04-10 devnull is nonzero, it should be a null-terminated array of the character strings
348 cfa37a7b 2004-04-10 devnull to be displayed as menu items.
349 cfa37a7b 2004-04-10 devnull Otherwise,
350 cfa37a7b 2004-04-10 devnull .B gen
351 cfa37a7b 2004-04-10 devnull should be a function that, given an item number, returns the character
352 cfa37a7b 2004-04-10 devnull string for that item, or zero if the number is past the end of the list.
353 cfa37a7b 2004-04-10 devnull Items are numbered starting at zero.
354 cfa37a7b 2004-04-10 devnull .I Menuhit
355 cfa37a7b 2004-04-10 devnull waits until
356 cfa37a7b 2004-04-10 devnull .I but
357 cfa37a7b 2004-04-10 devnull is released, and then returns the number of the selection,
358 cfa37a7b 2004-04-10 devnull or \-1 for no selection.
359 cfa37a7b 2004-04-10 devnull The
360 cfa37a7b 2004-04-10 devnull .I m
361 cfa37a7b 2004-04-10 devnull argument is filled in with the final mouse event.
362 cfa37a7b 2004-04-10 devnull .PP
363 cfa37a7b 2004-04-10 devnull .I Emoveto
364 cfa37a7b 2004-04-10 devnull moves the mouse cursor to the position
365 cfa37a7b 2004-04-10 devnull .B p
366 cfa37a7b 2004-04-10 devnull on the screen.
367 cfa37a7b 2004-04-10 devnull .PP
368 cfa37a7b 2004-04-10 devnull .I Esetcursor
369 cfa37a7b 2004-04-10 devnull changes the cursor image to that described by the
370 cfa37a7b 2004-04-10 devnull .B Cursor
371 cfa37a7b 2004-04-10 devnull .I c
372 cfa37a7b 2004-04-10 devnull (see
373 d32deab1 2020-08-16 rsc .MR mouse (3) ).
374 cfa37a7b 2004-04-10 devnull If
375 cfa37a7b 2004-04-10 devnull .B c
376 cfa37a7b 2004-04-10 devnull is nil, it restores the image to the default arrow.
377 cfa37a7b 2004-04-10 devnull .SH SOURCE
378 c3674de4 2005-01-11 devnull .B \*9/src/libdraw
379 cfa37a7b 2004-04-10 devnull .SH "SEE ALSO"
380 d32deab1 2020-08-16 rsc .MR rio (1) ,
381 d32deab1 2020-08-16 rsc .MR graphics (3) ,
382 d32deab1 2020-08-16 rsc .MR plumb (3) ,
383 058b0118 2005-01-03 devnull .\" .IR cons (3),
384 d32deab1 2020-08-16 rsc .MR draw (3)