#define __DALI_KEY_EVENT_H__
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2018 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.
// EXTERNAL INCLUDES
#include <string>
+#include <cstdint> // int32_t
// INTERNAL INCLUDES
#include <dali/public-api/common/dali-common.h>
+#include <dali/public-api/events/device.h>
-namespace Dali DALI_IMPORT_API
+namespace Dali
{
+/**
+ * @addtogroup dali_core_events
+ * @{
+ */
/**
* @brief The key event structure is used to store a key press.
* pressed.
*
* Currently KeyEvent is also being used to relay messages from the
- * IMF keyboard to Core. In future IMF may communicate via its own
+ * IMF(Input Method Framework) keyboard to the internal core. In future IMF may communicate via its own
* module.
+ * @SINCE_1_0.0
*/
-struct KeyEvent
+struct DALI_CORE_API KeyEvent
{
// Enumerations
/**
- * @brief Specifies the state of the key event.
+ * @brief Enumeration for specifying the state of the key event.
+ * @SINCE_1_0.0
*/
enum State
{
- Down, ///< Key down
- Up, ///< Key up
+ Down, ///< Key down @SINCE_1_0.0
+ Up, ///< Key up @SINCE_1_0.0
Last
};
/**
- * @brief Default constructor
+ * @brief Default constructor.
+ * @SINCE_1_0.0
*/
KeyEvent();
/**
* @brief Constructor.
*
- * @param[in] keyName The name of the key pressed or command from the IMF, if later then the some following parameters will be needed.
- * @param[in] keyString A string of input characters or key pressed
- * @param[in] keyCode The unique key code for the key pressed.
- * @param[in] keyModifier The key modifier for special keys like shift and alt
- * @param[in] timeStamp The time (in ms) that the key event occurred.
- * @param[in] keyState The state of the key event.
+ * @SINCE_1_0.0
+ * @param[in] keyName The name of the key pressed or command from the IMF, if later then the some following parameters will be needed
+ * @param[in] keyString A string of input characters or key pressed
+ * @param[in] keyCode The unique key code for the key pressed
+ * @param[in] keyModifier The key modifier for special keys like shift and alt
+ * @param[in] timeStamp The time (in ms) that the key event occurred
+ * @param[in] keyState The state of the key event
+ */
+ KeyEvent(const std::string& keyName, const std::string& keyString, int32_t keyCode, int32_t keyModifier, unsigned long timeStamp, const State& keyState);
+
+ /**
+ * @brief Copy constructor.
+ * @SINCE_1_2.36
+ * @param[in] rhs A reference to the copied handle
+ */
+ KeyEvent( const KeyEvent& rhs );
+
+ /**
+ * @brief Assignment operator.
+ * @SINCE_1_2.36
+ * @param[in] rhs A reference to the copied handle
+ * @return A reference to this
*/
- KeyEvent(const std::string& keyName, const std::string& keyString, int keyCode, int keyModifier, unsigned long timeStamp, const State& keyState);
+ KeyEvent& operator=( const KeyEvent& rhs );
/**
* @brief Destructor.
+ * @SINCE_1_0.0
*/
~KeyEvent();
/**
- * @brief Check to see if Shift key modifier has been supplied.
+ * @brief Checks to see if Shift key modifier has been supplied.
*
- * @return bool true if shift modifier
+ * @SINCE_1_0.0
+ * @return True if shift modifier
*/
bool IsShiftModifier() const;
/**
- * @brief Check to see if Ctrl (control) key modifier has been supplied.
+ * @brief Checks to see if Ctrl (control) key modifier has been supplied.
*
- * @return bool true if ctrl modifier
+ * @SINCE_1_0.0
+ * @return True if ctrl modifier
*/
bool IsCtrlModifier() const;
/**
- * @brief Check to see if Alt key modifier has been supplied.
+ * @brief Checks to see if Alt key modifier has been supplied.
*
- * @return bool true if alt modifier
+ * @SINCE_1_0.0
+ * @return True if alt modifier
*/
bool IsAltModifier() const;
+ /**
+ * @brief Get the key compose string.
+ *
+ * @SINCE_1_3.22
+ * @return The compose string
+ */
+ std::string GetCompose() const;
+
+ /**
+ * @brief Get the device name the key event originated from.
+ *
+ * @SINCE_1_2.60
+ * @return The device name
+ */
+ std::string GetDeviceName() const;
+
+ /**
+ * @brief Get the device class the key event originated from.
+ *
+ * The device class type is classification type of the input device of event received
+ * @SINCE_1_2.60
+ * @return The type of the device class
+ */
+ Device::Class::Type GetDeviceClass() const;
+
+ /**
+ * @brief Get the device subclass the key event originated from.
+ *
+ * The device subclass type is subclassification type of the input device of event received.
+ * @SINCE_1_2.60
+ * @return The type of the device subclass
+ */
+ Device::Subclass::Type GetDeviceSubclass() const;
+
// Data
/**
- * @brief name given to the key pressed.
+ * @brief Name given to the key pressed.
*/
std::string keyPressedName;
/**
* @brief Keycode for the key pressed.
+ *
+ * @remarks We recommend not to use this key code value
+ * directly because its meaning might be changed in the future. Currently, it means a
+ * platform-specific key code. You need to use IsKey() to know what a key event means
+ * instead of direct comparison of key code value.
*/
- int keyCode;
+ int32_t keyCode;
/**
* @brief special keys like shift, alt and control which modify the next key pressed.
*/
- int keyModifier;
+ int32_t keyModifier;
/**
* @brief The time (in ms) that the key event occurred.
};
+/**
+ * @}
+ */
} // namespace Dali
#endif // __DALI_KEY_EVENT_H__