Events

Events — User and window system events

Synopsis

#define             CLUTTER_CURRENT_TIME
#define             CLUTTER_PRIORITY_EVENTS
enum                ClutterModifierType;
enum                ClutterScrollDirection;
enum                ClutterStageState;
enum                ClutterEventType;
union               ClutterEvent;
enum                ClutterEventFlags;
                    ClutterButtonEvent;
                    ClutterKeyEvent;
                    ClutterMotionEvent;
                    ClutterScrollEvent;
                    ClutterStageStateEvent;
                    ClutterCrossingEvent;
                    ClutterInputDevice;
ClutterEvent *      clutter_event_new                   (ClutterEventType type);
ClutterEvent *      clutter_event_copy                  (ClutterEvent *event);
void                clutter_event_free                  (ClutterEvent *event);
ClutterEventType    clutter_event_type                  (ClutterEvent *event);

void                clutter_event_get_coords            (ClutterEvent *event,
                                                         gfloat *x,
                                                         gfloat *y);
ClutterModifierType  clutter_event_get_state            (ClutterEvent *event);
guint32             clutter_event_get_time              (ClutterEvent *event);
ClutterActor *      clutter_event_get_source            (ClutterEvent *event);
ClutterStage *      clutter_event_get_stage             (ClutterEvent *event);
ClutterEventFlags   clutter_event_get_flags             (ClutterEvent *event);

ClutterEvent *      clutter_event_get                   (void);
ClutterEvent *      clutter_event_peek                  (void);
void                clutter_event_put                   (ClutterEvent *event);
gboolean            clutter_events_pending              (void);

guint32             clutter_event_get_button            (ClutterEvent *event);
guint               clutter_event_get_click_count       (ClutterEvent *event);

guint               clutter_event_get_key_symbol        (ClutterEvent *event);
guint16             clutter_event_get_key_code          (ClutterEvent *event);
guint32             clutter_event_get_key_unicode       (ClutterEvent *event);
guint32             clutter_keysym_to_unicode           (guint keyval);

ClutterActor *      clutter_event_get_related           (ClutterEvent *event);

ClutterScrollDirection  clutter_event_get_scroll_direction
                                                        (ClutterEvent *event);

enum                ClutterInputDeviceType;
ClutterInputDevice * clutter_event_get_device           (ClutterEvent *event);
gint                clutter_event_get_device_id         (ClutterEvent *event);
ClutterInputDeviceType  clutter_event_get_device_type   (ClutterEvent *event);
ClutterInputDevice * clutter_get_input_device_for_id    (gint id);
gint                clutter_input_device_get_device_id  (ClutterInputDevice *device);
ClutterInputDeviceType  clutter_input_device_get_device_type
                                                        (ClutterInputDevice *device);

guint32             clutter_get_current_event_time      (void);

Description

Windowing events handled by Clutter.

The events usually come from the windowing backend, but can also be synthesized by Clutter itself or by the application code.

Details

CLUTTER_CURRENT_TIME

#define CLUTTER_CURRENT_TIME    0L

Default value for "now".

Since 0.4


CLUTTER_PRIORITY_EVENTS

#define CLUTTER_PRIORITY_EVENTS (G_PRIORITY_DEFAULT)

Priority for event handling.

Since 0.4


enum ClutterModifierType

typedef enum {
  CLUTTER_SHIFT_MASK    = 1 << 0,
  CLUTTER_LOCK_MASK     = 1 << 1,
  CLUTTER_CONTROL_MASK  = 1 << 2,
  CLUTTER_MOD1_MASK     = 1 << 3,
  CLUTTER_MOD2_MASK     = 1 << 4,
  CLUTTER_MOD3_MASK     = 1 << 5,
  CLUTTER_MOD4_MASK     = 1 << 6,
  CLUTTER_MOD5_MASK     = 1 << 7,
  CLUTTER_BUTTON1_MASK  = 1 << 8,
  CLUTTER_BUTTON2_MASK  = 1 << 9,
  CLUTTER_BUTTON3_MASK  = 1 << 10,
  CLUTTER_BUTTON4_MASK  = 1 << 11,
  CLUTTER_BUTTON5_MASK  = 1 << 12,

  /* bits 15 to 25 are currently unused; bit 29 is used internally */

  CLUTTER_SUPER_MASK    = 1 << 26,
  CLUTTER_HYPER_MASK    = 1 << 27,
  CLUTTER_META_MASK     = 1 << 28,

  CLUTTER_RELEASE_MASK  = 1 << 30,

  CLUTTER_MODIFIER_MASK = 0x5c001fff
} ClutterModifierType;

Masks applied to a ClutterEvent by modifiers.

CLUTTER_SHIFT_MASK Mask applied by the Shift key
CLUTTER_LOCK_MASK Mask applied by the Caps Lock key
CLUTTER_CONTROL_MASK Mask applied by the Control key
CLUTTER_MOD1_MASK Mask applied by the first Mod key
CLUTTER_MOD2_MASK Mask applied by the second Mod key
CLUTTER_MOD3_MASK Mask applied by the third Mod key
CLUTTER_MOD4_MASK Mask applied by the fourth Mod key
CLUTTER_MOD5_MASK Mask applied by the fifth Mod key
CLUTTER_BUTTON1_MASK Mask applied by the first pointer button
CLUTTER_BUTTON2_MASK Mask applied by the second pointer button
CLUTTER_BUTTON3_MASK Mask applied by the third pointer button
CLUTTER_BUTTON4_MASK Mask applied by the fourth pointer button
CLUTTER_BUTTON5_MASK Mask applied by the fifth pointer button
CLUTTER_SUPER_MASK Mask applied by the Super key
CLUTTER_HYPER_MASK Mask applied by the Hyper key
CLUTTER_META_MASK Mask applied by the Meta key
CLUTTER_RELEASE_MASK Mask applied during release
CLUTTER_MODIFIER_MASK A mask covering all modifier types

Since 0.4


enum ClutterScrollDirection

typedef enum
{
  CLUTTER_SCROLL_UP,
  CLUTTER_SCROLL_DOWN,
  CLUTTER_SCROLL_LEFT,
  CLUTTER_SCROLL_RIGHT
} ClutterScrollDirection;

Direction of a pointer scroll event.

CLUTTER_SCROLL_UP Scroll up
CLUTTER_SCROLL_DOWN Scroll down
CLUTTER_SCROLL_LEFT Scroll left
CLUTTER_SCROLL_RIGHT Scroll right

Since 0.4


enum ClutterStageState

typedef enum
{
  CLUTTER_STAGE_STATE_FULLSCREEN       = (1<<1),
  CLUTTER_STAGE_STATE_OFFSCREEN        = (1<<2),
  CLUTTER_STAGE_STATE_ACTIVATED        = (1<<3)
} ClutterStageState;

Stage state masks

CLUTTER_STAGE_STATE_FULLSCREEN Fullscreen mask
CLUTTER_STAGE_STATE_OFFSCREEN Offscreen mask
CLUTTER_STAGE_STATE_ACTIVATED Activated mask

Since 0.4


enum ClutterEventType

typedef enum 
{
  CLUTTER_NOTHING = 0,
  CLUTTER_KEY_PRESS,
  CLUTTER_KEY_RELEASE,
  CLUTTER_MOTION,
  CLUTTER_ENTER,
  CLUTTER_LEAVE,
  CLUTTER_BUTTON_PRESS,
  CLUTTER_BUTTON_RELEASE,
  CLUTTER_SCROLL,
  CLUTTER_STAGE_STATE,
  CLUTTER_DESTROY_NOTIFY,
  CLUTTER_CLIENT_MESSAGE,
  CLUTTER_DELETE
} ClutterEventType;

Types of events.

CLUTTER_NOTHING Empty event
CLUTTER_KEY_PRESS Key press event
CLUTTER_KEY_RELEASE Key release event
CLUTTER_MOTION Pointer motion event
CLUTTER_ENTER Actor enter event
CLUTTER_LEAVE Actor leave event
CLUTTER_BUTTON_PRESS Pointer button press event
CLUTTER_BUTTON_RELEASE Pointer button release event
CLUTTER_SCROLL Pointer scroll event
CLUTTER_STAGE_STATE Stage stage change event
CLUTTER_DESTROY_NOTIFY Destroy notification event
CLUTTER_CLIENT_MESSAGE Client message event
CLUTTER_DELETE Stage delete event

Since 0.4


union ClutterEvent

union ClutterEvent
{
  ClutterEventType type;

  ClutterAnyEvent any;
  ClutterButtonEvent button;
  ClutterKeyEvent key;
  ClutterMotionEvent motion;
  ClutterScrollEvent scroll;
  ClutterStageStateEvent stage_state;
  ClutterCrossingEvent crossing;
};

Generic event wrapper.

Since 0.2


enum ClutterEventFlags

typedef enum {
  CLUTTER_EVENT_NONE           = 0,
  CLUTTER_EVENT_FLAG_SYNTHETIC = 1 << 0,
} ClutterEventFlags;

Flags for the ClutterEvent

CLUTTER_EVENT_NONE No flag set
CLUTTER_EVENT_FLAG_SYNTHETIC Synthetic event

Since 0.6


ClutterButtonEvent

typedef struct {
  ClutterEventType type;
  guint32 time;
  ClutterEventFlags flags;
  ClutterStage *stage;
  ClutterActor *source;

  gfloat x;
  gfloat y;
  ClutterModifierType modifier_state;
  guint32 button;
  guint click_count;
  gdouble *axes; /* Future use */
  ClutterInputDevice *device;
} ClutterButtonEvent;

Button event.

The event coordinates are relative to the stage that received the event, and can be transformed into actor-relative coordinates by using clutter_actor_transform_stage_point().

ClutterEventType type; event type
guint32 time; event time
ClutterEventFlags flags; event flags
ClutterStage *stage; event source stage
ClutterActor *source; event source actor
gfloat x; event X coordinate, relative to the stage
gfloat y; event Y coordinate, relative to the stage
ClutterModifierType modifier_state; button modifiers
guint32 button; event button
guint click_count; number of button presses within the default time and radius
gdouble *axes; reserved for future use
ClutterInputDevice *device; reserved for future use

Since 0.2


ClutterKeyEvent

typedef struct {
  ClutterEventType type;
  guint32 time;
  ClutterEventFlags flags;
  ClutterStage *stage;
  ClutterActor *source;

  ClutterModifierType modifier_state;
  guint keyval;
  guint16 hardware_keycode;
  gunichar unicode_value;
  ClutterInputDevice *device;
} ClutterKeyEvent;

Key event

ClutterEventType type; event type
guint32 time; event time
ClutterEventFlags flags; event flags
ClutterStage *stage; event source stage
ClutterActor *source; event source actor
ClutterModifierType modifier_state; key modifiers
guint keyval; raw key value
guint16 hardware_keycode; raw hardware key value
gunichar unicode_value; Unicode representation
ClutterInputDevice *device; reserved for future use

Since 0.2


ClutterMotionEvent

typedef struct {
  ClutterEventType type;
  guint32 time;
  ClutterEventFlags flags;
  ClutterStage *stage;
  ClutterActor *source;

  gfloat x;
  gfloat y;
  ClutterModifierType modifier_state;
  gdouble *axes; /* Future use */
  ClutterInputDevice *device;
} ClutterMotionEvent;

Event for the pointer motion

ClutterEventType type; event type
guint32 time; event time
ClutterEventFlags flags; event flags
ClutterStage *stage; event source stage
ClutterActor *source; event source actor
gfloat x; event X coordinate
gfloat y; event Y coordinate
ClutterModifierType modifier_state; button modifiers
gdouble *axes; reserved for future use
ClutterInputDevice *device; reserved for future use

Since 0.2


ClutterScrollEvent

typedef struct {
  ClutterEventType type;
  guint32 time;
  ClutterEventFlags flags;
  ClutterStage *stage;
  ClutterActor *source;

  gfloat x;
  gfloat y;
  ClutterScrollDirection direction;
  ClutterModifierType modifier_state;
  gdouble *axes; /* future use */
  ClutterInputDevice *device;
} ClutterScrollEvent;

Scroll wheel (or similar device) event

ClutterEventType type; event type
guint32 time; event time
ClutterEventFlags flags; event flags
ClutterStage *stage; event source stage
ClutterActor *source; event source actor
gfloat x; event X coordinate
gfloat y; event Y coordinate
ClutterScrollDirection direction; direction of the scrolling
ClutterModifierType modifier_state; button modifiers
gdouble *axes; reserved for future use
ClutterInputDevice *device; reserved for future use

Since 0.2


ClutterStageStateEvent

typedef struct {
  ClutterEventType type;
  guint32 time;
  ClutterEventFlags flags;
  ClutterStage *stage;
  ClutterActor *source; /* XXX: should probably be the stage itself */

  ClutterStageState changed_mask;
  ClutterStageState new_state;
} ClutterStageStateEvent;

Event signalling a change in the ClutterStage state.

ClutterEventType type; event type
guint32 time; event time
ClutterEventFlags flags; event flags
ClutterStage *stage; event source stage
ClutterActor *source; event source actor (unused)
ClutterStageState changed_mask; bitwise OR of the changed flags
ClutterStageState new_state; bitwise OR of the current state flags

Since 0.2


ClutterCrossingEvent

typedef struct {
  ClutterEventType type;
  guint32 time;
  ClutterEventFlags flags;
  ClutterStage *stage;
  ClutterActor *source;

  gfloat x;
  gfloat y;
  ClutterInputDevice *device;
  ClutterActor *related;
} ClutterCrossingEvent;

Event for the movement of the pointer across different actors

ClutterEventType type; event type
guint32 time; event time
ClutterEventFlags flags; event flags
ClutterStage *stage; event source stage
ClutterActor *source; event source actor
gfloat x; event X coordinate
gfloat y; event Y coordinate
ClutterInputDevice *device; reserved for future use
ClutterActor *related; actor related to the crossing

Since 0.2


ClutterInputDevice

typedef struct _ClutterInputDevice ClutterInputDevice;

Generic representation of an input device. The actual contents of this structure depend on the backend used.


clutter_event_new ()

ClutterEvent *      clutter_event_new                   (ClutterEventType type);

Creates a new ClutterEvent of the specified type.

type : The type of event.
Returns : A newly allocated ClutterEvent.

clutter_event_copy ()

ClutterEvent *      clutter_event_copy                  (ClutterEvent *event);

Copies event.

event : A ClutterEvent.
Returns : A newly allocated ClutterEvent

clutter_event_free ()

void                clutter_event_free                  (ClutterEvent *event);

Frees all resources used by event.

event : A ClutterEvent.

clutter_event_type ()

ClutterEventType    clutter_event_type                  (ClutterEvent *event);

Retrieves the type of the event.

event : a ClutterEvent
Returns : a ClutterEventType

clutter_event_get_coords ()

void                clutter_event_get_coords            (ClutterEvent *event,
                                                         gfloat *x,
                                                         gfloat *y);

Retrieves the coordinates of event and puts them into x and y.

event : a ClutterEvent
x : return location for the X coordinate
y : return location for the Y coordinate

Since 0.4


clutter_event_get_state ()

ClutterModifierType  clutter_event_get_state            (ClutterEvent *event);

Retrieves the modifier state of the event.

event : a ClutterEvent
Returns : the modifier state parameter, or 0

Since 0.4


clutter_event_get_time ()

guint32             clutter_event_get_time              (ClutterEvent *event);

Retrieves the time of the event.

event : a ClutterEvent
Returns : the time of the event, or CLUTTER_CURRENT_TIME

Since 0.4


clutter_event_get_source ()

ClutterActor *      clutter_event_get_source            (ClutterEvent *event);

Retrieves the source ClutterActor the event originated from, or NULL if the event has no source.

event : a ClutterEvent
Returns : a ClutterActor. transfer none.

Since 0.6


clutter_event_get_stage ()

ClutterStage *      clutter_event_get_stage             (ClutterEvent *event);

Retrieves the source ClutterStage the event originated for, or NULL if the event has no stage.

event : a ClutterEvent
Returns : a ClutterStage. transfer none.

Since 0.8


clutter_event_get_flags ()

ClutterEventFlags   clutter_event_get_flags             (ClutterEvent *event);

Retrieves the ClutterEventFlags of event

event : a ClutterEvent
Returns : the event flags

Since 1.0


clutter_event_get ()

ClutterEvent *      clutter_event_get                   (void);

Pops an event off the event queue. Applications should not need to call this.

Returns : A ClutterEvent or NULL if queue empty

Since 0.4


clutter_event_peek ()

ClutterEvent *      clutter_event_peek                  (void);

Returns a pointer to the first event from the event queue but does not remove it.

Returns : A ClutterEvent or NULL if queue empty.. transfer none.

Since 0.4


clutter_event_put ()

void                clutter_event_put                   (ClutterEvent *event);

Puts a copy of the event on the back of the event queue. The event will have the CLUTTER_EVENT_FLAG_SYNTHETIC flag set. If the source is set event signals will be emitted for this source and capture/bubbling for its ancestors. If the source is not set it will be generated by picking or use the actor that currently has keyboard focus

event : a ClutterEvent

Since 0.6


clutter_events_pending ()

gboolean            clutter_events_pending              (void);

Checks if events are pending in the event queue.

Returns : TRUE if there are pending events, FALSE otherwise.

Since 0.4


clutter_event_get_button ()

guint32             clutter_event_get_button            (ClutterEvent *event);

Retrieves the button number of event

event : a ClutterEvent of type CLUTTER_BUTTON_PRESS or of type CLUTTER_BUTTON_RELEASE
Returns : the button number

Since 1.0


clutter_event_get_click_count ()

guint               clutter_event_get_click_count       (ClutterEvent *event);

Retrieves the number of clicks of event

event : a ClutterEvent of type CLUTTER_BUTTON_PRESS or of type CLUTTER_BUTTON_RELEASE
Returns : the click count

Since 1.0


clutter_event_get_key_symbol ()

guint               clutter_event_get_key_symbol        (ClutterEvent *event);

Retrieves the key symbol of event

event : a ClutterEvent of type CLUTTER_KEY_PRESS or of type CLUTTER_KEY_RELEASE
Returns : the key symbol representing the key

Since 1.0


clutter_event_get_key_code ()

guint16             clutter_event_get_key_code          (ClutterEvent *event);

Retrieves the keycode of the key that caused event

event : a ClutterEvent of type CLUTTER_KEY_PRESS or of type CLUTTER_KEY_RELEASE
Returns : The keycode representing the key

Since 1.0


clutter_event_get_key_unicode ()

guint32             clutter_event_get_key_unicode       (ClutterEvent *event);

Retrieves the unicode value for the key that caused keyev.

event : A ClutterKeyEvent
Returns : The unicode value representing the key

clutter_keysym_to_unicode ()

guint32             clutter_keysym_to_unicode           (guint keyval);

Convert from a Clutter key symbol to the corresponding ISO10646 (Unicode) character.

keyval : a key symbol
Returns : a Unicode character, or 0 if there is no corresponding character.

clutter_event_get_related ()

ClutterActor *      clutter_event_get_related           (ClutterEvent *event);

Retrieves the related actor of a crossing event.

event : a ClutterEvent of type CLUTTER_ENTER or of type CLUTTER_LEAVE
Returns : the related ClutterActor, or NULL. transfer none.

Since 1.0


clutter_event_get_scroll_direction ()

ClutterScrollDirection  clutter_event_get_scroll_direction
                                                        (ClutterEvent *event);

Retrieves the direction of the scrolling of event

event : a ClutterEvent of type CLUTTER_SCROLL
Returns : the scrolling direction

Since 1.0


enum ClutterInputDeviceType

typedef enum {
  CLUTTER_POINTER_DEVICE,
  CLUTTER_KEYBOARD_DEVICE,
  CLUTTER_EXTENSION_DEVICE,

  CLUTTER_N_DEVICE_TYPES
} ClutterInputDeviceType;

The types of input devices available.

The ClutterInputDeviceType enumeration can be extended at later date; not every platform supports every input device type.

CLUTTER_POINTER_DEVICE A pointer device
CLUTTER_KEYBOARD_DEVICE A keyboard device
CLUTTER_EXTENSION_DEVICE A generic extension device
CLUTTER_N_DEVICE_TYPES The number of device types

Since 1.0


clutter_event_get_device ()

ClutterInputDevice * clutter_event_get_device           (ClutterEvent *event);

Retrieves the ClutterInputDevice for the event.

The ClutterInputDevice structure is completely opaque and should be cast to the platform-specific implementation.

event : a ClutterEvent
Returns : the ClutterInputDevice or NULL

Since 1.0


clutter_event_get_device_id ()

gint                clutter_event_get_device_id         (ClutterEvent *event);

Retrieves the events device id if set.

event : a clutter event
Returns : A unique identifier for the device or -1 if the event has no specific device set.

clutter_event_get_device_type ()

ClutterInputDeviceType  clutter_event_get_device_type   (ClutterEvent *event);

Retrieves the type of the device for event

event : a ClutterEvent
Returns : the ClutterInputDeviceType for the device, if any is set

Since 1.0


clutter_get_input_device_for_id ()

ClutterInputDevice * clutter_get_input_device_for_id    (gint id);

Retrieves the ClutterInputDevice from its id.

id : a device id
Returns : a ClutterInputDevice, or NULL. transfer none.

Since 0.8


clutter_input_device_get_device_id ()

gint                clutter_input_device_get_device_id  (ClutterInputDevice *device);

Retrieves the unique identifier of device

device : a ClutterInputDevice
Returns : the identifier of the device

Since 1.0


clutter_input_device_get_device_type ()

ClutterInputDeviceType  clutter_input_device_get_device_type
                                                        (ClutterInputDevice *device);

Retrieves the type of device

device : a ClutterInputDevice
Returns : the type of the device

Since 1.0


clutter_get_current_event_time ()

guint32             clutter_get_current_event_time      (void);

Retrieves the timestamp of the last event, if there is an event or if the event has a timestamp.

Returns : the event timestamp, or CLUTTER_CURRENT_TIME

Since 1.0