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
Evt_GetMouse(PyObject * _self,PyObject * _args)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
Evt_Button(PyObject * _self,PyObject * _args)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
Evt_StillDown(PyObject * _self,PyObject * _args)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
Evt_WaitMouseUp(PyObject * _self,PyObject * _args)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
Evt_GetCaretTime(PyObject * _self,PyObject * _args)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
Evt_GetKeys(PyObject * _self,PyObject * _args)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
Evt_GetDblTime(PyObject * _self,PyObject * _args)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
Evt_SetEventMask(PyObject * _self,PyObject * _args)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
Evt_GetNextEvent(PyObject * _self,PyObject * _args)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
Evt_EventAvail(PyObject * _self,PyObject * _args)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
Evt_PostEvent(PyObject * _self,PyObject * _args)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
Evt_FlushEvents(PyObject * _self,PyObject * _args)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
Evt_GetGlobalMouse(PyObject * _self,PyObject * _args)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
Evt_GetCurrentKeyModifiers(PyObject * _self,PyObject * _args)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
Evt_CheckEventQueueForUserCancel(PyObject * _self,PyObject * _args)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
Evt_KeyScript(PyObject * _self,PyObject * _args)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
Evt_IsCmdChar(PyObject * _self,PyObject * _args)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
Evt_LMGetKeyThresh(PyObject * _self,PyObject * _args)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
Evt_LMSetKeyThresh(PyObject * _self,PyObject * _args)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
Evt_LMGetKeyRepThresh(PyObject * _self,PyObject * _args)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
Evt_LMSetKeyRepThresh(PyObject * _self,PyObject * _args)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
Evt_LMGetKbdLast(PyObject * _self,PyObject * _args)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
Evt_LMSetKbdLast(PyObject * _self,PyObject * _args)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
Evt_LMGetKbdType(PyObject * _self,PyObject * _args)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
Evt_LMSetKbdType(PyObject * _self,PyObject * _args)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
Evt_TickCount(PyObject * _self,PyObject * _args)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
Evt_WaitNextEvent(PyObject * _self,PyObject * _args)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
init_Evt(void)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
560