2 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <dali/internal/event/events/key-event-processor.h>
23 #include <sstream> ///< for std::ostringstream
27 #include <dali/integration-api/events/key-event-integ.h>
28 #include <dali/integration-api/trace.h>
29 #include <dali/internal/event/common/scene-impl.h>
30 #include <dali/internal/event/events/key-event-impl.h>
31 #include <dali/public-api/events/key-event.h>
39 DALI_INIT_TRACE_FILTER(gTraceFilter, DALI_TRACE_PERFORMANCE_MARKER, false);
42 const char* KEY_EVENT_STATES[Dali::KeyEvent::State::UP + 1] =
50 KeyEventProcessor::KeyEventProcessor(Scene& scene)
55 KeyEventProcessor::~KeyEventProcessor() = default;
57 void KeyEventProcessor::ProcessKeyEvent(const Integration::KeyEvent& event)
59 KeyEventPtr keyEvent(new KeyEvent(event.keyName, event.logicalKey, event.keyString, event.keyCode, event.keyModifier, event.time, static_cast<Dali::KeyEvent::State>(event.state), event.compose, event.deviceName, event.deviceClass, event.deviceSubclass));
60 Dali::KeyEvent keyEventHandle(keyEvent.Get());
63 if(gTraceFilter && gTraceFilter->IsTraceEnabled())
65 std::ostringstream stream;
66 stream << "[name:" << event.keyName << ", code:" << event.keyCode << ", state:" << KEY_EVENT_STATES[event.state] << ", time:" << event.time << "]";
67 DALI_TRACE_BEGIN_WITH_MESSAGE(gTraceFilter, "DALI_PROCESS_KEY_EVENT", stream.str().c_str());
71 // Emit the key event signal from the scene.
72 bool consumed = mScene.EmitInterceptKeyEventSignal(keyEventHandle);
75 consumed = mScene.EmitKeyEventGeneratedSignal(keyEventHandle);
79 mScene.EmitKeyEventSignal(keyEventHandle);
82 if(gTraceFilter && gTraceFilter->IsTraceEnabled())
84 DALI_TRACE_END(gTraceFilter, "DALI_PROCESS_KEY_EVENT");
89 } // namespace Internal