Grabbing the Pointer

Normally mouse events are delivered as soon as they occur to the appropriate window and client, as determined by the window event masks and the input focus. The routines described in this section allow the user to grab the mouse. When a grab is in effect, events are sent to the grabbing client, rather than to the normal client who would have received the event. If the keyboard or pointer is put in asynchronous mode, further mouse and keyboard events will continue to be processed. If the keyboard or pointer is put in synchronous mode, no further events will be processed until the grabbing client allows them (see allow_events).

There are two kinds of grabs: active and passive. An active grab occurs when a single client grabs the pointer explicitly. Clients can also grab a particular pointer button in a window, this is called a passive grab and activates when the button is actually pressed.

Many of the operations take a Time argument, which can be current_time (the X server current time) or an actual timestamp in milliseconds.