Events: GDK 3 Reference Manual

## Events Events — Functions for handling events from the window system |

## Functions

gboolean | gdk_events_pending ()
GdkEvent * | gdk_event_peek ()
GdkEvent * | gdk_event_get ()
void | gdk_event_put ()
GdkEvent * | gdk_event_new ()
GdkEvent * | gdk_event_copy ()
void | gdk_event_free ()
gboolean | gdk_event_get_axis ()
gboolean | gdk_event_get_button ()
gboolean | gdk_event_get_click_count ()
gboolean | gdk_event_get_coords ()
gboolean | gdk_event_get_keycode ()
gboolean | gdk_event_get_keyval ()
gboolean | gdk_event_get_root_coords ()
gboolean | gdk_event_get_scroll_direction ()
gboolean | gdk_event_get_scroll_deltas ()
gboolean | gdk_event_is_scroll_stop_event ()
gboolean | gdk_event_get_state ()
guint32 | gdk_event_get_time ()
GdkWindow * | gdk_event_get_window ()
GdkEventType | gdk_event_get_event_type ()
GdkEventSequence * | gdk_event_get_event_sequence ()
void | gdk_event_request_motions ()
gboolean | gdk_events_get_angle ()
gboolean | gdk_events_get_center ()
gboolean | gdk_events_get_distance ()
gboolean | gdk_event_triggers_context_menu ()
GdkSeat * | gdk_event_get_seat ()
int | gdk_event_get_scancode ()
gboolean | gdk_event_get_pointer_emulated ()
void | gdk_event_handler_set ()
void | (*GdkEventFunc) ()
gboolean | gdk_get_show_events ()
void | gdk_set_show_events ()
void | gdk_event_set_screen ()
GdkScreen * | gdk_event_get_screen ()
GdkDevice * | gdk_event_get_device ()
void | gdk_event_set_device ()
GdkDevice * | gdk_event_get_source_device ()
void | gdk_event_set_source_device ()
GdkDeviceTool * | gdk_event_get_device_tool ()
void | gdk_event_set_device_tool ()
gboolean | gdk_setting_get ()

## Types and Values

enum | GdkEventType
enum | GdkEventMask
#define | GDK_CURRENT_TIME
#define | GDK_PRIORITY_EVENTS
#define | GDK_PRIORITY_REDRAW
#define | GDK_EVENT_PROPAGATE
#define | GDK_EVENT_STOP
#define | GDK_BUTTON_PRIMARY
#define | GDK_BUTTON_MIDDLE
#define | GDK_BUTTON_SECONDARY
| GdkEventSequence

## Includes

    #include <gdk/gdk.h>

## Description

This section describes functions dealing with events from the window system.

In GTK+ applications the events are handled automatically in `gtk_main_do_event()` and passed on to the appropriate widgets, so these functions are rarely needed. Though some of the fields in the Event Structures are useful.

## Functions

### gdk_events_pending ()

    gboolean
    gdk_events_pending (void);

Checks if any events are ready to be processed for any display.

#### Returns

`TRUE` if any events are pending.

### gdk_event_peek ()

    GdkEvent *
    gdk_event_peek (void);

If there is an event waiting in the event queue of some open display, returns a copy of it. See `gdk_display_peek_event()`.

#### Returns

a copy of the first GdkEvent on some event queue, or `NULL` if no events are in any queues. The returned GdkEvent should be freed with `gdk_event_free()`.

[nullable]

### gdk_event_get ()

    GdkEvent *
    gdk_event_get (void);

Checks all open displays for a GdkEvent to process,to be processed on, fetching events from the windowing system if necessary. See `gdk_display_get_event()`.

#### Returns

the next GdkEvent to be processed, or `NULL` if no events are pending. The returned GdkEvent should be freed with `gdk_event_free()`.

[nullable]

### gdk_event_put ()

    void
    gdk_event_put (const GdkEvent *event);

Appends a copy of the given event onto the front of the event queue for event->any.window’s display, or the default event queue if event->any.window is `NULL`. See `gdk_display_put_event()`.

#### Parameters

event | a GdkEvent. |

### gdk_event_new ()

    GdkEvent *
    gdk_event_new (GdkEventType type);

Creates a new event of the given type. All fields are set to 0.

#### Parameters

type | a GdkEventType |

#### Returns

a newly-allocated GdkEvent. The returned GdkEvent should be freed with `gdk_event_free()`.

Since: 2.2

### gdk_event_copy ()

    GdkEvent *
    gdk_event_copy (const GdkEvent *event);

Copies a GdkEvent, copying or incrementing the reference count of the resources associated with it (e.g. GdkWindow’s and strings).

#### Parameters

event | a GdkEvent |

#### Returns

a copy of `event` . The returned GdkEvent should be freed with `gdk_event_free()`.

### gdk_event_free ()

    void
    gdk_event_free (GdkEvent *event);

Frees a GdkEvent, freeing or decrementing any resources associated with it. Note that this function should only be called with events returned from functions such as `gdk_event_peek()`, `gdk_event_get()`, `gdk_event_copy()` and `gdk_event_new()`.

#### Parameters

event | a GdkEvent. |

### gdk_event_get_axis ()

    gboolean
    gdk_event_get_axis (const GdkEvent *event,
                        GdkAxisUse axis_use,
                        gdouble *value);

Extract the axis value for a particular axis use from an event structure.

#### Parameters

event | a GdkEvent |
axis_use | the axis use to look for |
value | location to store the value found. | [out]

#### Returns

`TRUE` if the specified axis was found, otherwise `FALSE`

### gdk_event_get_button ()

    gboolean
    gdk_event_get_button (const GdkEvent *event,
                          guint *button);

Extract the button number from an event.

#### Parameters

event | a GdkEvent |
button | location to store mouse button number. | [out]

#### Returns

`TRUE` if the event delivered a button number

Since: 3.2

### gdk_event_get_click_count ()

    gboolean
    gdk_event_get_click_count (const GdkEvent *event,
                               guint *click_count);

Extracts the click count from an event.

#### Parameters

event | a GdkEvent |
click_count | location to store click count. | [out]

#### Returns

`TRUE` if the event delivered a click count

Since: 3.2

### gdk_event_get_coords ()

    gboolean
    gdk_event_get_coords (const GdkEvent *event,
                          gdouble *x_win,
                          gdouble *y_win);

Extract the event window relative x/y coordinates from an event.

#### Parameters

event | a GdkEvent |
x_win | location to put event window x coordinate. | [out][optional]
y_win | location to put event window y coordinate. | [out][optional]

#### Returns

`TRUE` if the event delivered event window coordinates

### gdk_event_get_keycode ()

    gboolean
    gdk_event_get_keycode (const GdkEvent *event,
                           guint16 *keycode);

Extracts the hardware keycode from an event.

Also see `gdk_event_get_scancode()`.

#### Parameters

event | a GdkEvent |
keycode | location to store the keycode. | [out]

#### Returns

`TRUE` if the event delivered a hardware keycode

Since: 3.2

### gdk_event_get_keyval ()

    gboolean
    gdk_event_get_keyval (const GdkEvent *event,
                          guint *keyval);

Extracts the keyval from an event.

#### Parameters

event | a GdkEvent |
keyval | location to store the keyval. | [out]

#### Returns

`TRUE` if the event delivered a key symbol

Since: 3.2

### gdk_event_get_root_coords ()

    gboolean
    gdk_event_get_root_coords (const GdkEvent *event,
                               gdouble *x_root,
                               gdouble *y_root);

Extract the root window relative x/y coordinates from an event.

#### Parameters

event | a GdkEvent |
x_root | location to put root window x coordinate. | [out][optional]
y_root | location to put root window y coordinate. | [out][optional]

#### Returns

`TRUE` if the event delivered root window coordinates

### gdk_event_get_scroll_direction ()

    gboolean
    gdk_event_get_scroll_direction (const GdkEvent *event,
                                    GdkScrollDirection *direction);

Extracts the scroll direction from an event.

If `event` is not of type `GDK_SCROLL`, the contents of `direction` are undefined.

If you wish to handle both discrete and smooth scrolling, you should check the return value of this function, or of `gdk_event_get_scroll_deltas()`; for instance:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    GdkScrollDirection direction;
    double vscroll_factor = 0.0;
    double x_scroll, y_scroll;

    if (gdk_event_get_scroll_direction (event, &direction))
      {
        // Handle discrete scrolling with a known constant delta;
        const double delta = 12.0;

        switch (direction)
          {
          case GDK_SCROLL_UP:
            vscroll_factor = -delta;
            break;
          case GDK_SCROLL_DOWN:
            vscroll_factor = delta;
            break;
          default:
            // no scrolling
            break;
          }
      }
    else if (gdk_event_get_scroll_deltas (event, &x_scroll, &y_scroll))
      {
        // Handle smooth scrolling directly
        vscroll_factor = y_scroll;
      }

#### Parameters

event | a GdkEvent |
direction | location to store the scroll direction. | [out]

#### Returns

`TRUE` if the event delivered a scroll direction and `FALSE` otherwise

Since: 3.2

### gdk_event_get_scroll_deltas ()

    gboolean
    gdk_event_get_scroll_deltas (const GdkEvent *event,
                                 gdouble *delta_x,
                                 gdouble *delta_y);

Retrieves the scroll deltas from a GdkEvent

See also: `gdk_event_get_scroll_direction()`

#### Parameters

event | a GdkEvent |
delta_x | return location for X delta. | [out]
delta_y | return location for Y delta. | [out]

#### Returns

`TRUE` if the event contains smooth scroll information and `FALSE` otherwise

Since: 3.4

### gdk_event_is_scroll_stop_event ()

    gboolean
    gdk_event_is_scroll_stop_event (const GdkEvent *event);

Check whether a scroll event is a stop scroll event. Scroll sequences with smooth scroll information may provide a stop scroll event once the interaction with the device finishes, e.g. by lifting a finger. This stop scroll event is the signal that a widget may trigger kinetic scrolling based on the current velocity.

Stop scroll events always have a a delta of 0/0.

#### Parameters

event | a GdkEvent |

#### Returns

`TRUE` if the event is a scroll stop event

Since: 3.20

### gdk_event_get_state ()

    gboolean
    gdk_event_get_state (const GdkEvent *event,
                         GdkModifierType *state);

If the event contains a “state” field, puts that field in `state` . Otherwise stores an empty state (0). Returns `TRUE` if there was a state field in the event. `event` may be `NULL`, in which case it’s treated as if the event had no state field.

#### Parameters

event | a GdkEvent or `NULL`. | [allow-none]
state | return location for state. | [out]

#### Returns

`TRUE` if there was a state field in the event

### gdk_event_get_time ()

    guint32
    gdk_event_get_time (const GdkEvent *event);

Returns the time stamp from `event` , if there is one; otherwise returns GDK_CURRENT_TIME. If `event` is `NULL`, returns GDK_CURRENT_TIME.

#### Parameters

event | a GdkEvent |

#### Returns

time stamp field from `event`

### gdk_event_get_window ()

    GdkWindow *
    gdk_event_get_window (const GdkEvent *event);

Extracts the GdkWindow associated with an event.

#### Parameters

event | a GdkEvent |

#### Returns

The GdkWindow associated with the event.

[transfer none]

Since: 3.10

### gdk_event_get_event_type ()

    GdkEventType
    gdk_event_get_event_type (const GdkEvent *event);

Retrieves the type of the event.

#### Parameters

event | a GdkEvent |

#### Returns

a GdkEventType

Since: 3.10

### gdk_event_get_event_sequence ()

    GdkEventSequence *
    gdk_event_get_event_sequence (const GdkEvent *event);

If `event` if of type `GDK_TOUCH_BEGIN`, `GDK_TOUCH_UPDATE`, `GDK_TOUCH_END` or `GDK_TOUCH_CANCEL`, returns the GdkEventSequence to which the event belongs. Otherwise, return `NULL`.

#### Parameters

event | a GdkEvent |

#### Returns

the event sequence that the event belongs to.

[transfer none]

Since: 3.4

### gdk_event_request_motions ()

    void
    gdk_event_request_motions (const GdkEventMotion *event);

Request more motion notifies if `event` is a motion notify hint event.

This function should be used instead of `gdk_window_get_pointer()` to request further motion notifies, because it also works for extension events where motion notifies are provided for devices other than the core pointer. Coordinate extraction, processing and requesting more motion events from a `GDK_MOTION_NOTIFY` event usually works like this:

    1
    2
    3
    4
    5
    6
    7
    {
      // motion_event handler
      x = motion_event->x;
      y = motion_event->y;
      // handle (x,y) motion
      gdk_event_request_motions (motion_event); // handles is_hint events
    }

#### Parameters

event | a valid GdkEvent |

Since: 2.12

### gdk_events_get_angle ()

    gboolean
    gdk_events_get_angle (GdkEvent *event1,
                          GdkEvent *event2,
                          gdouble *angle);

If both events contain X/Y information, this function will return `TRUE` and return in `angle` the relative angle from `event1` to `event2` . The rotation direction for positive angles is from the positive X axis towards the positive Y axis.

#### Parameters

event1 | first GdkEvent |
event2 | second GdkEvent |
angle | return location for the relative angle between both events. | [out]

#### Returns

`TRUE` if the angle could be calculated.

Since: 3.0

### gdk_events_get_center ()

    gboolean
    gdk_events_get_center (GdkEvent *event1,
                           GdkEvent *event2,
                           gdouble *x,
                           gdouble *y);

If both events contain X/Y information, the center of both coordinates will be returned in `x` and `y` .

#### Parameters

event1 | first GdkEvent |
event2 | second GdkEvent |
x | return location for the X coordinate of the center. | [out]
y | return location for the Y coordinate of the center. | [out]

#### Returns

`TRUE` if the center could be calculated.

Since: 3.0

### gdk_events_get_distance ()

    gboolean
    gdk_events_get_distance (GdkEvent *event1,
                             GdkEvent *event2,
                             gdouble *distance);

If both events have X/Y information, the distance between both coordinates (as in a straight line going from `event1` to `event2` ) will be returned.

#### Parameters

event1 | first GdkEvent |
event2 | second GdkEvent |
distance | return location for the distance. | [out]

#### Returns

`TRUE` if the distance could be calculated.

Since: 3.0

### gdk_event_triggers_context_menu ()

    gboolean
    gdk_event_triggers_context_menu (const GdkEvent *event);

This function returns whether a GdkEventButton should trigger a context menu, according to platform conventions. The right mouse button always triggers context menus. Additionally, if `gdk_keymap_get_modifier_mask()` returns a non-0 mask for `GDK_MODIFIER_INTENT_CONTEXT_MENU`, then the left mouse button will also trigger a context menu if this modifier is pressed.

This function should always be used instead of simply checking for event->button == `GDK_BUTTON_SECONDARY`.

#### Parameters

event | a GdkEvent, currently only button events are meaningful values |

#### Returns

`TRUE` if the event should trigger a context menu.

Since: 3.4

### gdk_event_get_seat ()

    GdkSeat *
    gdk_event_get_seat (const GdkEvent *event);

Returns the GdkSeat this event was generated for.

#### Parameters

event | a GdkEvent |

#### Returns

The GdkSeat of this event.

[transfer none]

Since: 3.20

### gdk_event_get_scancode ()

    int
    gdk_event_get_scancode (GdkEvent *event);

Gets the keyboard low-level scancode of a key event.

This is usually hardware_keycode. On Windows this is the high word of WM_KEY{DOWN,UP} lParam which contains the scancode and some extended flags.

#### Parameters

event | a GdkEvent |

#### Returns

The associated keyboard scancode or 0

Since: 3.22

### gdk_event_get_pointer_emulated ()

    gboolean
    gdk_event_get_pointer_emulated (GdkEvent *event);

Returns whether this event is an 'emulated' pointer event (typically from a touch event), as opposed to a real one.

#### Returns

`TRUE` if this event is emulated

Since: 3.22

### gdk_event_handler_set ()

    void
    gdk_event_handler_set (GdkEventFunc func,
                           gpointer data,
                           GDestroyNotify notify);

Sets the function to call to handle all events from GDK.

Note that GTK+ uses this to install its own event handler, so it is usually not useful for GTK+ applications. (Although an application can call this function then call `gtk_main_do_event()` to pass events to GTK+.)

#### Parameters

func | the function to call to handle events from GDK. |
data | user data to pass to the function. |
notify | the function to call when the handler function is removed, i.e. when `gdk_event_handler_set()` is called with another event handler. |

### GdkEventFunc ()

    void
    (*GdkEventFunc) (GdkEvent *event,
                     gpointer data);

Specifies the type of function passed to `gdk_event_handler_set()` to handle all GDK events.

#### Parameters

event | the GdkEvent to process. |
data | user data set when the event handler was installed with `gdk_event_handler_set()`. | [closure]

### gdk_get_show_events ()

    gboolean
    gdk_get_show_events (void);

Gets whether event debugging output is enabled.

#### Returns

`TRUE` if event debugging output is enabled.

### gdk_set_show_events ()

    void
    gdk_set_show_events (gboolean show_events);

Sets whether a trace of received events is output. Note that GTK+ must be compiled with debugging (that is, configured using the `--enable-debug` option) to use this option.

#### Parameters

show_events | `TRUE` to output event debugging information. |

### gdk_event_set_screen ()

    void
    gdk_event_set_screen (GdkEvent *event,
                          GdkScreen *screen);

Sets the screen for `event` to `screen` . The event must have been allocated by GTK+, for instance, by `gdk_event_copy()`.

#### Parameters

event | a GdkEvent |
screen | a GdkScreen |

Since: 2.2

### gdk_event_get_screen ()

    GdkScreen *
    gdk_event_get_screen (const GdkEvent *event);

Returns the screen for the event. The screen is typically the screen for `event->any.window`, but for events such as mouse events, it is the screen where the pointer was when the event occurs - that is, the screen which has the root window to which `event->motion.x_root` and `event->motion.y_root` are relative.

#### Parameters

event | a GdkEvent |

#### Returns

the screen for the event.

[transfer none]

Since: 2.2

### gdk_event_get_device ()

    GdkDevice *
    gdk_event_get_device (const GdkEvent *event);

If the event contains a “device” field, this function will return it, else it will return `NULL`.

#### Parameters

event | a GdkEvent. |

#### Returns

a GdkDevice, or `NULL`.

[nullable][transfer none]

Since: 3.0

### gdk_event_set_device ()

    void
    gdk_event_set_device (GdkEvent *event,
                          GdkDevice *device);

Sets the device for `event` to `device` . The event must have been allocated by GTK+, for instance, by `gdk_event_copy()`.

#### Parameters

event | a GdkEvent |
device | a GdkDevice |

Since: 3.0

### gdk_event_get_source_device ()

    GdkDevice *
    gdk_event_get_source_device (const GdkEvent *event);

This function returns the hardware (slave) GdkDevice that has triggered the event, falling back to the virtual (master) device (as in `gdk_event_get_device()`) if the event wasn’t caused by interaction with a hardware device. This may happen for example in synthesized crossing events after a GdkWindow updates its geometry or a grab is acquired/released.

If the event does not contain a device field, this function will return `NULL`.

#### Parameters

event | a GdkEvent |

#### Returns

a GdkDevice, or `NULL`.

[nullable][transfer none]

Since: 3.0

### gdk_event_set_source_device ()

    void
    gdk_event_set_source_device (GdkEvent *event,
                                 GdkDevice *device);

Sets the slave device for `event` to `device` .

The event must have been allocated by GTK+, for instance by `gdk_event_copy()`.

#### Parameters

event | a GdkEvent |
device | a GdkDevice |

Since: 3.0

### gdk_event_get_device_tool ()

    GdkDeviceTool *
    gdk_event_get_device_tool (const GdkEvent *event);

If the event was generated by a device that supports different tools (eg. a tablet), this function will return a GdkDeviceTool representing the tool that caused the event. Otherwise, `NULL` will be returned.

Note: the GdkDeviceTool<!-- -->s will be constant during the application lifetime, if settings must be stored persistently across runs, see `gdk_device_tool_get_serial()`

#### Parameters

event | a GdkEvent |

#### Returns

The current device tool, or `NULL`.

[transfer none]

Since: 3.22

### gdk_event_set_device_tool ()

    void
    gdk_event_set_device_tool (GdkEvent *event,
                               GdkDeviceTool *tool);

Sets the device tool for this event, should be rarely used.

#### Parameters

event | a GdkEvent |
tool | tool to set on the event, or `NULL`. | [nullable]

Since: 3.22

### gdk_setting_get ()

    gboolean
    gdk_setting_get (const gchar *name,
                     GValue *value);

Obtains a desktop-wide setting, such as the double-click time, for the default screen. See `gdk_screen_get_setting()`.

#### Parameters

name | the name of the setting. |
value | location to store the value of the setting. |

#### Returns

`TRUE` if the setting existed and a value was stored in `value` , `FALSE` otherwise.

## Types and Values

### enum GdkEventType

Specifies the type of the event.

Do not confuse these events with the signals that GTK+ widgets emit. Although many of these events result in corresponding signals being emitted, the events are often transformed or filtered along the way.

In some language bindings, the values `GDK_2BUTTON_PRESS` and `GDK_3BUTTON_PRESS` would translate into something syntactically invalid (eg `Gdk.EventType.2ButtonPress`, where a symbol is not allowed to start with a number). In that case, the aliases `GDK_DOUBLE_BUTTON_PRESS` and `GDK_TRIPLE_BUTTON_PRESS` can be used instead.

#### Members

GDK_NOTHING | a special code to indicate a null event. |
GDK_DELETE | the window manager has requested that the toplevel window be hidden or destroyed, usually when the user clicks on a special icon in the title bar. |
GDK_DESTROY | the window has been destroyed. |
GDK_EXPOSE | all or part of the window has become visible and needs to be redrawn. |
GDK_MOTION_NOTIFY | the pointer (usually a mouse) has moved. |
GDK_BUTTON_PRESS | a mouse button has been pressed. |
GDK_2BUTTON_PRESS | a mouse button has been double-clicked (clicked twice within a short period of time). Note that each click also generates a `GDK_BUTTON_PRESS` event. |
GDK_DOUBLE_BUTTON_PRESS | alias for `GDK_2BUTTON_PRESS`, added in 3.6. |
GDK_3BUTTON_PRESS | a mouse button has been clicked 3 times in a short period of time. Note that each click also generates a `GDK_BUTTON_PRESS` event. |
GDK_TRIPLE_BUTTON_PRESS | alias for `GDK_3BUTTON_PRESS`, added in 3.6. |
GDK_BUTTON_RELEASE | a mouse button has been released. |
GDK_KEY_PRESS | a key has been pressed. |
GDK_KEY_RELEASE | a key has been released. |
GDK_ENTER_NOTIFY | the pointer has entered the window. |
GDK_LEAVE_NOTIFY | the pointer has left the window. |
GDK_FOCUS_CHANGE | the keyboard focus has entered or left the window. |
GDK_CONFIGURE | the size, position or stacking order of the window has changed. Note that GTK+ discards these events for `GDK_WINDOW_CHILD` windows. |
GDK_MAP | the window has been mapped. |
GDK_UNMAP | the window has been unmapped. |
GDK_PROPERTY_NOTIFY | a property on the window has been changed or deleted. |
GDK_SELECTION_CLEAR | the application has lost ownership of a selection. |
GDK_SELECTION_REQUEST | another application has requested a selection. |
GDK_SELECTION_NOTIFY | a selection has been received. |
GDK_PROXIMITY_IN | an input device has moved into contact with a sensing surface (e.g. a touchscreen or graphics tablet). |
GDK_PROXIMITY_OUT | an input device has moved out of contact with a sensing surface. |
GDK_DRAG_ENTER | the mouse has entered the window while a drag is in progress. |
GDK_DRAG_LEAVE | the mouse has left the window while a drag is in progress. |
GDK_DRAG_MOTION | the mouse has moved in the window while a drag is in progress. |
GDK_DRAG_STATUS | the status of the drag operation initiated by the window has changed. |
GDK_DROP_START | a drop operation onto the window has started. |
GDK_DROP_FINISHED | the drop operation initiated by the window has completed. |
GDK_CLIENT_EVENT | a message has been received from another application. |
GDK_VISIBILITY_NOTIFY | the window visibility status has changed. |
GDK_SCROLL | the scroll wheel was turned |
GDK_WINDOW_STATE | the state of a window has changed. See GdkWindowState for the possible window states |
GDK_SETTING | a setting has been modified. |
GDK_OWNER_CHANGE | the owner of a selection has changed. This event type was added in 2.6 |
GDK_GRAB_BROKEN | a pointer or keyboard grab was broken. This event type was added in 2.8. |
GDK_DAMAGE | the content of the window has been changed. This event type was added in 2.14. |
GDK_TOUCH_BEGIN | A new touch event sequence has just started. This event type was added in 3.4. |
GDK_TOUCH_UPDATE | A touch event sequence has been updated. This event type was added in 3.4. |
GDK_TOUCH_END | A touch event sequence has finished. This event type was added in 3.4. |
GDK_TOUCH_CANCEL | A touch event sequence has been canceled. This event type was added in 3.4. |
GDK_TOUCHPAD_SWIPE | A touchpad swipe gesture event, the current state is determined by its phase field. This event type was added in 3.18. |
GDK_TOUCHPAD_PINCH | A touchpad pinch gesture event, the current state is determined by its phase field. This event type was added in 3.18. |
GDK_PAD_BUTTON_PRESS | A tablet pad button press event. This event type was added in 3.22. |
GDK_PAD_BUTTON_RELEASE | A tablet pad button release event. This event type was added in 3.22. |
GDK_PAD_RING | A tablet pad axis event from a "ring". This event type was added in 3.22. |
GDK_PAD_STRIP | A tablet pad axis event from a "strip". This event type was added in 3.22. |
GDK_PAD_GROUP_MODE | A tablet pad group mode change. This event type was added in 3.22. |
GDK_EVENT_LAST | marks the end of the GdkEventType enumeration. Added in 2.18 |

### enum GdkEventMask

A set of bit-flags to indicate which events a window is to receive. Most of these masks map onto one or more of the GdkEventType event types above.

See the input handling overview for details of event masks and event propagation.

`GDK_POINTER_MOTION_HINT_MASK` is deprecated. It is a special mask to reduce the number of `GDK_MOTION_NOTIFY` events received. When using `GDK_POINTER_MOTION_HINT_MASK`, fewer `GDK_MOTION_NOTIFY` events will be sent, some of which are marked as a hint (the is_hint member is `TRUE`). To receive more motion events after a motion hint event, the application needs to asks for more, by calling `gdk_event_request_motions()`.

Since GTK 3.8, motion events are already compressed by default, independent of this mechanism. This compression can be disabled with `gdk_window_set_event_compression()`. See the documentation of that function for details.

If `GDK_TOUCH_MASK` is enabled, the window will receive touch events from touch-enabled devices. Those will come as sequences of GdkEventTouch with type `GDK_TOUCH_UPDATE`, enclosed by two events with type `GDK_TOUCH_BEGIN` and `GDK_TOUCH_END` (or `GDK_TOUCH_CANCEL`). `gdk_event_get_event_sequence()` returns the event sequence for these events, so different sequences may be distinguished.

#### Members

GDK_EXPOSURE_MASK | receive expose events |
GDK_POINTER_MOTION_MASK | receive all pointer motion events |
GDK_POINTER_MOTION_HINT_MASK | deprecated. see the explanation above |
GDK_BUTTON_MOTION_MASK | receive pointer motion events while any button is pressed |
GDK_BUTTON1_MOTION_MASK | receive pointer motion events while 1 button is pressed |
GDK_BUTTON2_MOTION_MASK | receive pointer motion events while 2 button is pressed |
GDK_BUTTON3_MOTION_MASK | receive pointer motion events while 3 button is pressed |
GDK_BUTTON_PRESS_MASK | receive button press events |
GDK_BUTTON_RELEASE_MASK | receive button release events |
GDK_KEY_PRESS_MASK | receive key press events |
GDK_KEY_RELEASE_MASK | receive key release events |
GDK_ENTER_NOTIFY_MASK | receive window enter events |
GDK_LEAVE_NOTIFY_MASK | receive window leave events |
GDK_FOCUS_CHANGE_MASK | receive focus change events |
GDK_STRUCTURE_MASK | receive events about window configuration change |
GDK_PROPERTY_CHANGE_MASK | receive property change events |
GDK_VISIBILITY_NOTIFY_MASK | receive visibility change events |
GDK_PROXIMITY_IN_MASK | receive proximity in events |
GDK_PROXIMITY_OUT_MASK | receive proximity out events |
GDK_SUBSTRUCTURE_MASK | receive events about window configuration changes of child windows |
GDK_SCROLL_MASK | receive scroll events |
GDK_TOUCH_MASK | receive touch events. Since 3.4 |
GDK_SMOOTH_SCROLL_MASK | receive smooth scrolling events. Since 3.4 |
GDK_TOUCHPAD_GESTURE_MASK | receive touchpad gesture events. Since 3.18 |
GDK_TABLET_PAD_MASK | receive tablet pad events. Since 3.22 |
GDK_ALL_EVENTS_MASK | the combination of all the above event masks. |

### GDK_CURRENT_TIME

    #define GDK_CURRENT_TIME     0L

Represents the current time, and can be used anywhere a time is expected.

### GDK_PRIORITY_EVENTS

    #define             GDK_PRIORITY_EVENTS

This is the priority that events from the X server are given in the GLib Main Loop.

### GDK_PRIORITY_REDRAW

    #define GDK_PRIORITY_REDRAW     (G_PRIORITY_HIGH_IDLE + 20)

This is the priority that the idle handler processing window updates is given in the GLib Main Loop.

### GDK_EVENT_PROPAGATE

    #define GDK_EVENT_PROPAGATE     (FALSE)

Use this macro as the return value for continuing the propagation of an event handler.

Since: 3.4

### GDK_EVENT_STOP

    #define GDK_EVENT_STOP          (TRUE)

Use this macro as the return value for stopping the propagation of an event handler.

Since: 3.4

### GDK_BUTTON_PRIMARY

    #define GDK_BUTTON_PRIMARY      (1)

The primary button. This is typically the left mouse button, or the right button in a left-handed setup.

Since: 3.4

### GDK_BUTTON_MIDDLE

    #define GDK_BUTTON_MIDDLE       (2)

The middle button.

Since: 3.4

### GDK_BUTTON_SECONDARY

    #define GDK_BUTTON_SECONDARY    (3)

The secondary button. This is typically the right mouse button, or the left button in a left-handed setup.

Since: 3.4

### GdkEventSequence

    typedef struct _GdkEventSequence GdkEventSequence;

## See Also

Event Structures