XSelectInput - select input events
int XSelectInput(Display *display, Window w, long
    event_mask);
  - display
- Specifies the connection to the X server.
- event_mask
- Specifies the event mask.
- w
- Specifies the window whose events you are interested in.
The XSelectInput function requests that the X server report the events
  associated with the specified event mask. Initially, X will not report any of
  these events. Events are reported relative to a window. If a window is not
  interested in a device event, it usually propagates to the closest ancestor
  that is interested, unless the do_not_propagate mask prohibits it.Setting the event-mask attribute of a window overrides any
    previous call for the same window but not for other clients. Multiple
    clients can select for the same events on the same window with the following
    restrictions:
  - Multiple clients can select events on the same window because their event
      masks are disjoint. When the X server generates an event, it reports it to
      all interested clients.
- Only one client at a time can select CirculateRequest,
      ConfigureRequest, or MapRequest events, which are associated
      with the event mask SubstructureRedirectMask.
- Only one client at a time can select a ResizeRequest event, which
      is associated with the event mask ResizeRedirectMask.
- Only one client at a time can select a ButtonPress event, which is
      associated with the event mask ButtonPressMask.
The server reports the event to all interested clients.
XSelectInput can generate a BadWindow error.
  - BadWindow
- A value for a Window argument does not name a defined Window.
Xlib - C Language X Interface