evas: add keysym member to key event structs

@feature
This commit is contained in:
Mike Blumenkrantz 2015-05-20 14:49:51 -04:00
parent c3f3c4eba8
commit b7c89d2325
4 changed files with 74 additions and 10 deletions

View File

@ -332,23 +332,25 @@ _ecore_event_evas_key(Ecore_Event_Key *e, Ecore_Event_Press press)
if (!lookup) return ECORE_CALLBACK_PASS_ON;
ecore_event_evas_modifier_lock_update(lookup->evas, e->modifiers);
if (press == ECORE_DOWN)
evas_event_feed_key_down_with_keycode(lookup->evas,
evas_event_feed_key_down_with_keycode_and_keysym(lookup->evas,
e->keyname,
e->key,
e->string,
e->compose,
e->timestamp,
e->data,
e->keycode);
e->keycode,
e->keysym);
else
evas_event_feed_key_up_with_keycode(lookup->evas,
evas_event_feed_key_up_with_keycode_and_keysym(lookup->evas,
e->keyname,
e->key,
e->string,
e->compose,
e->timestamp,
e->data,
e->keycode);
e->keycode,
e->keysym);
return ECORE_CALLBACK_PASS_ON;
}

View File

@ -859,6 +859,7 @@ struct _Evas_Event_Key_Down /** Key press event */
Evas_Device *dev;
unsigned int keycode; /**< Key scan code numeric value @since 1.10 */
unsigned int keysym; /**< Encoding of key symbol @since 1.15 */
};
struct _Evas_Event_Key_Up /** Key release event */
@ -876,6 +877,7 @@ struct _Evas_Event_Key_Up /** Key release event */
Evas_Device *dev;
unsigned int keycode; /**< Key scan code numeric value @since 1.10 */
unsigned int keysym; /**< Encoding of key symbol @since 1.15 */
};
struct _Evas_Event_Render_Post /** Send when the frame rendering is done @since 1.8 */

View File

@ -1781,6 +1781,48 @@ class Evas.Canvas (Eo.Base, Evas.Common_Interface)
@in keycode: uint; /*@ Key scan code numeric value for canvas. */
}
}
event_feed_key_down_with_keycode_and_keysym {
/*@
Key down event feed with keycode and keysym
This function will set some evas properties that is necessary when
a key is pressed. It prepares information to be treated by the
callback function.
@since 1.15 */
params {
@in keyname: const(char)*; /*@ Name of the key */
@in key: const(char)*; /*@ The key pressed. */
@in string: const(char)*; /*@ A String */
@in compose: const(char)*; /*@ The compose string */
@in timestamp: uint; /*@ Timestamp of the mouse up event */
@in data: const(void)*; /*@ Data for canvas. */
@in keycode: uint; /*@ Key scan code numeric value for canvas. */
@in keysym: uint; /*@ Keysym for pressed key. */
}
}
event_feed_key_up_with_keycode_and_keysym {
/*@
Key up event feed with keycode
This function will set some evas properties that is necessary when
a key is released. It prepares information to be treated by the
callback function.
@since 1.15 */
params {
@in keyname: const(char)*; /*@ Name of the key */
@in key: const(char)*; /*@ The key released. */
@in string: const(char)*; /*@ string */
@in compose: const(char)*; /*@ compose */
@in timestamp: uint; /*@ Timestamp of the mouse up event */
@in data: const(void)*; /*@ Data for canvas. */
@in keycode: uint; /*@ Key scan code numeric value for canvas. */
@in keysym: uint; /*@ Keysym for pressed key. */
}
}
event_feed_axis_update {
/*@
Input device axis update event feed.

View File

@ -2451,7 +2451,8 @@ _canvas_event_feed_key_down_internal(Eo *eo_e,
const char *compose,
unsigned int timestamp,
const void *data,
unsigned int keycode)
unsigned int keycode,
unsigned int keysym)
{
Evas_Public_Data *e = _pd;
int event_id = 0;
@ -2479,6 +2480,7 @@ _canvas_event_feed_key_down_internal(Eo *eo_e,
ev.event_flags = e->default_event_flags;
ev.dev = _evas_device_top_get(eo_e);
ev.keycode = keycode;
ev.keysym = keysym;
if (ev.dev) _evas_device_ref(ev.dev);
if (e->grabs)
@ -2557,7 +2559,8 @@ _canvas_event_feed_key_up_internal(Eo *eo_e,
const char *compose,
unsigned int timestamp,
const void *data,
unsigned int keycode)
unsigned int keycode,
unsigned int keysym)
{
Evas_Public_Data *e = _pd;
int event_id = 0;
@ -2584,6 +2587,7 @@ _canvas_event_feed_key_up_internal(Eo *eo_e,
ev.event_flags = e->default_event_flags;
ev.dev = _evas_device_top_get(eo_e);
ev.keycode = keycode;
ev.keysym = keysym;
if (ev.dev) _evas_device_ref(ev.dev);
if (e->grabs)
@ -2657,28 +2661,42 @@ EOLIAN void
_evas_canvas_event_feed_key_down(Eo *eo_e, Evas_Public_Data *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data)
{
_canvas_event_feed_key_down_internal(eo_e, e, keyname, key, string,
compose, timestamp, data, 0);
compose, timestamp, data, 0, 0);
}
EOLIAN void
_evas_canvas_event_feed_key_up(Eo *eo_e, Evas_Public_Data *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data)
{
_canvas_event_feed_key_up_internal(eo_e, e, keyname, key, string,
compose, timestamp, data, 0);
compose, timestamp, data, 0, 0);
}
EOLIAN void
_evas_canvas_event_feed_key_down_with_keycode(Eo *eo_e, Evas_Public_Data *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data, unsigned int keycode)
{
_canvas_event_feed_key_down_internal(eo_e, e, keyname, key, string,
compose, timestamp, data, keycode);
compose, timestamp, data, keycode, 0);
}
EOLIAN void
_evas_canvas_event_feed_key_up_with_keycode(Eo *eo_e, Evas_Public_Data *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data, unsigned int keycode)
{
_canvas_event_feed_key_up_internal(eo_e, e, keyname, key, string,
compose, timestamp, data, keycode);
compose, timestamp, data, keycode, 0);
}
EOLIAN void
_evas_canvas_event_feed_key_down_with_keycode_and_keysym(Eo *eo_e, Evas_Public_Data *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data, unsigned int keycode, unsigned int keysym)
{
_canvas_event_feed_key_down_internal(eo_e, e, keyname, key, string,
compose, timestamp, data, keycode, keysym);
}
EOLIAN void
_evas_canvas_event_feed_key_up_with_keycode_and_keysym(Eo *eo_e, Evas_Public_Data *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data, unsigned int keycode, unsigned int keysym)
{
_canvas_event_feed_key_up_internal(eo_e, e, keyname, key, string,
compose, timestamp, data, keycode, keysym);
}
EOLIAN void