|
1 |
|
2 /* ========================== Module _Evt =========================== */ |
|
3 |
|
4 #include "Python.h" |
|
5 |
|
6 #ifndef __LP64__ |
|
7 |
|
8 |
|
9 #include "pymactoolbox.h" |
|
10 |
|
11 /* Macro to test whether a weak-loaded CFM function exists */ |
|
12 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ |
|
13 PyErr_SetString(PyExc_NotImplementedError, \ |
|
14 "Not available in this shared library/OS version"); \ |
|
15 return NULL; \ |
|
16 }} while(0) |
|
17 |
|
18 |
|
19 #include <Carbon/Carbon.h> |
|
20 |
|
21 |
|
22 static PyObject *Evt_Error; |
|
23 |
|
24 static PyObject *Evt_GetMouse(PyObject *_self, PyObject *_args) |
|
25 { |
|
26 PyObject *_res = NULL; |
|
27 Point mouseLoc; |
|
28 #ifndef GetMouse |
|
29 PyMac_PRECHECK(GetMouse); |
|
30 #endif |
|
31 if (!PyArg_ParseTuple(_args, "")) |
|
32 return NULL; |
|
33 GetMouse(&mouseLoc); |
|
34 _res = Py_BuildValue("O&", |
|
35 PyMac_BuildPoint, mouseLoc); |
|
36 return _res; |
|
37 } |
|
38 |
|
39 static PyObject *Evt_Button(PyObject *_self, PyObject *_args) |
|
40 { |
|
41 PyObject *_res = NULL; |
|
42 Boolean _rv; |
|
43 #ifndef Button |
|
44 PyMac_PRECHECK(Button); |
|
45 #endif |
|
46 if (!PyArg_ParseTuple(_args, "")) |
|
47 return NULL; |
|
48 _rv = Button(); |
|
49 _res = Py_BuildValue("b", |
|
50 _rv); |
|
51 return _res; |
|
52 } |
|
53 |
|
54 static PyObject *Evt_StillDown(PyObject *_self, PyObject *_args) |
|
55 { |
|
56 PyObject *_res = NULL; |
|
57 Boolean _rv; |
|
58 #ifndef StillDown |
|
59 PyMac_PRECHECK(StillDown); |
|
60 #endif |
|
61 if (!PyArg_ParseTuple(_args, "")) |
|
62 return NULL; |
|
63 _rv = StillDown(); |
|
64 _res = Py_BuildValue("b", |
|
65 _rv); |
|
66 return _res; |
|
67 } |
|
68 |
|
69 static PyObject *Evt_WaitMouseUp(PyObject *_self, PyObject *_args) |
|
70 { |
|
71 PyObject *_res = NULL; |
|
72 Boolean _rv; |
|
73 #ifndef WaitMouseUp |
|
74 PyMac_PRECHECK(WaitMouseUp); |
|
75 #endif |
|
76 if (!PyArg_ParseTuple(_args, "")) |
|
77 return NULL; |
|
78 _rv = WaitMouseUp(); |
|
79 _res = Py_BuildValue("b", |
|
80 _rv); |
|
81 return _res; |
|
82 } |
|
83 |
|
84 static PyObject *Evt_GetCaretTime(PyObject *_self, PyObject *_args) |
|
85 { |
|
86 PyObject *_res = NULL; |
|
87 UInt32 _rv; |
|
88 #ifndef GetCaretTime |
|
89 PyMac_PRECHECK(GetCaretTime); |
|
90 #endif |
|
91 if (!PyArg_ParseTuple(_args, "")) |
|
92 return NULL; |
|
93 _rv = GetCaretTime(); |
|
94 _res = Py_BuildValue("l", |
|
95 _rv); |
|
96 return _res; |
|
97 } |
|
98 |
|
99 static PyObject *Evt_GetKeys(PyObject *_self, PyObject *_args) |
|
100 { |
|
101 PyObject *_res = NULL; |
|
102 KeyMap theKeys__out__; |
|
103 #ifndef GetKeys |
|
104 PyMac_PRECHECK(GetKeys); |
|
105 #endif |
|
106 if (!PyArg_ParseTuple(_args, "")) |
|
107 return NULL; |
|
108 GetKeys(theKeys__out__); |
|
109 _res = Py_BuildValue("s#", |
|
110 (char *)&theKeys__out__, (int)sizeof(KeyMap)); |
|
111 return _res; |
|
112 } |
|
113 |
|
114 static PyObject *Evt_GetDblTime(PyObject *_self, PyObject *_args) |
|
115 { |
|
116 PyObject *_res = NULL; |
|
117 UInt32 _rv; |
|
118 #ifndef GetDblTime |
|
119 PyMac_PRECHECK(GetDblTime); |
|
120 #endif |
|
121 if (!PyArg_ParseTuple(_args, "")) |
|
122 return NULL; |
|
123 _rv = GetDblTime(); |
|
124 _res = Py_BuildValue("l", |
|
125 _rv); |
|
126 return _res; |
|
127 } |
|
128 |
|
129 static PyObject *Evt_SetEventMask(PyObject *_self, PyObject *_args) |
|
130 { |
|
131 PyObject *_res = NULL; |
|
132 EventMask value; |
|
133 #ifndef SetEventMask |
|
134 PyMac_PRECHECK(SetEventMask); |
|
135 #endif |
|
136 if (!PyArg_ParseTuple(_args, "H", |
|
137 &value)) |
|
138 return NULL; |
|
139 SetEventMask(value); |
|
140 Py_INCREF(Py_None); |
|
141 _res = Py_None; |
|
142 return _res; |
|
143 } |
|
144 |
|
145 static PyObject *Evt_GetNextEvent(PyObject *_self, PyObject *_args) |
|
146 { |
|
147 PyObject *_res = NULL; |
|
148 Boolean _rv; |
|
149 EventMask eventMask; |
|
150 EventRecord theEvent; |
|
151 #ifndef GetNextEvent |
|
152 PyMac_PRECHECK(GetNextEvent); |
|
153 #endif |
|
154 if (!PyArg_ParseTuple(_args, "H", |
|
155 &eventMask)) |
|
156 return NULL; |
|
157 _rv = GetNextEvent(eventMask, |
|
158 &theEvent); |
|
159 _res = Py_BuildValue("bO&", |
|
160 _rv, |
|
161 PyMac_BuildEventRecord, &theEvent); |
|
162 return _res; |
|
163 } |
|
164 |
|
165 static PyObject *Evt_EventAvail(PyObject *_self, PyObject *_args) |
|
166 { |
|
167 PyObject *_res = NULL; |
|
168 Boolean _rv; |
|
169 EventMask eventMask; |
|
170 EventRecord theEvent; |
|
171 #ifndef EventAvail |
|
172 PyMac_PRECHECK(EventAvail); |
|
173 #endif |
|
174 if (!PyArg_ParseTuple(_args, "H", |
|
175 &eventMask)) |
|
176 return NULL; |
|
177 _rv = EventAvail(eventMask, |
|
178 &theEvent); |
|
179 _res = Py_BuildValue("bO&", |
|
180 _rv, |
|
181 PyMac_BuildEventRecord, &theEvent); |
|
182 return _res; |
|
183 } |
|
184 |
|
185 static PyObject *Evt_PostEvent(PyObject *_self, PyObject *_args) |
|
186 { |
|
187 PyObject *_res = NULL; |
|
188 OSErr _err; |
|
189 EventKind eventNum; |
|
190 UInt32 eventMsg; |
|
191 #ifndef PostEvent |
|
192 PyMac_PRECHECK(PostEvent); |
|
193 #endif |
|
194 if (!PyArg_ParseTuple(_args, "Hl", |
|
195 &eventNum, |
|
196 &eventMsg)) |
|
197 return NULL; |
|
198 _err = PostEvent(eventNum, |
|
199 eventMsg); |
|
200 if (_err != noErr) return PyMac_Error(_err); |
|
201 Py_INCREF(Py_None); |
|
202 _res = Py_None; |
|
203 return _res; |
|
204 } |
|
205 |
|
206 static PyObject *Evt_FlushEvents(PyObject *_self, PyObject *_args) |
|
207 { |
|
208 PyObject *_res = NULL; |
|
209 EventMask whichMask; |
|
210 EventMask stopMask; |
|
211 #ifndef FlushEvents |
|
212 PyMac_PRECHECK(FlushEvents); |
|
213 #endif |
|
214 if (!PyArg_ParseTuple(_args, "HH", |
|
215 &whichMask, |
|
216 &stopMask)) |
|
217 return NULL; |
|
218 FlushEvents(whichMask, |
|
219 stopMask); |
|
220 Py_INCREF(Py_None); |
|
221 _res = Py_None; |
|
222 return _res; |
|
223 } |
|
224 |
|
225 static PyObject *Evt_GetGlobalMouse(PyObject *_self, PyObject *_args) |
|
226 { |
|
227 PyObject *_res = NULL; |
|
228 Point globalMouse; |
|
229 #ifndef GetGlobalMouse |
|
230 PyMac_PRECHECK(GetGlobalMouse); |
|
231 #endif |
|
232 if (!PyArg_ParseTuple(_args, "")) |
|
233 return NULL; |
|
234 GetGlobalMouse(&globalMouse); |
|
235 _res = Py_BuildValue("O&", |
|
236 PyMac_BuildPoint, globalMouse); |
|
237 return _res; |
|
238 } |
|
239 |
|
240 static PyObject *Evt_GetCurrentKeyModifiers(PyObject *_self, PyObject *_args) |
|
241 { |
|
242 PyObject *_res = NULL; |
|
243 UInt32 _rv; |
|
244 #ifndef GetCurrentKeyModifiers |
|
245 PyMac_PRECHECK(GetCurrentKeyModifiers); |
|
246 #endif |
|
247 if (!PyArg_ParseTuple(_args, "")) |
|
248 return NULL; |
|
249 _rv = GetCurrentKeyModifiers(); |
|
250 _res = Py_BuildValue("l", |
|
251 _rv); |
|
252 return _res; |
|
253 } |
|
254 |
|
255 static PyObject *Evt_CheckEventQueueForUserCancel(PyObject *_self, PyObject *_args) |
|
256 { |
|
257 PyObject *_res = NULL; |
|
258 Boolean _rv; |
|
259 #ifndef CheckEventQueueForUserCancel |
|
260 PyMac_PRECHECK(CheckEventQueueForUserCancel); |
|
261 #endif |
|
262 if (!PyArg_ParseTuple(_args, "")) |
|
263 return NULL; |
|
264 _rv = CheckEventQueueForUserCancel(); |
|
265 _res = Py_BuildValue("b", |
|
266 _rv); |
|
267 return _res; |
|
268 } |
|
269 |
|
270 static PyObject *Evt_KeyScript(PyObject *_self, PyObject *_args) |
|
271 { |
|
272 PyObject *_res = NULL; |
|
273 short code; |
|
274 #ifndef KeyScript |
|
275 PyMac_PRECHECK(KeyScript); |
|
276 #endif |
|
277 if (!PyArg_ParseTuple(_args, "h", |
|
278 &code)) |
|
279 return NULL; |
|
280 KeyScript(code); |
|
281 Py_INCREF(Py_None); |
|
282 _res = Py_None; |
|
283 return _res; |
|
284 } |
|
285 |
|
286 static PyObject *Evt_IsCmdChar(PyObject *_self, PyObject *_args) |
|
287 { |
|
288 PyObject *_res = NULL; |
|
289 Boolean _rv; |
|
290 EventRecord event; |
|
291 short test; |
|
292 #ifndef IsCmdChar |
|
293 PyMac_PRECHECK(IsCmdChar); |
|
294 #endif |
|
295 if (!PyArg_ParseTuple(_args, "O&h", |
|
296 PyMac_GetEventRecord, &event, |
|
297 &test)) |
|
298 return NULL; |
|
299 _rv = IsCmdChar(&event, |
|
300 test); |
|
301 _res = Py_BuildValue("b", |
|
302 _rv); |
|
303 return _res; |
|
304 } |
|
305 |
|
306 static PyObject *Evt_LMGetKeyThresh(PyObject *_self, PyObject *_args) |
|
307 { |
|
308 PyObject *_res = NULL; |
|
309 SInt16 _rv; |
|
310 #ifndef LMGetKeyThresh |
|
311 PyMac_PRECHECK(LMGetKeyThresh); |
|
312 #endif |
|
313 if (!PyArg_ParseTuple(_args, "")) |
|
314 return NULL; |
|
315 _rv = LMGetKeyThresh(); |
|
316 _res = Py_BuildValue("h", |
|
317 _rv); |
|
318 return _res; |
|
319 } |
|
320 |
|
321 static PyObject *Evt_LMSetKeyThresh(PyObject *_self, PyObject *_args) |
|
322 { |
|
323 PyObject *_res = NULL; |
|
324 SInt16 value; |
|
325 #ifndef LMSetKeyThresh |
|
326 PyMac_PRECHECK(LMSetKeyThresh); |
|
327 #endif |
|
328 if (!PyArg_ParseTuple(_args, "h", |
|
329 &value)) |
|
330 return NULL; |
|
331 LMSetKeyThresh(value); |
|
332 Py_INCREF(Py_None); |
|
333 _res = Py_None; |
|
334 return _res; |
|
335 } |
|
336 |
|
337 static PyObject *Evt_LMGetKeyRepThresh(PyObject *_self, PyObject *_args) |
|
338 { |
|
339 PyObject *_res = NULL; |
|
340 SInt16 _rv; |
|
341 #ifndef LMGetKeyRepThresh |
|
342 PyMac_PRECHECK(LMGetKeyRepThresh); |
|
343 #endif |
|
344 if (!PyArg_ParseTuple(_args, "")) |
|
345 return NULL; |
|
346 _rv = LMGetKeyRepThresh(); |
|
347 _res = Py_BuildValue("h", |
|
348 _rv); |
|
349 return _res; |
|
350 } |
|
351 |
|
352 static PyObject *Evt_LMSetKeyRepThresh(PyObject *_self, PyObject *_args) |
|
353 { |
|
354 PyObject *_res = NULL; |
|
355 SInt16 value; |
|
356 #ifndef LMSetKeyRepThresh |
|
357 PyMac_PRECHECK(LMSetKeyRepThresh); |
|
358 #endif |
|
359 if (!PyArg_ParseTuple(_args, "h", |
|
360 &value)) |
|
361 return NULL; |
|
362 LMSetKeyRepThresh(value); |
|
363 Py_INCREF(Py_None); |
|
364 _res = Py_None; |
|
365 return _res; |
|
366 } |
|
367 |
|
368 static PyObject *Evt_LMGetKbdLast(PyObject *_self, PyObject *_args) |
|
369 { |
|
370 PyObject *_res = NULL; |
|
371 UInt8 _rv; |
|
372 #ifndef LMGetKbdLast |
|
373 PyMac_PRECHECK(LMGetKbdLast); |
|
374 #endif |
|
375 if (!PyArg_ParseTuple(_args, "")) |
|
376 return NULL; |
|
377 _rv = LMGetKbdLast(); |
|
378 _res = Py_BuildValue("b", |
|
379 _rv); |
|
380 return _res; |
|
381 } |
|
382 |
|
383 static PyObject *Evt_LMSetKbdLast(PyObject *_self, PyObject *_args) |
|
384 { |
|
385 PyObject *_res = NULL; |
|
386 UInt8 value; |
|
387 #ifndef LMSetKbdLast |
|
388 PyMac_PRECHECK(LMSetKbdLast); |
|
389 #endif |
|
390 if (!PyArg_ParseTuple(_args, "b", |
|
391 &value)) |
|
392 return NULL; |
|
393 LMSetKbdLast(value); |
|
394 Py_INCREF(Py_None); |
|
395 _res = Py_None; |
|
396 return _res; |
|
397 } |
|
398 |
|
399 static PyObject *Evt_LMGetKbdType(PyObject *_self, PyObject *_args) |
|
400 { |
|
401 PyObject *_res = NULL; |
|
402 UInt8 _rv; |
|
403 #ifndef LMGetKbdType |
|
404 PyMac_PRECHECK(LMGetKbdType); |
|
405 #endif |
|
406 if (!PyArg_ParseTuple(_args, "")) |
|
407 return NULL; |
|
408 _rv = LMGetKbdType(); |
|
409 _res = Py_BuildValue("b", |
|
410 _rv); |
|
411 return _res; |
|
412 } |
|
413 |
|
414 static PyObject *Evt_LMSetKbdType(PyObject *_self, PyObject *_args) |
|
415 { |
|
416 PyObject *_res = NULL; |
|
417 UInt8 value; |
|
418 #ifndef LMSetKbdType |
|
419 PyMac_PRECHECK(LMSetKbdType); |
|
420 #endif |
|
421 if (!PyArg_ParseTuple(_args, "b", |
|
422 &value)) |
|
423 return NULL; |
|
424 LMSetKbdType(value); |
|
425 Py_INCREF(Py_None); |
|
426 _res = Py_None; |
|
427 return _res; |
|
428 } |
|
429 |
|
430 static PyObject *Evt_TickCount(PyObject *_self, PyObject *_args) |
|
431 { |
|
432 PyObject *_res = NULL; |
|
433 UInt32 _rv; |
|
434 #ifndef TickCount |
|
435 PyMac_PRECHECK(TickCount); |
|
436 #endif |
|
437 if (!PyArg_ParseTuple(_args, "")) |
|
438 return NULL; |
|
439 _rv = TickCount(); |
|
440 _res = Py_BuildValue("l", |
|
441 _rv); |
|
442 return _res; |
|
443 } |
|
444 |
|
445 static PyObject *Evt_WaitNextEvent(PyObject *_self, PyObject *_args) |
|
446 { |
|
447 PyObject *_res = NULL; |
|
448 |
|
449 Boolean _rv; |
|
450 EventMask eventMask; |
|
451 EventRecord theEvent; |
|
452 UInt32 sleep; |
|
453 Handle mouseregion = (Handle)0; |
|
454 |
|
455 if (!PyArg_ParseTuple(_args, "Hl|O&", |
|
456 &eventMask, |
|
457 &sleep, |
|
458 OptResObj_Convert, &mouseregion)) |
|
459 return NULL; |
|
460 _rv = WaitNextEvent(eventMask, |
|
461 &theEvent, |
|
462 sleep, |
|
463 (RgnHandle)mouseregion); |
|
464 _res = Py_BuildValue("bO&", |
|
465 _rv, |
|
466 PyMac_BuildEventRecord, &theEvent); |
|
467 return _res; |
|
468 |
|
469 } |
|
470 |
|
471 static PyMethodDef Evt_methods[] = { |
|
472 {"GetMouse", (PyCFunction)Evt_GetMouse, 1, |
|
473 PyDoc_STR("() -> (Point mouseLoc)")}, |
|
474 {"Button", (PyCFunction)Evt_Button, 1, |
|
475 PyDoc_STR("() -> (Boolean _rv)")}, |
|
476 {"StillDown", (PyCFunction)Evt_StillDown, 1, |
|
477 PyDoc_STR("() -> (Boolean _rv)")}, |
|
478 {"WaitMouseUp", (PyCFunction)Evt_WaitMouseUp, 1, |
|
479 PyDoc_STR("() -> (Boolean _rv)")}, |
|
480 {"GetCaretTime", (PyCFunction)Evt_GetCaretTime, 1, |
|
481 PyDoc_STR("() -> (UInt32 _rv)")}, |
|
482 {"GetKeys", (PyCFunction)Evt_GetKeys, 1, |
|
483 PyDoc_STR("() -> (KeyMap theKeys)")}, |
|
484 {"GetDblTime", (PyCFunction)Evt_GetDblTime, 1, |
|
485 PyDoc_STR("() -> (UInt32 _rv)")}, |
|
486 {"SetEventMask", (PyCFunction)Evt_SetEventMask, 1, |
|
487 PyDoc_STR("(EventMask value) -> None")}, |
|
488 {"GetNextEvent", (PyCFunction)Evt_GetNextEvent, 1, |
|
489 PyDoc_STR("(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)")}, |
|
490 {"EventAvail", (PyCFunction)Evt_EventAvail, 1, |
|
491 PyDoc_STR("(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)")}, |
|
492 {"PostEvent", (PyCFunction)Evt_PostEvent, 1, |
|
493 PyDoc_STR("(EventKind eventNum, UInt32 eventMsg) -> None")}, |
|
494 {"FlushEvents", (PyCFunction)Evt_FlushEvents, 1, |
|
495 PyDoc_STR("(EventMask whichMask, EventMask stopMask) -> None")}, |
|
496 {"GetGlobalMouse", (PyCFunction)Evt_GetGlobalMouse, 1, |
|
497 PyDoc_STR("() -> (Point globalMouse)")}, |
|
498 {"GetCurrentKeyModifiers", (PyCFunction)Evt_GetCurrentKeyModifiers, 1, |
|
499 PyDoc_STR("() -> (UInt32 _rv)")}, |
|
500 {"CheckEventQueueForUserCancel", (PyCFunction)Evt_CheckEventQueueForUserCancel, 1, |
|
501 PyDoc_STR("() -> (Boolean _rv)")}, |
|
502 {"KeyScript", (PyCFunction)Evt_KeyScript, 1, |
|
503 PyDoc_STR("(short code) -> None")}, |
|
504 {"IsCmdChar", (PyCFunction)Evt_IsCmdChar, 1, |
|
505 PyDoc_STR("(EventRecord event, short test) -> (Boolean _rv)")}, |
|
506 {"LMGetKeyThresh", (PyCFunction)Evt_LMGetKeyThresh, 1, |
|
507 PyDoc_STR("() -> (SInt16 _rv)")}, |
|
508 {"LMSetKeyThresh", (PyCFunction)Evt_LMSetKeyThresh, 1, |
|
509 PyDoc_STR("(SInt16 value) -> None")}, |
|
510 {"LMGetKeyRepThresh", (PyCFunction)Evt_LMGetKeyRepThresh, 1, |
|
511 PyDoc_STR("() -> (SInt16 _rv)")}, |
|
512 {"LMSetKeyRepThresh", (PyCFunction)Evt_LMSetKeyRepThresh, 1, |
|
513 PyDoc_STR("(SInt16 value) -> None")}, |
|
514 {"LMGetKbdLast", (PyCFunction)Evt_LMGetKbdLast, 1, |
|
515 PyDoc_STR("() -> (UInt8 _rv)")}, |
|
516 {"LMSetKbdLast", (PyCFunction)Evt_LMSetKbdLast, 1, |
|
517 PyDoc_STR("(UInt8 value) -> None")}, |
|
518 {"LMGetKbdType", (PyCFunction)Evt_LMGetKbdType, 1, |
|
519 PyDoc_STR("() -> (UInt8 _rv)")}, |
|
520 {"LMSetKbdType", (PyCFunction)Evt_LMSetKbdType, 1, |
|
521 PyDoc_STR("(UInt8 value) -> None")}, |
|
522 {"TickCount", (PyCFunction)Evt_TickCount, 1, |
|
523 PyDoc_STR("() -> (UInt32 _rv)")}, |
|
524 {"WaitNextEvent", (PyCFunction)Evt_WaitNextEvent, 1, |
|
525 PyDoc_STR("(EventMask eventMask, UInt32 sleep [,RegionHandle]) -> (Boolean _rv, EventRecord theEvent)")}, |
|
526 {NULL, NULL, 0} |
|
527 }; |
|
528 |
|
529 |
|
530 #else /* __LP64__ */ |
|
531 |
|
532 static PyMethodDef Evt_methods[] = { |
|
533 {NULL, NULL, 0} |
|
534 }; |
|
535 #endif /* __LP64__ */ |
|
536 |
|
537 |
|
538 void init_Evt(void) |
|
539 { |
|
540 PyObject *m; |
|
541 #ifndef __LP64__ |
|
542 PyObject *d; |
|
543 #endif /* __LP64__ */ |
|
544 |
|
545 |
|
546 |
|
547 |
|
548 m = Py_InitModule("_Evt", Evt_methods); |
|
549 #ifndef __LP64__ |
|
550 d = PyModule_GetDict(m); |
|
551 Evt_Error = PyMac_GetOSErrException(); |
|
552 if (Evt_Error == NULL || |
|
553 PyDict_SetItemString(d, "Error", Evt_Error) != 0) |
|
554 return; |
|
555 #endif /* __LP64__ */ |
|
556 } |
|
557 |
|
558 /* ======================== End module _Evt ========================= */ |
|
559 |