static int dequeueKeyEvent (unsigned char *set, unsigned char *key, int *press) { Queue *queue = getKeyEventQueue(0); if (keyReleaseEvent) { if (afterTimePeriod(&keyReleasePeriod, NULL)) { if (!addKeyEvent(keyReleaseEvent)) return 0; keyReleaseEvent = NULL; } } if (queue) { KeyEvent *event; while ((event = dequeueItem(queue))) { #ifdef ENABLE_API if (apiStarted) { if ((api_handleKeyEvent(event->set, event->key, event->press)) == EOF) { deallocateKeyEvent(event); continue; } } #endif /* ENABLE_API */ *set = event->set; *key = event->key; *press = event->press; deallocateKeyEvent(event); return 1; } } return 0; }
static int apiHandleKeyEvent (KeyGroup group, KeyNumber number, int press) { if (!apiStarted) return 0; return api_handleKeyEvent(group, number, press); }