[Tizen] Fix to get the logical key to ecore key variable
[platform/core/uifw/dali-adaptor.git] / dali / internal / window-system / ubuntu-x11 / window-base-ecore-x.cpp
index 639a334..edc82c8 100755 (executable)
@@ -519,6 +519,7 @@ void WindowBaseEcoreX::OnKeyDown( void* data, int type, void* event )
     DALI_LOG_INFO( gWindowBaseLogFilter, Debug::General, "WindowBaseEcoreX::OnKeyDown\n" );
 
     std::string keyName( keyEvent->keyname );
+    std::string key( "" );
     std::string keyString( "" );
     std::string compose( "" );
 
@@ -528,6 +529,12 @@ void WindowBaseEcoreX::OnKeyDown( void* data, int type, void* event )
       compose = keyEvent->compose;
     }
 
+    // Ensure key symbol is not NULL as keys like SHIFT have a null string.
+    if( keyEvent->key )
+    {
+      key = keyEvent->key;
+    }
+
     int keyCode = ecore_x_keysym_keycode_get( keyEvent->keyname );
     int modifier( keyEvent->modifiers );
     unsigned long time = keyEvent->timestamp;
@@ -538,7 +545,7 @@ void WindowBaseEcoreX::OnKeyDown( void* data, int type, void* event )
       keyString = keyEvent->string;
     }
 
-    Integration::KeyEvent keyEvent( keyName, keyString, keyCode, modifier, time, Integration::KeyEvent::Down, compose, DEFAULT_DEVICE_NAME, DEFAULT_DEVICE_CLASS, DEFAULT_DEVICE_SUBCLASS );
+    Integration::KeyEvent keyEvent( keyName, key, keyString, keyCode, modifier, time, Integration::KeyEvent::Down, compose, DEFAULT_DEVICE_NAME, DEFAULT_DEVICE_CLASS, DEFAULT_DEVICE_SUBCLASS );
 
     mKeyEventSignal.Emit( keyEvent );
   }
@@ -553,6 +560,7 @@ void WindowBaseEcoreX::OnKeyUp( void* data, int type, void* event )
     DALI_LOG_INFO( gWindowBaseLogFilter, Debug::General, " WindowBaseEcoreX::OnKeyUp\n" );
 
     std::string keyName( keyEvent->keyname );
+    std::string key( "" );
     std::string keyString( "" );
     std::string compose( "" );
 
@@ -561,6 +569,12 @@ void WindowBaseEcoreX::OnKeyUp( void* data, int type, void* event )
     {
       compose = keyEvent->compose;
     }
+    // Ensure key symbol is not NULL as keys like SHIFT have a null string.
+    if( keyEvent->key )
+    {
+      key = keyEvent->key;
+    }
+
     int keyCode = ecore_x_keysym_keycode_get( keyEvent->keyname );
     int modifier( keyEvent->modifiers );
     unsigned long time( keyEvent->timestamp );
@@ -571,7 +585,7 @@ void WindowBaseEcoreX::OnKeyUp( void* data, int type, void* event )
       keyString = keyEvent->string;
     }
 
-    Integration::KeyEvent keyEvent( keyName, keyString, keyCode, modifier, time, Integration::KeyEvent::Up, compose, DEFAULT_DEVICE_NAME, DEFAULT_DEVICE_CLASS, DEFAULT_DEVICE_SUBCLASS );
+    Integration::KeyEvent keyEvent( keyName, key, keyString, keyCode, modifier, time, Integration::KeyEvent::Up, compose, DEFAULT_DEVICE_NAME, DEFAULT_DEVICE_CLASS, DEFAULT_DEVICE_SUBCLASS );
 
     mKeyEventSignal.Emit( keyEvent );
   }