2 * Copyright (c) 2015 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/public-api/events/key-event.h>
22 #include <dali/devel-api/events/key-event-devel.h>
23 #include <dali/devel-api/common/map-wrapper.h>
30 const unsigned int MODIFIER_SHIFT = 0x1;
31 const unsigned int MODIFIER_CTRL = 0x2;
32 const unsigned int MODIFIER_ALT = 0x4;
33 const int KEY_INVALID_CODE = -1;
37 std::string deviceName;
40 typedef std::map< KeyEvent*, KeyEventImpl*> KeyEventMap;
41 typedef KeyEventMap::const_iterator KeyEventMapIter;
44 KeyEventMap keyEventImplMap;
51 keyCode(KEY_INVALID_CODE),
56 KeyEventImpl* impl = new KeyEventImpl;
57 keyEventImplMap[this] = impl;
60 KeyEvent::KeyEvent(const std::string& keyName, const std::string& keyString, int keyCode, int keyModifier,unsigned long timeStamp, const State& keyState)
61 : keyPressedName(keyName),
62 keyPressed(keyString),
64 keyModifier(keyModifier),
68 KeyEventImpl* impl = new KeyEventImpl;
69 keyEventImplMap[this] = impl;
74 delete keyEventImplMap[this];
75 keyEventImplMap.erase( this );
78 bool KeyEvent::IsShiftModifier() const
80 if ((MODIFIER_SHIFT & keyModifier) == MODIFIER_SHIFT)
88 bool KeyEvent::IsCtrlModifier() const
90 if ((MODIFIER_CTRL & keyModifier) == MODIFIER_CTRL)
98 bool KeyEvent::IsAltModifier() const
100 if ((MODIFIER_ALT & keyModifier) == MODIFIER_ALT)
108 std::string DevelKeyEvent::GetDeviceName( KeyEvent& keyEvent )
110 KeyEventMapIter search;
112 search = keyEventImplMap.find( &keyEvent );
114 std::string result = "";
116 if( search != keyEventImplMap.end())
118 result = search->second->deviceName;
124 void DevelKeyEvent::SetDeviceName( KeyEvent& keyEvent, std::string deviceName )
126 KeyEventMapIter search = keyEventImplMap.find( &keyEvent );
128 if( search != keyEventImplMap.end())
130 search->second->deviceName = deviceName;