+/**
+ * This Api is called when widget viewer send keyEvent.
+ * In this API, widget framework create a new keyEvent, find the proper widget and send this event.
+ * Finally widget framework receive feedback from widget.
+ */
+#ifdef OVER_TIZEN_VERSION_7
+bool OnKeyEventCallback(const char *id, screen_connector_event_type_e eventType, int keyCode, const char *keyName, long long cls, long long subcls, const char* identifier, long long timestamp, void *userData)
+{
+ Dali::Internal::Adaptor::WidgetApplicationTizen* application = static_cast<Dali::Internal::Adaptor::WidgetApplicationTizen*>(userData);
+
+ // Create new key for widget
+ Dali::KeyEvent::State state = Dali::KeyEvent::DOWN;
+ if(eventType == SCREEN_CONNECTOR_EVENT_TYPE_KEY_DOWN)
+ {
+ state = Dali::KeyEvent::DOWN;
+ }
+ else if(eventType == SCREEN_CONNECTOR_EVENT_TYPE_KEY_UP)
+ {
+ state = Dali::KeyEvent::UP;
+ }
+
+ bool consumed = true;
+ std::string keyEventName = std::string(keyName);
+ Dali::KeyEvent event = Dali::DevelKeyEvent::New(keyEventName, "", "", keyCode, 0, timestamp, state, "", "", Device::Class::NONE, Device::Subclass::NONE);
+
+ if(application)
+ {
+ std::string widgetId = std::string(id);
+ widget_base_instance_h instanceHandle = application->GetWidgetInstanceFromWidgetId(widgetId);
+ if(instanceHandle)
+ {
+ consumed = application->FeedKeyEvent(instanceHandle, event);
+ }
+ }