mirror of
https://github.com/brl/mutter.git
synced 2025-02-18 22:24:10 +00:00
clutter: Add clutter_event_get_key_state() getter
This function may be used on key events to obtain the fully detailed pressed/latched/locked modifiers that apply when the event is received. No events have this detailed information yet. This API call may be compared to the clutter_event_get_state_full() that existed in the past, although this getter has a stronger predilection to it applying exclusively to key events. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3369>
This commit is contained in:
parent
61de313198
commit
2e897fccd5
@ -4,6 +4,15 @@
|
|||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
typedef struct _ClutterModifierSet ClutterModifierSet;
|
||||||
|
|
||||||
|
struct _ClutterModifierSet
|
||||||
|
{
|
||||||
|
ClutterModifierType pressed;
|
||||||
|
ClutterModifierType latched;
|
||||||
|
ClutterModifierType locked;
|
||||||
|
};
|
||||||
|
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
ClutterEvent * clutter_event_key_new (ClutterEventType type,
|
ClutterEvent * clutter_event_key_new (ClutterEventType type,
|
||||||
ClutterEventFlags flags,
|
ClutterEventFlags flags,
|
||||||
|
@ -51,6 +51,7 @@ struct _ClutterKeyEvent
|
|||||||
ClutterInputDevice *device;
|
ClutterInputDevice *device;
|
||||||
ClutterInputDevice *source_device;
|
ClutterInputDevice *source_device;
|
||||||
|
|
||||||
|
ClutterModifierSet raw_modifiers;
|
||||||
ClutterModifierType modifier_state;
|
ClutterModifierType modifier_state;
|
||||||
uint32_t keyval;
|
uint32_t keyval;
|
||||||
uint16_t hardware_keycode;
|
uint16_t hardware_keycode;
|
||||||
@ -695,6 +696,36 @@ clutter_event_get_key_unicode (const ClutterEvent *event)
|
|||||||
return clutter_keysym_to_unicode (event->key.keyval);
|
return clutter_keysym_to_unicode (event->key.keyval);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_event_get_key_state:
|
||||||
|
* @event: a #ClutterEvent of type %CLUTTER_KEY_PRESS
|
||||||
|
* or %CLUTTER_KEY_RELEASE
|
||||||
|
* @pressed: (out): Return location for pressed modifiers
|
||||||
|
* @latched: (out): Return location for latched modifiers
|
||||||
|
* @locked: (out): Return location for locked modifiers
|
||||||
|
*
|
||||||
|
* Returns the modifier state decomposed into independent
|
||||||
|
* pressed/latched/locked states. The effective state is a
|
||||||
|
* composition of these 3 states, see clutter_event_get_state().
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
clutter_event_get_key_state (const ClutterEvent *event,
|
||||||
|
ClutterModifierType *pressed,
|
||||||
|
ClutterModifierType *latched,
|
||||||
|
ClutterModifierType *locked)
|
||||||
|
{
|
||||||
|
g_return_if_fail (event != NULL);
|
||||||
|
g_return_if_fail (event->type == CLUTTER_KEY_PRESS ||
|
||||||
|
event->type == CLUTTER_KEY_RELEASE);
|
||||||
|
|
||||||
|
if (pressed)
|
||||||
|
*pressed = event->key.raw_modifiers.pressed;
|
||||||
|
if (latched)
|
||||||
|
*latched = event->key.raw_modifiers.latched;
|
||||||
|
if (locked)
|
||||||
|
*locked = event->key.raw_modifiers.locked;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* clutter_event_get_event_sequence:
|
* clutter_event_get_event_sequence:
|
||||||
* @event: a #ClutterEvent of type %CLUTTER_TOUCH_BEGIN,
|
* @event: a #ClutterEvent of type %CLUTTER_TOUCH_BEGIN,
|
||||||
|
@ -205,6 +205,11 @@ guint16 clutter_event_get_key_code (const ClutterEv
|
|||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
gunichar clutter_event_get_key_unicode (const ClutterEvent *event);
|
gunichar clutter_event_get_key_unicode (const ClutterEvent *event);
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
|
void clutter_event_get_key_state (const ClutterEvent *event,
|
||||||
|
ClutterModifierType *pressed,
|
||||||
|
ClutterModifierType *latched,
|
||||||
|
ClutterModifierType *locked);
|
||||||
|
CLUTTER_EXPORT
|
||||||
guint32 clutter_event_get_button (const ClutterEvent *event);
|
guint32 clutter_event_get_button (const ClutterEvent *event);
|
||||||
CLUTTER_EXPORT
|
CLUTTER_EXPORT
|
||||||
ClutterActor * clutter_event_get_related (const ClutterEvent *event);
|
ClutterActor * clutter_event_get_related (const ClutterEvent *event);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user