XCHANGEDEVICEDONTPRO(3)

πŸ’… XCHANGEDEVICEDONTPRO β€” the manual page, bestie edition

okay so real quick, the vibe check: this is XCHANGEDEVICEDONTPRO(3), a section 3 page from the XInput family. Two functions, one mission: peeking at or messing with the dont-propagate-list for extension devices. no cap. πŸŽ€


✨ NAME ✨

XChangeDeviceDontPropagateList, XGetDeviceDontPropagateList β€” query or change the dont-propagate-list for extension devices πŸ¦‹

like, one of them asks about the list, the other one rewrites the list. slay.


🌸 SYNOPSIS 🌸

#include <X11/extensions/XInput.h>

int XChangeDeviceDontPropagateList( Display *display,
                                    Window window,
                                    int count,
                                    XEventClass *event_list,
                                    int mode);

XEventClass* XGetDeviceDontPropagateList( Display *display,
                                          Window window,
                                          int *count);

and now the arguments, one by one, no skipping 🫢

  • display β€” the connection to the X server. the whole group chat, basically.
  • window β€” the window whose dont-propagate-list is getting queried or modified. this is the main character of the operation.
  • event_list β€” a pointer to a list of event classes. literally just a pointer, bestie.
  • mode β€” the mode. you can pass AddToList, or DeleteFromList. that's it, those are the options. πŸ’…
  • count β€” the number of event classes in the list. so it knows how many to look at.

πŸ’– DESCRIPTION πŸ’–

The XChangeDeviceDontPropagateList request modifies the list of events that should not be propagated to ancestors of the event window. that's the whole glow-up. this request lets extension events get added to or deleted from that list.

by default, all events are propagated to ancestor windows β€” yes, all of them, unfiltered, chaotic behavior honestly 😭. but once modified, the list remains modified for the life of the window. and here's the tea: events are not removed from the list because the client that added them has terminated. so if some client adds stuff and then dips? the list keeps it. iconic, slightly haunted, but that's the deal. πŸ’€

⚠️ heads up: suppression of event propagation is not allowed for all input extension events. if a specified event class is one that cannot be suppressed, a BadClass error will result. so pick wisely.

the events that can be suppressed are:

  • DeviceKeyPress
  • DeviceKeyRelease
  • DeviceButtonPress
  • DeviceButtonRelease
  • DeviceMotionNotify
  • ProximityIn
  • ProximityOut

XChangeDeviceDontPropagateList can generate a BadDevice, BadClass, or BadValue error. three possible Ls, choose your fighter. πŸ”₯

The XGetDeviceDontPropagateList request queries the list of events that should not be propagated to ancestors of the event window. it's the read-only sibling. it just looks. it does not touch. very demure.

XGetDeviceDontPropagateList can generate a BadClass or BadWindow error. only two this time πŸ“


🧚 DIAGNOSTICS 🧚

  • BadDevice β€” an invalid device was specified. the specified device does not exist, or has not been opened by this client via XOpenInputDevice. this error may also occur if some other client has caused the specified device to become the X keyboard or X pointer device via the XChangeKeyboardDevice or XChangePointerDevice requests. so like, someone else moved your device and now it's a whole different thing. rude but legal.
  • BadValue β€” some numeric value falls outside the range of values accepted by the request. unless a specific range is specified for an argument, the full range defined by the argument's type is accepted. any argument defined as a set of alternatives can generate this error. numbers out of bounds, it's giving "please read the spec."
  • BadWindow β€” an invalid window id was specified. wrong window, bestie. wrong window. πŸ™ˆ
  • BadClass β€” an invalid event class was specified. you tried to suppress something that refuses to be suppressed. it said no. πŸ’…

πŸ‘‘ SEE ALSO πŸ‘‘

nope, there's literally no SEE ALSO section on this page. nothing to cross-reference. it's self-contained. independent. main character energy, fr fr. 🌈


and that's the whole page, bestie. you ate. go forth and propagate responsibly (or don't propagate at all, that's literally the point of the list) ✨

signing off β€” this was XCHANGEDEVICEDONTPRO(3), dated 05/18/2026, from the one and only X manual set πŸ’œ

πŸ“¦ where this page comes from