EventHandlers use IsDeviceButton for filtering Keyevents to IMF 69/61069/5
authorAgnelo Vaz <agnelo.vaz@samsung.com>
Thu, 3 Mar 2016 18:03:12 +0000 (18:03 +0000)
committerdongsug.song <dongsug.song@samsung.com>
Tue, 8 Mar 2016 12:17:22 +0000 (21:17 +0900)
A comparison was being done with the Ecore KeyEvent and the lookup table in in Dali KeyLookup,
as there could be one to many mappings the first match was returned. Meant a following match that was needed got ignored.
Use IsDeviceButton now which returns true or false after checking whole KeyLookup table.

Change-Id: I0d888a641e700569d6a66106df52ccef01f86a1d

adaptors/ecore/wayland/event-handler-ecore-wl.cpp
adaptors/ecore/wayland/key-mapping-ecore-wl.cpp
adaptors/tv/key-mapping-tv.cpp
adaptors/ubuntu/key-mapping-ubuntu.cpp
adaptors/wayland/input/key-mapping-wl.cpp
adaptors/x11/ecore-x-event-handler.cpp
adaptors/x11/key-mapping-x.cpp
automated-tests/src/dali-adaptor/utc-Dali-Key.cpp
automated-tests/src/dali-adaptor/utc-Dali-KeyGrab.cpp

index c32bec4..415dea4 100644 (file)
@@ -384,19 +384,14 @@ struct EventHandler::Impl
    */
   static Eina_Bool EcoreEventKeyUp( void* data, int type, void* event )
   {
-    DALI_LOG_INFO( gImfLogging, Debug::General, "EVENT >>EcoreEventKeyUp \n" );
+    DALI_LOG_INFO( gImfLogging, Debug::General, "EVENT >>EcoreEventKeyUp\n" );
 
     EventHandler* handler( (EventHandler*)data );
     Ecore_Event_Key *keyEvent( (Ecore_Event_Key*)event );
     bool eventHandled( false );
 
-    // Menu, home, back button must skip ecore_imf_context_filter_event.
-    static const char* menuKeyName = KeyLookup::GetKeyName( DALI_KEY_MENU );
-    static const char* homeKeyName = KeyLookup::GetKeyName( DALI_KEY_HOME );
-    static const char* backKeyName = KeyLookup::GetKeyName( DALI_KEY_BACK );
-    if ( ( menuKeyName && strcmp( keyEvent->keyname, menuKeyName ) != 0 ) &&
-         ( homeKeyName && strcmp( keyEvent->keyname, homeKeyName ) != 0 ) &&
-         ( backKeyName && strcmp( keyEvent->keyname, backKeyName ) != 0 ) )
+    // Device keys like Menu, home, back button must skip ecore_imf_context_filter_event.
+    if ( ! KeyLookup::IsDeviceButton( keyEvent->keyname ) )
     {
       Ecore_IMF_Context* imfContext = NULL;
       Dali::ImfManager imfManager( ImfManager::Get() );
index 912ea8a..6603b27 100644 (file)
@@ -59,6 +59,9 @@ KeyLookup KeyLookupTable[]=
   { "XF86Menu",              DALI_KEY_MENU,            true  },
   { "XF86Home",              DALI_KEY_HOME,            true  },
   { "XF86Back",              DALI_KEY_BACK,            true  },
+  { "XF86Send",              DALI_KEY_MENU,            true  },
+  { "XF86Phone",             DALI_KEY_HOME,            true  },
+  { "XF86Stop",              DALI_KEY_BACK,            true  },
   { "XF86HomePage",          DALI_KEY_HOMEPAGE,        false },
   { "XF86WWW",               DALI_KEY_WEBPAGE,         false },
   { "XF86Mail",              DALI_KEY_MAIL,            false },
index 6c9012f..1009157 100644 (file)
@@ -59,6 +59,9 @@ KeyLookup KeyLookupTable[]=
   { "XF86Menu",              DALI_KEY_MENU,            true  },
   { "XF86Home",              DALI_KEY_HOME,            true  },
   { "XF86Back",              DALI_KEY_BACK,            true  },
+  { "XF86Send",              DALI_KEY_MENU,            true  },
+  { "XF86Phone",             DALI_KEY_HOME,            true  },
+  { "XF86Stop",              DALI_KEY_BACK,            true  },
   { "XF86HomePage",          DALI_KEY_HOMEPAGE,        false },
   { "XF86WWW",               DALI_KEY_WEBPAGE,         false },
   { "XF86Mail",              DALI_KEY_MAIL,            false },
index 53c18de..2864cfe 100644 (file)
@@ -59,6 +59,9 @@ KeyLookup KeyLookupTable[]=
   { "XF86Menu",              DALI_KEY_MENU,            true  },
   { "XF86Home",              DALI_KEY_HOME,            true  },
   { "XF86Back",              DALI_KEY_BACK,            true  },
+  { "XF86Send",              DALI_KEY_MENU,            true  },
+  { "XF86Phone",             DALI_KEY_HOME,            true  },
+  { "XF86Stop",              DALI_KEY_BACK,            true  },
   { "XF86HomePage",          DALI_KEY_HOMEPAGE,        false },
   { "XF86WWW",               DALI_KEY_WEBPAGE,         false },
   { "XF86Mail",              DALI_KEY_MAIL,            false },
index 1507607..bcf581d 100644 (file)
@@ -59,6 +59,9 @@ KeyLookup KeyLookupTable[]=
   { "XF86Menu",              DALI_KEY_MENU,            true  },
   { "XF86Home",              DALI_KEY_HOME,            true  },
   { "XF86Back",              DALI_KEY_BACK,            true  },
+  { "XF86Send",              DALI_KEY_MENU,            true  },
+  { "XF86Phone",             DALI_KEY_HOME,            true  },
+  { "XF86Stop",              DALI_KEY_BACK,            true  },
   { "XF86HomePage",          DALI_KEY_HOMEPAGE,        false },
   { "XF86WWW",               DALI_KEY_WEBPAGE,         false },
   { "XF86Mail",              DALI_KEY_MAIL,            false },
index 52afebd..29b89b2 100644 (file)
@@ -706,13 +706,8 @@ struct EventHandler::Impl
     Ecore_Event_Key *keyEvent( (Ecore_Event_Key*)event );
     bool eventHandled( false );
 
-    // Menu, home, back button must skip ecore_imf_context_filter_event.
-    static const char* menuKeyName = KeyLookup::GetKeyName( DALI_KEY_MENU );
-    static const char* homeKeyName = KeyLookup::GetKeyName( DALI_KEY_HOME );
-    static const char* backKeyName = KeyLookup::GetKeyName( DALI_KEY_BACK );
-    if ( ( menuKeyName && strcmp( keyEvent->keyname, menuKeyName ) != 0 ) &&
-         ( homeKeyName && strcmp( keyEvent->keyname, homeKeyName ) != 0 ) &&
-         ( backKeyName && strcmp( keyEvent->keyname, backKeyName ) != 0 ) )
+    // Device keys like Menu, home, back button must skip ecore_imf_context_filter_event.
+    if ( ! KeyLookup::IsDeviceButton( keyEvent->keyname ) )
     {
       Ecore_IMF_Context* imfContext = NULL;
       Dali::ImfManager imfManager( ImfManager::Get() );
index 912ea8a..6603b27 100644 (file)
@@ -59,6 +59,9 @@ KeyLookup KeyLookupTable[]=
   { "XF86Menu",              DALI_KEY_MENU,            true  },
   { "XF86Home",              DALI_KEY_HOME,            true  },
   { "XF86Back",              DALI_KEY_BACK,            true  },
+  { "XF86Send",              DALI_KEY_MENU,            true  },
+  { "XF86Phone",             DALI_KEY_HOME,            true  },
+  { "XF86Stop",              DALI_KEY_BACK,            true  },
   { "XF86HomePage",          DALI_KEY_HOMEPAGE,        false },
   { "XF86WWW",               DALI_KEY_WEBPAGE,         false },
   { "XF86Mail",              DALI_KEY_MAIL,            false },
index 51d7bc0..9a2e7dc 100644 (file)
@@ -72,6 +72,9 @@ KeyLookup KeyLookupTable[]=
   { "XF86Menu",              DALI_KEY_MENU,            true  },
   { "XF86Home",              DALI_KEY_HOME,            true  },
   { "XF86Back",              DALI_KEY_BACK,            true  },
+  { "XF86Send",              DALI_KEY_MENU,            true  },
+  { "XF86Phone",             DALI_KEY_HOME,            true  },
+  { "XF86Stop",              DALI_KEY_BACK,            true  },
   { "XF86HomePage",          DALI_KEY_HOMEPAGE,        false },
   { "XF86WWW",               DALI_KEY_WEBPAGE,         false },
   { "XF86Mail",              DALI_KEY_MAIL,            false },
index 3b9a1d7..1a5d8ce 100644 (file)
@@ -73,6 +73,7 @@ KeyLookup TestKeyLookupTable[]=
   { "XF86AudioPlayPause",    DALI_KEY_PLAY_PAUSE,      false },
   { "XF86AudioMute",         DALI_KEY_MUTE,            false },
   { "XF86Menu",              DALI_KEY_MENU,            true  },
+  { "XF86Send",              DALI_KEY_MENU,            true  },
   { "XF86HomePage",          DALI_KEY_HOMEPAGE,        false },
   { "XF86WWW",               DALI_KEY_WEBPAGE,         false },
   { "XF86Mail",              DALI_KEY_MAIL,            false },