tasn pushed a commit to branch master.

http://git.enlightenment.org/tools/exactness.git/commit/?id=450d2888ebfd8be82f07b0a266da978b469384f9

commit 450d2888ebfd8be82f07b0a266da978b469384f9
Author: kabeer khan <[email protected]>
Date:   Wed Mar 4 14:55:17 2015 +0000

    Add key up/down with keycode event handler
    
    Summary:
    To catch key press event added key up/down with keycode event handler
    
    Signed-off-by: kabeer khan <[email protected]>
    
    Reviewers: cedric, tasn
    
    Differential Revision: https://phab.enlightenment.org/D2052
---
 src/lib/tsuite_evas_hook.c | 124 ++++++++++++++++++++++++++++++++++++++++++++-
 src/lib/tsuite_file_data.c |  86 ++++++++++++++++++++++++++++++-
 src/lib/tsuite_file_data.h |  18 +++++++
 3 files changed, 226 insertions(+), 2 deletions(-)

diff --git a/src/lib/tsuite_evas_hook.c b/src/lib/tsuite_evas_hook.c
index dabf41b..03ca995 100644
--- a/src/lib/tsuite_evas_hook.c
+++ b/src/lib/tsuite_evas_hook.c
@@ -120,6 +120,16 @@ evt_time_get(unsigned int tm, Variant_st *v)
               key_down_key_up *t = v->data;
               return t->timestamp;
            }
+      case TSUITE_EVENT_KEY_DOWN_WITH_KEYCODE:
+           {
+              key_down_key_up_with_keycode *t = v->data;
+              return t->timestamp;
+           }
+      case TSUITE_EVENT_KEY_UP_WITH_KEYCODE:
+           {
+              key_down_key_up_with_keycode *t = v->data;
+              return t->timestamp;
+           }
       case TSUITE_EVENT_TAKE_SHOT:
            {
               take_screenshot *t = v->data;
@@ -496,6 +506,33 @@ tsuite_feed_event(void *data)
 
               break;
            }
+      case TSUITE_EVENT_KEY_DOWN_WITH_KEYCODE:
+           {
+              key_down_key_up_with_keycode *t = v->data;
+              evt_time = t->timestamp;
+#ifdef DEBUG_TSUITE
+              printf("%s evas_event_feed_key_down_with_keycode timestamp=<%u> 
t->n_evas=<%d> t->keycode=<%u>\n", __func__, t->timestamp, t->n_evas, 
t->keycode);
+#endif
+              evas_event_feed_key_down_with_keycode(eina_list_nth(evas_list, 
t->n_evas),
+                    t->keyname, t->key, t->string,
+                    t->compose, time(NULL), NULL, t->keycode);
+
+              break;
+           }
+      case TSUITE_EVENT_KEY_UP_WITH_KEYCODE:
+           {
+              key_down_key_up_with_keycode *t = v->data;
+              evt_time = t->timestamp;
+#ifdef DEBUG_TSUITE
+              printf("%s evas_event_feed_key_up_with_keycode timestamp=<%u> 
t->n_evas=<%d> t->keycode=<%u>\n", __func__, t->timestamp, t->n_evas, 
t->keycode);
+#endif
+              evas_event_feed_key_up(eina_list_nth(evas_list, t->n_evas),
+                    t->keyname, t->key, t->string,
+                    t->compose, time(NULL), NULL);
+
+              break;
+           }
+
       case TSUITE_EVENT_TAKE_SHOT:
            {
               take_screenshot *t = v->data;
@@ -627,7 +664,6 @@ tsuite_event_type_get(Evas_Callback_Type t)
          return TSUITE_EVENT_KEY_DOWN;
       case EVAS_CALLBACK_KEY_UP:
          return TSUITE_EVENT_KEY_UP;
-
       default:
          return TSUITE_EVENT_NOT_SUPPORTED;
      }
@@ -908,3 +944,89 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const 
char *key,
 
    orig(e, keyname, key, string, compose, timestamp, data);
 }
+
+EAPI void
+evas_event_feed_key_down_with_keycode(Evas *e, const char *keyname, const char 
*key,
+      const char *string, const char *compose,
+      unsigned int timestamp, const void *data, unsigned int keycode)
+{
+   int evt = TSUITE_EVENT_KEY_DOWN_WITH_KEYCODE;
+   void (*orig) (Evas *e, const char *keyname, const char *key,
+         const char *string, const char *compose,
+         unsigned int timestamp, const void *data, unsigned int keycode) =
+      dlsym(RTLD_NEXT, __func__);
+#ifdef DEBUG_TSUITE
+   printf("Calling %s timestamp=<%u>\n", __func__, timestamp);
+#endif
+   if (!strcmp(key, shot_key))
+     {
+#ifdef DEBUG_TSUITE
+        printf("Take Screenshot: %s timestamp=<%u>\n", __func__, timestamp);
+#endif
+        take_screenshot t = { timestamp, evas_list_find(e) };
+        if (t.n_evas >= 0)
+          ADD_TO_LIST(TSUITE_EVENT_TAKE_SHOT, take_screenshot, t);
+
+        orig(e, keyname, key, string, compose, timestamp, data, keycode);
+        return;
+     }
+
+
+   if (vr_list && _hook_setting->recording)
+     {  /* Construct duplicate strings, free them when list if freed */
+        key_down_key_up_with_keycode t;
+        t.timestamp = timestamp;
+        t.keyname = eina_stringshare_add(keyname);
+        t.key = eina_stringshare_add(key);
+        t.string = eina_stringshare_add(string);
+        t.compose = eina_stringshare_add(compose);
+        t.n_evas = evas_list_find(e);
+        t.keycode = keycode;
+        if (t.n_evas >= 0)
+          ADD_TO_LIST(evt, key_down_key_up, t);
+     }
+
+   orig(e, keyname, key, string, compose, timestamp, data, keycode);
+}
+
+EAPI void
+evas_event_feed_key_up_with_keycode(Evas *e, const char *keyname, const char 
*key,
+      const char *string, const char *compose,
+      unsigned int timestamp, const void *data, unsigned int keycode)
+{
+   void (*orig) (Evas *e, const char *keyname, const char *key,
+         const char *string, const char *compose,
+         unsigned int timestamp, const void *data, unsigned int keycode) =
+      dlsym(RTLD_NEXT, __func__);
+
+   if (!strcmp(key, shot_key))
+     {
+#ifdef DEBUG_TSUITE
+        printf("Take Screenshot: %s timestamp=<%u>\n", __func__, timestamp);
+#endif
+        orig(e, keyname, key, string, compose, timestamp, data, keycode);
+        return;  /* Take screenshot done on key-down */
+     }
+
+   int evt = TSUITE_EVENT_KEY_UP_WITH_KEYCODE;
+#ifdef DEBUG_TSUITE
+   printf("Calling %s timestamp=<%u>\n", __func__, timestamp);
+#endif
+
+   if (vr_list && _hook_setting->recording)
+     {  /* Construct duplicate strings, free them when list if freed */
+        key_down_key_up_with_keycode t;
+        t.timestamp = timestamp;
+        t.keyname = eina_stringshare_add(keyname);
+        t.key = eina_stringshare_add(key);
+        t.string = eina_stringshare_add(string);
+        t.compose = eina_stringshare_add(compose);
+        t.n_evas = evas_list_find(e);
+        t.keycode = keycode;
+        if (t.n_evas >= 0)
+          ADD_TO_LIST(evt, key_down_key_up, t);
+     }
+
+   orig(e, keyname, key, string, compose, timestamp, data, keycode);
+}
+
diff --git a/src/lib/tsuite_file_data.c b/src/lib/tsuite_file_data.c
index 840eab9..685f31c 100644
--- a/src/lib/tsuite_file_data.c
+++ b/src/lib/tsuite_file_data.c
@@ -22,6 +22,8 @@ static eet_event_type_mapping eet_mapping[] = {
        { TSUITE_EVENT_MULTI_MOVE, TSUITE_EVENT_MULTI_MOVE_STR },
        { TSUITE_EVENT_KEY_DOWN, TSUITE_EVENT_KEY_DOWN_STR },
        { TSUITE_EVENT_KEY_UP, TSUITE_EVENT_KEY_UP_STR },
+       { TSUITE_EVENT_KEY_DOWN_WITH_KEYCODE, 
TSUITE_EVENT_KEY_DOWN_WITH_KEYCODE_STR },
+       { TSUITE_EVENT_KEY_UP_WITH_KEYCODE, 
TSUITE_EVENT_KEY_UP_WITH_KEYCODE_STR },
        { TSUITE_EVENT_TAKE_SHOT, TSUITE_EVENT_TAKE_SHOT_STR },
        { TSUITE_EVENT_NOT_SUPPORTED, NULL }
 };
@@ -57,7 +59,9 @@ free_events(Lists_st *st, char *recording)
         if (recording)
           {
              Tsuite_Event_Type e = tsuite_event_mapping_type_get(v->t.type);
-             if ((e == TSUITE_EVENT_KEY_DOWN) || (e == TSUITE_EVENT_KEY_UP))
+             if ((e == TSUITE_EVENT_KEY_DOWN) || (e == TSUITE_EVENT_KEY_UP)
+                 || (e == TSUITE_EVENT_KEY_DOWN_WITH_KEYCODE)
+                 || (e == TSUITE_EVENT_KEY_UP_WITH_KEYCODE))
                {  /* Allocated in tsuite_evas_hook.c */
                   key_down_key_up *t = v->data;
                   eina_stringshare_del(t->keyname);
@@ -157,6 +161,18 @@ print_events(Lists_st *vr_list)
                    printf("%d evas_event_feed_key_up timestamp=<%u> 
t->n_evas=<%d>\n", n, t->timestamp, t->n_evas);
                    break;
                 }
+           case TSUITE_EVENT_KEY_DOWN_WITH_KEYCODE:
+                {
+                   key_down_key_up_with_keycode *t = v->data;
+                   printf("%d evas_event_feed_key_down_with_keycode 
timestamp=<%u> t->n_evas=<%d>\n", n, t->timestamp, t->n_evas);
+                   break;
+                }
+           case TSUITE_EVENT_KEY_UP_WITH_KEYCODE:
+                {
+                   key_down_key_up_with_keycode *t = v->data;
+                   printf("%d evas_event_feed_key_up_with_keycode 
timestamp=<%u> t->n_evas=<%d>\n", n, t->timestamp, t->n_evas);
+                   break;
+                }
            case TSUITE_EVENT_TAKE_SHOT:
                 {
                    take_screenshot *t = v->data;
@@ -455,6 +471,36 @@ Variant_st *key_down_key_up_new(Tsuite_Event_Type type,
    return va;
 }
 
+key_down_key_up_with_keycode *key_down_key_up_with_keycode_set(unsigned int 
timestamp,
+      const char *keyname, const char *key, const char *string,
+      const char *compose, int n_evas, unsigned int keycode)
+{
+   key_down_key_up_with_keycode *st = calloc(1, 
sizeof(key_down_key_up_with_keycode));
+   if (st)
+     {
+        st->timestamp = timestamp;
+        st->keyname = keyname;
+        st->key = key;
+        st->string = string;
+        st->compose = compose;
+        st->n_evas = n_evas;
+        st->keycode = keycode;
+     }
+
+   return st;
+}
+
+Variant_st *key_down_key_up_with_keycode_new(Tsuite_Event_Type type,
+      unsigned int timestamp, const char *keyname, const char *key,
+      const char *string, const char *compose, int n_evas, unsigned int 
keycode)
+{
+   Variant_st *va = calloc(1, sizeof(Variant_st));
+   va->t.type = eet_mapping[type].name;
+   va->data = key_down_key_up_with_keycode_set(timestamp, keyname, key, string,
+                                              compose, n_evas, keycode);
+   return va;
+}
+
 take_screenshot *take_screenshot_set(unsigned int timestamp, int n_evas)
 {
    take_screenshot *st = calloc(1, sizeof(take_screenshot));
@@ -597,6 +643,36 @@ key_down_key_up_desc_make(void)
 }
 
 Eet_Data_Descriptor *
+key_down_key_up_with_keycode_desc_make(void)
+{
+   Eet_Data_Descriptor_Class eddc;
+   Eet_Data_Descriptor *_d;
+   EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, 
key_down_key_up_with_keycode);
+   _d = eet_data_descriptor_stream_new(&eddc);
+
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_d, key_down_key_up_with_keycode, "timestamp",
+         timestamp, EET_T_UINT);
+
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_d, key_down_key_up_with_keycode, "keyname",
+         keyname, EET_T_STRING);
+
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_d, key_down_key_up_with_keycode, "key",
+         key, EET_T_STRING);
+
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_d, key_down_key_up_with_keycode, "string",
+         string, EET_T_STRING);
+
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_d, key_down_key_up_with_keycode, "compose",
+         compose, EET_T_STRING);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_d, key_down_key_up_with_keycode, "n_evas",
+         n_evas, EET_T_INT);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_d, key_down_key_up_with_keycode, "keycode",
+         keycode, EET_T_INT);
+
+   return _d;
+}
+
+Eet_Data_Descriptor *
 multi_event_desc_make(void)
 {
    Eet_Data_Descriptor_Class eddc;
@@ -670,6 +746,7 @@ data_desc *_data_descriptors_init(void)
    desc->multi_event = multi_event_desc_make();
    desc->multi_move = multi_move_desc_make();
    desc->key_down_key_up =  key_down_key_up_desc_make();
+   desc->key_down_key_up_with_keycode =  
key_down_key_up_with_keycode_desc_make();
 
    /* for variant */
    EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Variant_st);
@@ -714,6 +791,12 @@ data_desc *_data_descriptors_init(void)
          TSUITE_EVENT_KEY_UP_STR, desc->key_down_key_up);
 
    EET_DATA_DESCRIPTOR_ADD_MAPPING(desc->_variant_unified_descriptor,
+         TSUITE_EVENT_KEY_DOWN_WITH_KEYCODE_STR, 
desc->key_down_key_up_with_keycode);
+
+   EET_DATA_DESCRIPTOR_ADD_MAPPING(desc->_variant_unified_descriptor,
+         TSUITE_EVENT_KEY_UP_WITH_KEYCODE_STR, 
desc->key_down_key_up_with_keycode);
+
+   EET_DATA_DESCRIPTOR_ADD_MAPPING(desc->_variant_unified_descriptor,
          TSUITE_EVENT_TAKE_SHOT_STR, desc->take_screenshot);
 
 
@@ -737,6 +820,7 @@ void _data_descriptors_shutdown(void)
         eet_data_descriptor_free(desc->multi_event);
         eet_data_descriptor_free(desc->multi_move);
         eet_data_descriptor_free(desc->key_down_key_up);
+        eet_data_descriptor_free(desc->key_down_key_up_with_keycode);
         eet_data_descriptor_free(desc->take_screenshot);
         eet_data_descriptor_free(desc->_lists_descriptor);
         eet_data_descriptor_free(desc->_variant_descriptor);
diff --git a/src/lib/tsuite_file_data.h b/src/lib/tsuite_file_data.h
index 8d3087b..16cca38 100644
--- a/src/lib/tsuite_file_data.h
+++ b/src/lib/tsuite_file_data.h
@@ -20,6 +20,8 @@ enum _Tsuite_Event_Type
    TSUITE_EVENT_MULTI_MOVE,
    TSUITE_EVENT_KEY_DOWN,
    TSUITE_EVENT_KEY_UP,
+   TSUITE_EVENT_KEY_DOWN_WITH_KEYCODE,
+   TSUITE_EVENT_KEY_UP_WITH_KEYCODE,
    TSUITE_EVENT_TAKE_SHOT
 };
 typedef enum _Tsuite_Event_Type Tsuite_Event_Type;
@@ -103,6 +105,17 @@ struct _key_down_key_up
    int n_evas;
 };
 
+struct _key_down_key_up_with_keycode
+{
+   unsigned int timestamp;
+   const char *keyname;
+   const char *key;
+   const char *string;
+   const char *compose;
+   int n_evas;
+   unsigned int keycode;
+};
+
 struct _multi_event
 {
    int d;
@@ -143,6 +156,7 @@ typedef struct _mouse_wheel mouse_wheel;
 typedef struct _multi_event multi_event;
 typedef struct _multi_move multi_move;
 typedef struct _key_down_key_up key_down_key_up;
+typedef struct _key_down_key_up_with_keycode key_down_key_up_with_keycode;
 typedef struct _mouse_in_mouse_out take_screenshot;
 
 /* START - EET support typedefs */
@@ -157,6 +171,8 @@ typedef struct _mouse_in_mouse_out take_screenshot;
 #define TSUITE_EVENT_MULTI_MOVE_STR "tsuite_event_multi_move"
 #define TSUITE_EVENT_KEY_DOWN_STR "tsuite_event_key_down"
 #define TSUITE_EVENT_KEY_UP_STR "tsuite_event_key_up"
+#define TSUITE_EVENT_KEY_DOWN_WITH_KEYCODE_STR 
"tsuite_event_key_down_with_keycode"
+#define TSUITE_EVENT_KEY_UP_WITH_KEYCODE_STR "tsuite_event_key_up_with_keycode"
 #define TSUITE_EVENT_TAKE_SHOT_STR "tsuite_event_take_shot"
 
 struct _Lists_st
@@ -175,6 +191,7 @@ struct _data_desc
    Eet_Data_Descriptor *multi_event;
    Eet_Data_Descriptor *multi_move;
    Eet_Data_Descriptor *key_down_key_up;
+   Eet_Data_Descriptor *key_down_key_up_with_keycode;
 
    /* list, variant EET desc support */
    Eet_Data_Descriptor *_lists_descriptor;
@@ -191,6 +208,7 @@ Eet_Data_Descriptor *mouse_down_mouse_up_desc_make(void);
 Eet_Data_Descriptor *mouse_move_desc_make(void);
 Eet_Data_Descriptor *mouse_wheel_desc_make(void);
 Eet_Data_Descriptor *key_down_key_up_desc_make(void);
+Eet_Data_Descriptor *key_down_key_up_with_keycode_desc_make(void);
 Eet_Data_Descriptor *multi_event_desc_make(void);
 Eet_Data_Descriptor *multi_move_desc_make(void);
 data_desc *_data_descriptors_init(void);

-- 


Reply via email to