map keys and handle key events on Android and OS X
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include "rtt.h"
|
||||
#include "bezier.h"
|
||||
#include "canvas.h"
|
||||
#include "event.h"
|
||||
#include <tinyxml2.h>
|
||||
#include <yoga/Yoga.h>
|
||||
|
||||
@@ -85,54 +86,6 @@ enum class kShapeType : uint16_t
|
||||
Slice9 = const_hash("slice9"),
|
||||
};
|
||||
|
||||
enum class kEventResult : uint8_t
|
||||
{
|
||||
Consumed,
|
||||
Available,
|
||||
};
|
||||
|
||||
enum class kEventCategory : uint8_t
|
||||
{
|
||||
MouseEvent,
|
||||
KeyEvent,
|
||||
};
|
||||
enum class kEventType : uint8_t
|
||||
{
|
||||
MouseDownL,
|
||||
MouseDownR,
|
||||
MouseMove,
|
||||
MouseUpL,
|
||||
MouseUpR,
|
||||
MouseEnter,
|
||||
MouseLeave,
|
||||
MouseScroll,
|
||||
KeyDown,
|
||||
KeyUp,
|
||||
KeyChar,
|
||||
};
|
||||
|
||||
class Event
|
||||
{
|
||||
public:
|
||||
kEventCategory m_cat;
|
||||
kEventType m_type;
|
||||
};
|
||||
|
||||
class MouseEvent : public Event
|
||||
{
|
||||
public:
|
||||
MouseEvent() { m_cat = kEventCategory::MouseEvent; }
|
||||
glm::vec2 m_pos;
|
||||
float m_scroll_delta;
|
||||
};
|
||||
|
||||
class KeyEvent : public Event
|
||||
{
|
||||
public:
|
||||
KeyEvent() { m_cat = kEventCategory::KeyEvent; }
|
||||
int m_key;
|
||||
};
|
||||
|
||||
class LayoutManager
|
||||
{
|
||||
std::map<uint16_t, std::unique_ptr<class Node>> m_layouts;
|
||||
@@ -754,7 +707,7 @@ public:
|
||||
// }
|
||||
break;
|
||||
case kEventType::KeyChar:
|
||||
if (ke->m_key >= 32 && ke->m_key < 32+96)
|
||||
if (ke->m_char >= 32 && ke->m_char < (32+96))
|
||||
{
|
||||
m_string += (char)ke->m_key;
|
||||
m_text->set_text(m_string.c_str());
|
||||
@@ -2030,11 +1983,15 @@ public:
|
||||
m_zoom_canvas += me->m_scroll_delta * 0.1f;
|
||||
break;
|
||||
case kEventType::KeyDown:
|
||||
if (ke->m_key == 'E')
|
||||
if (ke->m_key == kKey::KeyE)
|
||||
m_canvas->m_erase = true;
|
||||
if (ke->m_key == kKey::AndroidVolumeUp)
|
||||
m_zoom_canvas *= 0.9f;
|
||||
if (ke->m_key == kKey::AndroidVolumeDown)
|
||||
m_zoom_canvas *= 1.1f;
|
||||
break;
|
||||
case kEventType::KeyUp:
|
||||
if (ke->m_key == 'E')
|
||||
if (ke->m_key == kKey::KeyE)
|
||||
m_canvas->m_erase = false;
|
||||
default:
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user