XIALLOWEVENTS(3)
πΈ XIALLOWEVENTS(3) β the XIAllowEvents era, bestie π
okay so. welcome to XIALLOWEVENTS(3), the page about XIAllowEvents β aka the "release queued events" function. it's giving traffic controller energy for your frozen devices, and honestly? iconic.
β¨ NAME β¨
XIAllowEvents β release queued events π
π SYNOPSIS π
#include <X11/extensions/XInput2.h>
Status XIAllowEvents( Display *display,
int deviceid,
int event_mode,
Time time );
Status XIAllowTouchEvents( Display *dpy,
int deviceid,
unsigned int touchid,
Window grab_window,
int event_mode );
and here's what all the little guys mean, bestie π«Ά
displayβ the connection to the X server. your lil phone line to the server fr fr.deviceβ the device that's about to get grabbed or released πevent_modeβ this one's the main character: it says whether a device gets thawed and events get replayed, or how a grabbed touch sequence should be handled.timeβ a valid server time, orCurrentTime.touchidβ the ID of the touch sequence to accept or reject. lowkey it gets ignored for any event mode that isn'tAcceptTouchorRejectTouch, so don't stress about it there.grab_windowβ the window on which you accept or reject a touch sequence grab. same deal: ignored for event modes other thanAcceptTouchandRejectTouch.
π DESCRIPTION π
the XIAllowEvents request releases some queued events if the client has caused a device to freeze. it's also the one you call for touch grab and ownership processing. multitasking queen π
no cap, this function does absolutely nothing if the time you specified is earlier than the last-grab time of the most recent active grab for the client, or if the time you specified is later than the current X server time. and heads up β the time parameter must be CurrentTime for requests with event modes of XIAcceptTouch and XIRejectTouch. periodt.
so here's the tea on what actually happens, depending on which constant you hand to the event_mode argument β
XIAsyncDeviceβ if the specified device is frozen by the client, event processing for that device just continues as usual. if the device got frozen multiple times by the client on behalf of multiple separate grabs,XIAsyncDevicethaws for all of them. it has no effect if the specified device isn't frozen by the client β but plot twist, the device doesn't even need to be grabbed by the client. π«XISyncDeviceβ if the specified device is frozen and actively grabbed by the client, event processing for that device continues normally until the next button press or release, or key press or release, or a gesture begin or end event (depends on the grab) gets reported to the client. at that moment, the specified device goes right back to looking frozen again. but if the reported event causes the grab to be released, then the specified device does not freeze.XISyncDevicehas no effect if the specified device isn't frozen by the client, or isn't grabbed by the client.XIReplayDeviceβ if the specified device is actively grabbed by the client and is frozen as the result of an event having been sent to the client (either from activating aXIGrabButtonor from a previousXIAllowEventswith modeSyncDevice, but not from aGrab), then the grab is released and that event is completely reprocessed. this time, though, the request ignores any passive grabs at or above (towards the root) the grab window of the grab just released. the request has no effect if the specified device isn't grabbed by the client, or if it isn't frozen as the result of an event. and ooh β in the case of a gesture begin event being replayed, the original grabbing client will receive aXI_GesturePinchEndorXI_GestureSwipeEndevent. π«ΆXIAsyncPairedDeviceβ if the paired master device is frozen by the client, event processing for it continues as usual. if the paired device got frozen multiple times by the client on behalf of multiple separate grabs,XIAsyncPairedDevicethaws for all. it has no effect if the device isn't frozen by the client β but those devices don't need to be grabbed by the client. also,XIAsyncPairedDevicehas no effect ifdeviceidspecifies a slave device. π«XISyncPairβ if both the device and the paired master device are frozen by the client, event processing (for both devices) continues normally until the nextXI_ButtonPress,XI_ButtonRelease,XI_KeyPress, orXI_KeyReleaseevent is reported to the client for a grabbed device (button event for a pointer, key event for a keyboard), at which time the devices again appear to freeze. however, if the reported event causes the grab to be released, then the devices don't freeze β but if the other device is still grabbed, then a subsequent event for it will still cause both devices to freeze.XISyncPairhas no effect unless both the device and the paired master device are frozen by the client. if the device or paired master device got frozen twice by the client on behalf of two separate grabs,XISyncPairthaws for both (but a subsequent freeze forXISyncPairwill only freeze each device once). and yup βXISyncPairhas no effect ifdeviceidspecifies a slave device.XIAsyncPairβ if the device and the paired master device are frozen by the client, event processing for both devices continues normally. if a device is frozen twice by the client on behalf of two separate grabs,AsyncBoththaws for both.XIAsyncPairhas no effect unless both the device and the paired master device are frozen by the client. alsoXIAsyncPairhas no effect ifdeviceidspecifies a slave device. πXIAcceptTouchβ the client is deemed to have taken control of the touch sequence once it owns the sequence.TouchEndevents will be sent to all clients listening to the touch sequence that have either grabbed the touch sequence on a child window of thegrab_window, or have received events for the touch sequence through event selection. those clients will no longer receive anyTouchUpdateevents. slay, ownership secured πXIRejectTouchβ the client is no longer interested in the touch sequence, and will receive aXI_TouchEndevent. if the client is the current owner of the sequence, ownership gets passed on to the next listener. it's giving "not it" π
π©· DIAGNOSTICS π©·
the error list, bestie. read it, love it, fear it a little:
BadDeviceβ an invaliddeviceidwas specified. πBadAccessβ this error may occur ifevent_modeisXIAcceptTouchand this client is not the current or potential owner of the specified touch ID.BadValueβ this error may occur ifevent_modeisXIAcceptTouchand touch ID is invalid.BadWindowβ a value for agrab_windowargument does not name a defined Window.
π₯ SEE ALSO π₯
XIGrabButton(3) β go read that one next, iykyk β¨
okay that's the whole page, you ate it up π this was the XIALLOWEVENTS(3) page, dated 05/18/2026, and the footer was just XIALLOWEVENTS(3) again because the man page loves a lil repetition. bye bestie, go thaw something ππ¦
π¦ where this page comes from
- fedora 44: libXi-devel 1.8.3-1.fc44 Β· MIT-open-group AND SMLNJ AND MIT
- fedora 44: libXi-devel 1.8.3-1.fc44 Β· MIT-open-group AND SMLNJ AND MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms