diff --git a/src/lib/ecore_input_evas/ecore_input_evas.c b/src/lib/ecore_input_evas/ecore_input_evas.c index 23e954320f..5de76a86ac 100644 --- a/src/lib/ecore_input_evas/ecore_input_evas.c +++ b/src/lib/ecore_input_evas/ecore_input_evas.c @@ -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; } diff --git a/src/lib/evas/Evas_Common.h b/src/lib/evas/Evas_Common.h index bc2e18428a..c3c33f1cc7 100644 --- a/src/lib/evas/Evas_Common.h +++ b/src/lib/evas/Evas_Common.h @@ -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 */ diff --git a/src/lib/evas/canvas/evas_canvas.eo b/src/lib/evas/canvas/evas_canvas.eo index 130a083837..f27fda0a99 100644 --- a/src/lib/evas/canvas/evas_canvas.eo +++ b/src/lib/evas/canvas/evas_canvas.eo @@ -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. diff --git a/src/lib/evas/canvas/evas_events.c b/src/lib/evas/canvas/evas_events.c index b357044748..b6ef1ef823 100644 --- a/src/lib/evas/canvas/evas_events.c +++ b/src/lib/evas/canvas/evas_events.c @@ -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