index

x-kbd-plugins

start in programs/Xserver/hw/xfree86/common/xf86Xinput.c

xEvent is static (on stack), owned by the caller:

we call -> public.processInputProc

or, new call: after pumping all the queue, push the time:

Very similar to the pumping of SyncEvents.

So, 2 calls: processEvent, stepInTime.

processEvent:

called only if keyboard not frozen. So, plugins must accept an event anytime?

if (plugin->frozen) push_in_queue (plugin->input_queue)

How do we step through the chain?

if (plugin->next)

{ if (do we have something to output) // This should consider the input queue of the ->next plugin! plugin->next->proc(keybd, plugin->next, event);

our_current_time = first_in_internal_queue or the time we were told.

if (plugin->next->wake_time && (our_current_time > plugin->next->wake_time)) plugin->next->step_in_time(keybd, plugin->next, event); }

}

when we are given time: again, we maybe deliver an event, and then some more time. maybe. we adjust the current_time.