map keys and handle key events on Android and OS X

This commit is contained in:
2017-04-17 19:35:48 +02:00
parent 54082591f1
commit 45cf8c9168
11 changed files with 595 additions and 68 deletions

View File

@@ -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;