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 560