/* * solIo.c * * remade by A.Fujita, DEC-16-1992 */ #include "sol.h" #include "solKbd.h" int lastEventTime = 0; static void (* solIoHandler)(); void solSetIoHandler( ioHandler ) void (* ioHandler)(); { #ifdef DEBUG fprintf(stderr, "solSetIoHandler\t[solIo.c]\tStart\n"); #endif solIoHandler = ioHandler; #ifdef DEBUG fprintf(stderr, "solSetIoHandler\t[solIo.c]\tEnd\n"); #endif } void solWakeupProc(blockData, result, pReadmask) pointer blockData; unsigned long result; pointer pReadmask; { long devicesReadable[mskcnt]; if(result <= 0) return; MASKANDSETBITS(devicesReadable, LastSelectMask, EnabledDevices); if(ANYSET(devicesReadable)) { (* solIoHandler)(); } } void ProcessInputEvents() { mieqProcessInputEvents(); miPointerUpdate(); } solDevEvt evtbuf[MAXEVENTS]; void solEnqueueEvents() { DevicePtr pPtr; DevicePtr pKbd; struct msdata *ptrEvents; unsigned char *KbdEvents; register int numEvt; register solDevEvtPtr evp; Bool ptrRetry, kbdRetry; pPtr = LookupPointerDevice(); pKbd = LookupKeyboardDevice(); evp = evtbuf; numEvt = solDevGetEvents(evp); while (numEvt-- > 0) { if (evp->type == EvtKey) { solKbdEnqueueEvent(pKbd, evp); } else { solMouseEnqueueEvent(pPtr, evp); } evp++; } /* if (!pPtr->on || !pKbd->on) return; kbdRetry = TRUE; while( kbdRetry ) { KbdEvents = solKbdGetEvents(pKbd, &nk, &kbdRetry); while(nk--) { solKbdEnqueueEvent(pKbd, KbdEvents++); } } ptrRetry = TRUE; while( ptrRetry ) { ptrEvents = solMouseGetEvents(pPtr, &np, &ptrRetry); while(np--) { solMouseEnqueueEvent(pPtr, ptrEvents++); } } */ }