From 20e9508534d3498d600a885df07b8061eaf1500a Mon Sep 17 00:00:00 2001 From: Richard Huang Date: Tue, 25 Aug 2020 10:33:48 +0100 Subject: [PATCH] KeyEvent class pimpling Change-Id: I422b474a472a6f8f5f268c0c1d07b5651940b7a0 --- automated-tests/src/dali-adaptor/utc-Dali-Key.cpp | 6 +- dali/devel-api/adaptor-framework/event-feeder.h | 2 +- dali/devel-api/adaptor-framework/window-devel.h | 2 +- .../adaptor-framework/scene-holder-impl.h | 2 +- .../adaptor-framework/scene-holder.cpp | 4 +- .../adaptor-framework/scene-holder.h | 2 +- .../internal/adaptor/android/framework-android.cpp | 7 ++- dali/internal/adaptor/common/adaptor-impl.cpp | 4 +- dali/internal/adaptor/common/adaptor-impl.h | 2 +- dali/internal/input/common/key-impl.cpp | 4 +- .../input-method-context-impl-ecore-wl.cpp | 68 +++++++++++----------- .../input-method-context-impl-ecore-wl.h | 4 +- .../ubuntu-x11/input-method-context-impl-x.cpp | 57 +++++++++--------- .../input/ubuntu-x11/input-method-context-impl-x.h | 6 +- .../windows/input-method-context-impl-win.cpp | 6 +- dali/public-api/adaptor-framework/window.h | 2 +- 16 files changed, 90 insertions(+), 88 deletions(-) diff --git a/automated-tests/src/dali-adaptor/utc-Dali-Key.cpp b/automated-tests/src/dali-adaptor/utc-Dali-Key.cpp index 9a2e7dc..27e5fb6 100644 --- a/automated-tests/src/dali-adaptor/utc-Dali-Key.cpp +++ b/automated-tests/src/dali-adaptor/utc-Dali-Key.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ #include #include #include +#include #include using namespace Dali; @@ -97,8 +98,7 @@ const std::size_t KEY_LOOKUP_COUNT = (sizeof( KeyLookupTable))/ (sizeof(KeyLooku // Generate a KeyPressEvent to send to Core Dali::KeyEvent GenerateKeyPress( const std::string& keyName ) { - KeyEvent keyPress; - keyPress.keyPressedName = keyName; + Dali::KeyEvent keyPress = DevelKeyEvent::New(keyName, "", "", -1, 0, 0lu, Dali::KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE); // set name to test, key string to i and modifier to shift return keyPress; } diff --git a/dali/devel-api/adaptor-framework/event-feeder.h b/dali/devel-api/adaptor-framework/event-feeder.h index e1648a6..ab52f73 100644 --- a/dali/devel-api/adaptor-framework/event-feeder.h +++ b/dali/devel-api/adaptor-framework/event-feeder.h @@ -25,7 +25,7 @@ namespace Dali { class WheelEvent; -struct KeyEvent; +class KeyEvent; struct TouchPoint; namespace EventFeeder diff --git a/dali/devel-api/adaptor-framework/window-devel.h b/dali/devel-api/adaptor-framework/window-devel.h index 4e14202..42de53c 100644 --- a/dali/devel-api/adaptor-framework/window-devel.h +++ b/dali/devel-api/adaptor-framework/window-devel.h @@ -27,7 +27,7 @@ namespace Dali { -struct KeyEvent; +class KeyEvent; class TouchEvent; class WheelEvent; class RenderTaskList; diff --git a/dali/integration-api/adaptor-framework/scene-holder-impl.h b/dali/integration-api/adaptor-framework/scene-holder-impl.h index b7bd53b..baf0a57 100644 --- a/dali/integration-api/adaptor-framework/scene-holder-impl.h +++ b/dali/integration-api/adaptor-framework/scene-holder-impl.h @@ -43,7 +43,7 @@ class Actor; class Layer; class WheelEvent; struct TouchPoint; -struct KeyEvent; +class KeyEvent; namespace Integration { diff --git a/dali/integration-api/adaptor-framework/scene-holder.cpp b/dali/integration-api/adaptor-framework/scene-holder.cpp index d7b1514..f9c1965 100644 --- a/dali/integration-api/adaptor-framework/scene-holder.cpp +++ b/dali/integration-api/adaptor-framework/scene-holder.cpp @@ -102,8 +102,8 @@ void SceneHolder::FeedWheelEvent( Dali::WheelEvent& wheelEvent ) void SceneHolder::FeedKeyEvent( Dali::KeyEvent& keyEvent ) { - Integration::KeyEvent convertedEvent( keyEvent ); - GetImplementation(*this).FeedKeyEvent( convertedEvent ); + Integration::KeyEvent event( keyEvent.GetKeyName(), keyEvent.GetLogicalKey(), keyEvent.GetKeyString(), keyEvent.GetKeyCode(), keyEvent.GetKeyModifier(), keyEvent.GetTime(), static_cast< Integration::KeyEvent::State >( keyEvent.GetState() ), keyEvent.GetCompose(), keyEvent.GetDeviceName(), keyEvent.GetDeviceClass(), keyEvent.GetDeviceSubclass() ); + GetImplementation(*this).FeedKeyEvent( event ); } SceneHolder SceneHolder::Get( Actor actor ) diff --git a/dali/integration-api/adaptor-framework/scene-holder.h b/dali/integration-api/adaptor-framework/scene-holder.h index 2026e19..fe80572 100644 --- a/dali/integration-api/adaptor-framework/scene-holder.h +++ b/dali/integration-api/adaptor-framework/scene-holder.h @@ -33,7 +33,7 @@ class Any; class TouchEvent; class WheelEvent; struct TouchPoint; -struct KeyEvent; +class KeyEvent; namespace Internal DALI_INTERNAL { diff --git a/dali/internal/adaptor/android/framework-android.cpp b/dali/internal/adaptor/android/framework-android.cpp index 741f76c..b129bcd 100644 --- a/dali/internal/adaptor/android/framework-android.cpp +++ b/dali/internal/adaptor/android/framework-android.cpp @@ -29,6 +29,7 @@ #include #include #include +#include // INTERNAL INCLUDES #include @@ -421,13 +422,13 @@ struct Framework::Impl int32_t action = AKeyEvent_getAction( event ); int64_t timeStamp = AKeyEvent_getEventTime( event ); - KeyEvent::State state = KeyEvent::Down; + Dali::KeyEvent::State state = Dali::KeyEvent::Down; switch ( action ) { case AKEY_EVENT_ACTION_DOWN: break; case AKEY_EVENT_ACTION_UP: - state = KeyEvent::Up; + state = Dali::KeyEvent::Up; break; } @@ -440,7 +441,7 @@ struct Framework::Impl default: break; } - Dali::KeyEvent keyEvent( keyName, "", keyCode, 0, timeStamp, state ); + Dali::KeyEvent keyEvent = Dali::DevelKeyEvent::New( keyName, "", "", keyCode, 0, timeStamp, state, "", "", Device::Class::NONE, Device::Subclass::NONE ); Dali::Internal::Adaptor::Framework::Impl::NativeAppKeyEvent( framework, keyEvent ); return 1; } diff --git a/dali/internal/adaptor/common/adaptor-impl.cpp b/dali/internal/adaptor/common/adaptor-impl.cpp index c496606..10a6180 100644 --- a/dali/internal/adaptor/common/adaptor-impl.cpp +++ b/dali/internal/adaptor/common/adaptor-impl.cpp @@ -560,9 +560,9 @@ void Adaptor::FeedWheelEvent( Dali::WheelEvent& wheelEvent ) mWindows.front()->FeedWheelEvent( event ); } -void Adaptor::FeedKeyEvent( KeyEvent& keyEvent ) +void Adaptor::FeedKeyEvent( Dali::KeyEvent& keyEvent ) { - Integration::KeyEvent convertedEvent( keyEvent ); + Integration::KeyEvent convertedEvent( keyEvent.GetKeyName(), keyEvent.GetLogicalKey(), keyEvent.GetKeyString(), keyEvent.GetKeyCode(), keyEvent.GetKeyModifier(), keyEvent.GetTime(), static_cast< Integration::KeyEvent::State >( keyEvent.GetState() ), keyEvent.GetCompose(), keyEvent.GetDeviceName(), keyEvent.GetDeviceClass(), keyEvent.GetDeviceSubclass() ); mWindows.front()->FeedKeyEvent( convertedEvent ); } diff --git a/dali/internal/adaptor/common/adaptor-impl.h b/dali/internal/adaptor/common/adaptor-impl.h index 29d8620..2369d51 100644 --- a/dali/internal/adaptor/common/adaptor-impl.h +++ b/dali/internal/adaptor/common/adaptor-impl.h @@ -217,7 +217,7 @@ public: // AdaptorInternalServices implementation /** * @copydoc Dali::EventFeeder::FeedKeyEvent() */ - virtual void FeedKeyEvent( KeyEvent& keyEvent ); + virtual void FeedKeyEvent( Dali::KeyEvent& keyEvent ); /** * @copydoc Dali::Adaptor::ReplaceSurface() diff --git a/dali/internal/input/common/key-impl.cpp b/dali/internal/input/common/key-impl.cpp index fe81d22..49dd765 100644 --- a/dali/internal/input/common/key-impl.cpp +++ b/dali/internal/input/common/key-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -282,7 +282,7 @@ KeyMap globalKeyLookup; bool IsKey( const Dali::KeyEvent& keyEvent, Dali::KEY daliKey) { - int key = globalKeyLookup.GetDaliKeyEnum( keyEvent.keyPressedName.c_str() ); + int key = globalKeyLookup.GetDaliKeyEnum( keyEvent.GetKeyName().c_str() ); return daliKey == key; } diff --git a/dali/internal/input/tizen-wayland/input-method-context-impl-ecore-wl.cpp b/dali/internal/input/tizen-wayland/input-method-context-impl-ecore-wl.cpp index 88b63a6..7482be6 100755 --- a/dali/internal/input/tizen-wayland/input-method-context-impl-ecore-wl.cpp +++ b/dali/internal/input/tizen-wayland/input-method-context-impl-ecore-wl.cpp @@ -1055,14 +1055,14 @@ bool InputMethodContextEcoreWl::FilterEventKey( const Dali::KeyEvent& keyEvent ) bool eventHandled( false ); // If a device key then skip ecore_imf_context_filter_event. - if ( ! KeyLookup::IsDeviceButton( keyEvent.keyPressedName.c_str() )) + if ( ! KeyLookup::IsDeviceButton( keyEvent.GetKeyName().c_str() )) { //check whether it's key down or key up event - if ( keyEvent.state == KeyEvent::Down ) + if ( keyEvent.GetState() == Dali::KeyEvent::Down ) { eventHandled = ProcessEventKeyDown( keyEvent ); } - else if ( keyEvent.state == KeyEvent::Up ) + else if ( keyEvent.GetState() == Dali::KeyEvent::Up ) { eventHandled = ProcessEventKeyUp( keyEvent ); } @@ -1160,38 +1160,38 @@ void InputMethodContextEcoreWl::GetPreeditStyle( Dali::InputMethodContext::PreEd attrs = mPreeditAttrs; } -bool InputMethodContextEcoreWl::ProcessEventKeyDown( const KeyEvent& keyEvent ) +bool InputMethodContextEcoreWl::ProcessEventKeyDown( const Dali::KeyEvent& keyEvent ) { bool eventHandled( false ); if ( mIMFContext ) { - Integration::KeyEvent integKeyEvent( keyEvent ); + Integration::KeyEvent integKeyEvent( keyEvent.GetKeyName(), keyEvent.GetLogicalKey(), keyEvent.GetKeyString(), keyEvent.GetKeyCode(), keyEvent.GetKeyModifier(), keyEvent.GetTime(), static_cast< Integration::KeyEvent::State >( keyEvent.GetState() ), keyEvent.GetCompose(), keyEvent.GetDeviceName(), keyEvent.GetDeviceClass(), keyEvent.GetDeviceSubclass() ); std::string key = integKeyEvent.logicalKey; - std::string compose = keyEvent.GetCompose(); - std::string deviceName = keyEvent.GetDeviceName(); + std::string compose = integKeyEvent.compose; + std::string deviceName = integKeyEvent.deviceName; // We're consuming key down event so we have to pass to InputMethodContext so that it can parse it as well. Ecore_IMF_Event_Key_Down ecoreKeyDownEvent; - ecoreKeyDownEvent.keyname = keyEvent.keyPressedName.c_str(); + ecoreKeyDownEvent.keyname = integKeyEvent.keyName.c_str(); ecoreKeyDownEvent.key = key.c_str(); - ecoreKeyDownEvent.string = keyEvent.keyPressed.c_str(); + ecoreKeyDownEvent.string = integKeyEvent.keyString.c_str(); ecoreKeyDownEvent.compose = compose.c_str(); - ecoreKeyDownEvent.timestamp = keyEvent.time; - ecoreKeyDownEvent.modifiers = EcoreInputModifierToEcoreIMFModifier( keyEvent.keyModifier ); - ecoreKeyDownEvent.locks = EcoreInputModifierToEcoreIMFLock( keyEvent.keyModifier ); + ecoreKeyDownEvent.timestamp = integKeyEvent.time; + ecoreKeyDownEvent.modifiers = EcoreInputModifierToEcoreIMFModifier( integKeyEvent.keyModifier ); + ecoreKeyDownEvent.locks = EcoreInputModifierToEcoreIMFLock( integKeyEvent.keyModifier ); ecoreKeyDownEvent.dev_name = deviceName.c_str(); - ecoreKeyDownEvent.dev_class = static_cast ( keyEvent.GetDeviceClass() );//ECORE_IMF_DEVICE_CLASS_KEYBOARD; - ecoreKeyDownEvent.dev_subclass = static_cast ( keyEvent.GetDeviceSubclass() );//ECORE_IMF_DEVICE_SUBCLASS_NONE; + ecoreKeyDownEvent.dev_class = static_cast ( integKeyEvent.deviceClass );//ECORE_IMF_DEVICE_CLASS_KEYBOARD; + ecoreKeyDownEvent.dev_subclass = static_cast ( integKeyEvent.deviceSubclass );//ECORE_IMF_DEVICE_SUBCLASS_NONE; #if defined(ECORE_VERSION_MAJOR) && (ECORE_VERSION_MAJOR >= 1) && defined(ECORE_VERSION_MINOR) && (ECORE_VERSION_MINOR >= 22) - ecoreKeyDownEvent.keycode = keyEvent.keyCode; // Ecore_IMF_Event structure has added 'keycode' variable since ecore_imf 1.22 version. + ecoreKeyDownEvent.keycode = integKeyEvent.keyCode; // Ecore_IMF_Event structure has added 'keycode' variable since ecore_imf 1.22 version. #endif // Since ecore_imf 1.22 version // If the device is IME and the focused key is the direction keys, then we should send a key event to move a key cursor. - if ((keyEvent.GetDeviceName() == "ime") && ((!strncmp(keyEvent.keyPressedName.c_str(), "Left", 4)) || - (!strncmp(keyEvent.keyPressedName.c_str(), "Right", 5)) || - (!strncmp(keyEvent.keyPressedName.c_str(), "Up", 2)) || - (!strncmp(keyEvent.keyPressedName.c_str(), "Down", 4)))) + if ((integKeyEvent.deviceName == "ime") && ((!strncmp(integKeyEvent.keyName.c_str(), "Left", 4)) || + (!strncmp(integKeyEvent.keyName.c_str(), "Right", 5)) || + (!strncmp(integKeyEvent.keyName.c_str(), "Up", 2)) || + (!strncmp(integKeyEvent.keyName.c_str(), "Down", 4)))) { eventHandled = 0; } @@ -1205,9 +1205,9 @@ bool InputMethodContextEcoreWl::ProcessEventKeyDown( const KeyEvent& keyEvent ) // If the event has not been handled by InputMethodContext then check if we should reset our input method context if (!eventHandled) { - if (!strcmp(keyEvent.keyPressedName.c_str(), "Escape") || - !strcmp(keyEvent.keyPressedName.c_str(), "Return") || - !strcmp(keyEvent.keyPressedName.c_str(), "KP_Enter")) + if (!strcmp(integKeyEvent.keyName.c_str(), "Escape") || + !strcmp(integKeyEvent.keyName.c_str(), "Return") || + !strcmp(integKeyEvent.keyName.c_str(), "KP_Enter")) { ecore_imf_context_reset(mIMFContext); } @@ -1216,31 +1216,31 @@ bool InputMethodContextEcoreWl::ProcessEventKeyDown( const KeyEvent& keyEvent ) return eventHandled; } -bool InputMethodContextEcoreWl::ProcessEventKeyUp( const KeyEvent& keyEvent ) +bool InputMethodContextEcoreWl::ProcessEventKeyUp( const Dali::KeyEvent& keyEvent ) { bool eventHandled( false ); if( mIMFContext ) { - Integration::KeyEvent integKeyEvent( keyEvent ); + Integration::KeyEvent integKeyEvent( keyEvent.GetKeyName(), keyEvent.GetLogicalKey(), keyEvent.GetKeyString(), keyEvent.GetKeyCode(), keyEvent.GetKeyModifier(), keyEvent.GetTime(), static_cast< Integration::KeyEvent::State >( keyEvent.GetState() ), keyEvent.GetCompose(), keyEvent.GetDeviceName(), keyEvent.GetDeviceClass(), keyEvent.GetDeviceSubclass() ); std::string key = integKeyEvent.logicalKey; - std::string compose = keyEvent.GetCompose(); - std::string deviceName = keyEvent.GetDeviceName(); + std::string compose = integKeyEvent.compose; + std::string deviceName = integKeyEvent.deviceName; // We're consuming key up event so we have to pass to InputMethodContext so that it can parse it as well. Ecore_IMF_Event_Key_Up ecoreKeyUpEvent; - ecoreKeyUpEvent.keyname = keyEvent.keyPressedName.c_str(); + ecoreKeyUpEvent.keyname = integKeyEvent.keyName.c_str(); ecoreKeyUpEvent.key = key.c_str(); - ecoreKeyUpEvent.string = keyEvent.keyPressed.c_str(); + ecoreKeyUpEvent.string = integKeyEvent.keyString.c_str(); ecoreKeyUpEvent.compose = compose.c_str(); - ecoreKeyUpEvent.timestamp = keyEvent.time; - ecoreKeyUpEvent.modifiers = EcoreInputModifierToEcoreIMFModifier( keyEvent.keyModifier ); - ecoreKeyUpEvent.locks = EcoreInputModifierToEcoreIMFLock( keyEvent.keyModifier ); + ecoreKeyUpEvent.timestamp = integKeyEvent.time; + ecoreKeyUpEvent.modifiers = EcoreInputModifierToEcoreIMFModifier( integKeyEvent.keyModifier ); + ecoreKeyUpEvent.locks = EcoreInputModifierToEcoreIMFLock( integKeyEvent.keyModifier ); ecoreKeyUpEvent.dev_name = deviceName.c_str(); - ecoreKeyUpEvent.dev_class = static_cast ( keyEvent.GetDeviceClass() );//ECORE_IMF_DEVICE_CLASS_KEYBOARD; - ecoreKeyUpEvent.dev_subclass = static_cast ( keyEvent.GetDeviceSubclass() );//ECORE_IMF_DEVICE_SUBCLASS_NONE; + ecoreKeyUpEvent.dev_class = static_cast ( integKeyEvent.deviceClass );//ECORE_IMF_DEVICE_CLASS_KEYBOARD; + ecoreKeyUpEvent.dev_subclass = static_cast ( integKeyEvent.deviceSubclass );//ECORE_IMF_DEVICE_SUBCLASS_NONE; #if defined(ECORE_VERSION_MAJOR) && (ECORE_VERSION_MAJOR >= 1) && defined(ECORE_VERSION_MINOR) && (ECORE_VERSION_MINOR >= 22) - ecoreKeyUpEvent.keycode = keyEvent.keyCode; // Ecore_IMF_Event structure has added 'keycode' variable since ecore_imf 1.22 version. + ecoreKeyUpEvent.keycode = integKeyEvent.keyCode; // Ecore_IMF_Event structure has added 'keycode' variable since ecore_imf 1.22 version. #endif // Since ecore_imf 1.22 version eventHandled = ecore_imf_context_filter_event(mIMFContext, diff --git a/dali/internal/input/tizen-wayland/input-method-context-impl-ecore-wl.h b/dali/internal/input/tizen-wayland/input-method-context-impl-ecore-wl.h index 8a37100..acde069 100755 --- a/dali/internal/input/tizen-wayland/input-method-context-impl-ecore-wl.h +++ b/dali/internal/input/tizen-wayland/input-method-context-impl-ecore-wl.h @@ -286,7 +286,7 @@ private: * @param[in] keyEvent The event key to be handled. * @return Whether the event key is handled. */ - bool ProcessEventKeyDown( const KeyEvent& keyEvent ); + bool ProcessEventKeyDown( const Dali::KeyEvent& keyEvent ); /** * @brief Process event key up, whether filter a key to isf. @@ -294,7 +294,7 @@ private: * @param[in] keyEvent The event key to be handled. * @return Whether the event key is handled. */ - bool ProcessEventKeyUp( const KeyEvent& keyEvent ); + bool ProcessEventKeyUp( const Dali::KeyEvent& keyEvent ); /** * Ecore_Event_Modifier enums in Ecore_Input.h do not match Ecore_IMF_Keyboard_Modifiers in Ecore_IMF.h. diff --git a/dali/internal/input/ubuntu-x11/input-method-context-impl-x.cpp b/dali/internal/input/ubuntu-x11/input-method-context-impl-x.cpp index 83e0c22..b375e31 100755 --- a/dali/internal/input/ubuntu-x11/input-method-context-impl-x.cpp +++ b/dali/internal/input/ubuntu-x11/input-method-context-impl-x.cpp @@ -761,14 +761,14 @@ bool InputMethodContextX::FilterEventKey( const Dali::KeyEvent& keyEvent ) bool eventHandled( false ); // If a device key then skip ecore_imf_context_filter_event. - if ( ! KeyLookup::IsDeviceButton( keyEvent.keyPressedName.c_str() )) + if ( ! KeyLookup::IsDeviceButton( keyEvent.GetKeyName().c_str() )) { //check whether it's key down or key up event - if ( keyEvent.state == KeyEvent::Down ) + if ( keyEvent.GetState() == Dali::KeyEvent::Down ) { eventHandled = ProcessEventKeyDown( keyEvent ); } - else if ( keyEvent.state == KeyEvent::Up ) + else if ( keyEvent.GetState() == Dali::KeyEvent::Up ) { eventHandled = ProcessEventKeyUp( keyEvent ); } @@ -857,25 +857,25 @@ void InputMethodContextX::GetPreeditStyle( Dali::InputMethodContext::PreEditAttr attrs = mPreeditAttrs; } -bool InputMethodContextX::ProcessEventKeyDown( const KeyEvent& keyEvent ) +bool InputMethodContextX::ProcessEventKeyDown( const Dali::KeyEvent& keyEvent ) { bool eventHandled( false ); if ( mIMFContext ) { - Integration::KeyEvent integKeyEvent( keyEvent ); + Integration::KeyEvent integKeyEvent( keyEvent.GetKeyName(), keyEvent.GetLogicalKey(), keyEvent.GetKeyString(), keyEvent.GetKeyCode(), keyEvent.GetKeyModifier(), keyEvent.GetTime(), static_cast< Integration::KeyEvent::State >( keyEvent.GetState() ), keyEvent.GetCompose(), keyEvent.GetDeviceName(), keyEvent.GetDeviceClass(), keyEvent.GetDeviceSubclass() ); std::string key = integKeyEvent.logicalKey; - std::string compose = keyEvent.GetCompose(); + std::string compose = integKeyEvent.compose; // We're consuming key down event so we have to pass to InputMethodContext so that it can parse it as well. Ecore_IMF_Event_Key_Down ecoreKeyDownEvent; - ecoreKeyDownEvent.keyname = keyEvent.keyPressedName.c_str(); + ecoreKeyDownEvent.keyname = integKeyEvent.keyName.c_str(); ecoreKeyDownEvent.key = key.c_str(); - ecoreKeyDownEvent.string = keyEvent.keyPressed.c_str(); + ecoreKeyDownEvent.string = integKeyEvent.keyString.c_str(); ecoreKeyDownEvent.compose = compose.c_str(); - ecoreKeyDownEvent.timestamp = keyEvent.time; - ecoreKeyDownEvent.modifiers = EcoreInputModifierToEcoreIMFModifier( keyEvent.keyModifier ); - ecoreKeyDownEvent.locks = EcoreInputModifierToEcoreIMFLock( keyEvent.keyModifier ); + ecoreKeyDownEvent.timestamp = integKeyEvent.time; + ecoreKeyDownEvent.modifiers = EcoreInputModifierToEcoreIMFModifier( integKeyEvent.keyModifier ); + ecoreKeyDownEvent.locks = EcoreInputModifierToEcoreIMFLock( integKeyEvent.keyModifier ); #if defined(ECORE_VERSION_MAJOR) && (ECORE_VERSION_MAJOR >= 1) && defined(ECORE_VERSION_MINOR) #if (ECORE_VERSION_MINOR >= 14) @@ -884,15 +884,15 @@ bool InputMethodContextX::ProcessEventKeyDown( const KeyEvent& keyEvent ) ecoreKeyDownEvent.dev_subclass = ECORE_IMF_DEVICE_SUBCLASS_NONE; #endif // Since ecore_imf 1.14 version #if (ECORE_VERSION_MINOR >= 22) - ecoreKeyDownEvent.keycode = keyEvent.keyCode; + ecoreKeyDownEvent.keycode = integKeyEvent.keyCode; #endif // Since ecore_imf 1.22 version #endif // Since ecore_imf Version 1 // If the device is IME and the focused key is the direction keys, then we should send a key event to move a key cursor. - if ((keyEvent.GetDeviceName() == "ime") && ((!strncmp(keyEvent.keyPressedName.c_str(), "Left", 4)) || - (!strncmp(keyEvent.keyPressedName.c_str(), "Right", 5)) || - (!strncmp(keyEvent.keyPressedName.c_str(), "Up", 2)) || - (!strncmp(keyEvent.keyPressedName.c_str(), "Down", 4)))) + if ((integKeyEvent.deviceName == "ime") && ((!strncmp(integKeyEvent.keyName.c_str(), "Left", 4)) || + (!strncmp(integKeyEvent.keyName.c_str(), "Right", 5)) || + (!strncmp(integKeyEvent.keyName.c_str(), "Up", 2)) || + (!strncmp(integKeyEvent.keyName.c_str(), "Down", 4)))) { eventHandled = 0; } @@ -906,9 +906,9 @@ bool InputMethodContextX::ProcessEventKeyDown( const KeyEvent& keyEvent ) // If the event has not been handled by InputMethodContext then check if we should reset our IMFcontext if (!eventHandled) { - if (!strcmp(keyEvent.keyPressedName.c_str(), "Escape") || - !strcmp(keyEvent.keyPressedName.c_str(), "Return") || - !strcmp(keyEvent.keyPressedName.c_str(), "KP_Enter")) + if (!strcmp(integKeyEvent.keyName.c_str(), "Escape") || + !strcmp(integKeyEvent.keyName.c_str(), "Return") || + !strcmp(integKeyEvent.keyName.c_str(), "KP_Enter")) { ecore_imf_context_reset(mIMFContext); } @@ -917,31 +917,32 @@ bool InputMethodContextX::ProcessEventKeyDown( const KeyEvent& keyEvent ) return eventHandled; } -bool InputMethodContextX::ProcessEventKeyUp( const KeyEvent& keyEvent ) +bool InputMethodContextX::ProcessEventKeyUp( const Dali::KeyEvent& keyEvent ) { bool eventHandled( false ); if( mIMFContext ) { - Integration::KeyEvent integKeyEvent( keyEvent ); + Integration::KeyEvent integKeyEvent( keyEvent.GetKeyName(), keyEvent.GetLogicalKey(), keyEvent.GetKeyString(), keyEvent.GetKeyCode(), keyEvent.GetKeyModifier(), keyEvent.GetTime(), static_cast< Integration::KeyEvent::State >( keyEvent.GetState() ), keyEvent.GetCompose(), keyEvent.GetDeviceName(), keyEvent.GetDeviceClass(), keyEvent.GetDeviceSubclass() ); + std::string key = integKeyEvent.logicalKey; - std::string compose = keyEvent.GetCompose(); + std::string compose = integKeyEvent.compose; // We're consuming key up event so we have to pass to InputMethodContext so that it can parse it as well. Ecore_IMF_Event_Key_Up ecoreKeyUpEvent; - ecoreKeyUpEvent.keyname = keyEvent.keyPressedName.c_str(); + ecoreKeyUpEvent.keyname = integKeyEvent.keyName.c_str(); ecoreKeyUpEvent.key = key.c_str(); - ecoreKeyUpEvent.string = keyEvent.keyPressed.c_str(); + ecoreKeyUpEvent.string = integKeyEvent.keyString.c_str(); ecoreKeyUpEvent.compose = compose.c_str(); - ecoreKeyUpEvent.timestamp = keyEvent.time; - ecoreKeyUpEvent.modifiers = EcoreInputModifierToEcoreIMFModifier( keyEvent.keyModifier ); - ecoreKeyUpEvent.locks = EcoreInputModifierToEcoreIMFLock( keyEvent.keyModifier ); + ecoreKeyUpEvent.timestamp = integKeyEvent.time; + ecoreKeyUpEvent.modifiers = EcoreInputModifierToEcoreIMFModifier( integKeyEvent.keyModifier ); + ecoreKeyUpEvent.locks = EcoreInputModifierToEcoreIMFLock( integKeyEvent.keyModifier ); #if defined(ECORE_VERSION_MAJOR) && (ECORE_VERSION_MAJOR >= 1) && defined(ECORE_VERSION_MINOR) #if (ECORE_VERSION_MINOR >= 14) ecoreKeyUpEvent.dev_name = ""; #endif // Since ecore_imf 1.14 version #if (ECORE_VERSION_MINOR >= 22) - ecoreKeyUpEvent.keycode = keyEvent.keyCode; + ecoreKeyUpEvent.keycode = integKeyEvent.keyCode; #endif // Since ecore_imf 1.22 version #endif // Since ecore_imf Version 1 diff --git a/dali/internal/input/ubuntu-x11/input-method-context-impl-x.h b/dali/internal/input/ubuntu-x11/input-method-context-impl-x.h index e707386..9dbfaca 100755 --- a/dali/internal/input/ubuntu-x11/input-method-context-impl-x.h +++ b/dali/internal/input/ubuntu-x11/input-method-context-impl-x.h @@ -2,7 +2,7 @@ #define DALI_INTERNAL_INPUT_METHOD_CONTEXT_IMPL_X_H /* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -292,7 +292,7 @@ private: * @param[in] keyEvent The event key to be handled. * @return Whether the event key is handled. */ - bool ProcessEventKeyDown( const KeyEvent& keyEvent ); + bool ProcessEventKeyDown( const Dali::KeyEvent& keyEvent ); /** * @brief Process event key up, whether filter a key to isf. @@ -300,7 +300,7 @@ private: * @param[in] keyEvent The event key to be handled. * @return Whether the event key is handled. */ - bool ProcessEventKeyUp( const KeyEvent& keyEvent ); + bool ProcessEventKeyUp( const Dali::KeyEvent& keyEvent ); /** * Ecore_Event_Modifier enums in Ecore_Input.h do not match Ecore_IMF_Keyboard_Modifiers in Ecore_IMF.h. diff --git a/dali/internal/input/windows/input-method-context-impl-win.cpp b/dali/internal/input/windows/input-method-context-impl-win.cpp index f3deb99..b15c0dd 100755 --- a/dali/internal/input/windows/input-method-context-impl-win.cpp +++ b/dali/internal/input/windows/input-method-context-impl-win.cpp @@ -339,14 +339,14 @@ bool InputMethodContextWin::FilterEventKey( const Dali::KeyEvent& keyEvent ) { bool eventHandled( false ); - if ( ! KeyLookup::IsDeviceButton( keyEvent.keyPressedName.c_str() )) + if ( ! KeyLookup::IsDeviceButton( keyEvent.GetKeyName().c_str() )) { //check whether it's key down or key up event - if ( keyEvent.state == KeyEvent::Down ) + if ( keyEvent.state == Dali::KeyEvent::Down ) { eventHandled = ProcessEventKeyDown( keyEvent ); } - else if ( keyEvent.state == KeyEvent::Up ) + else if ( keyEvent.state == Dali::KeyEvent::Up ) { eventHandled = ProcessEventKeyUp( keyEvent ); } diff --git a/dali/public-api/adaptor-framework/window.h b/dali/public-api/adaptor-framework/window.h index ccb484e..0437cbc 100644 --- a/dali/public-api/adaptor-framework/window.h +++ b/dali/public-api/adaptor-framework/window.h @@ -57,7 +57,7 @@ class Actor; class Layer; class RenderTaskList; class TouchEvent; -struct KeyEvent; +class KeyEvent; /** * @brief The window class is used internally for drawing. -- 2.7.4