diff --git a/cxx/caca++.cpp b/cxx/caca++.cpp index 351c864..93314da 100644 --- a/cxx/caca++.cpp +++ b/cxx/caca++.cpp @@ -22,6 +22,7 @@ #include #include // BUFSIZ +#include // memcpy #include // va_* #include "caca++.h" @@ -484,6 +485,52 @@ int Caca::getEvent(unsigned int g, Event *n, int aa) return caca_get_event(dp, g, n ? &n->e : NULL, aa); } +int Event::caca_get_event_key_ch() +{ + return ((caca_privevent_t *)&e)->data.key.ch; +} + +enum Event::caca_event_type Event::caca_get_event_type() +{ + return (Event::caca_event_type)(((caca_privevent_t *)&e)->type); +} + +uint32_t Event::caca_get_event_key_utf32() +{ + return ((caca_privevent_t *)&e)->data.key.utf32; +} + +int Event::caca_get_event_key_utf8(char *utf8) +{ + memcpy(utf8, ((caca_privevent_t *)&e)->data.key.utf8, 8); + return 0; +} + +int Event::caca_get_event_mouse_button() +{ + return ((caca_privevent_t *)&e)->data.mouse.button; +} + +int Event::caca_get_event_mouse_x() +{ + return ((caca_privevent_t *)&e)->data.mouse.x; +} + +int Event::caca_get_event_mouse_y() +{ + return ((caca_privevent_t *)&e)->data.mouse.y; +} + +int Event::caca_get_event_resize_width() +{ + return ((caca_privevent_t *)&e)->data.resize.w; +} + +int Event::caca_get_event_resize_height() +{ + return ((caca_privevent_t *)&e)->data.resize.h; +} + unsigned int Caca::getMouseX() { return caca_get_mouse_x(dp); diff --git a/cxx/caca++.h b/cxx/caca++.h index 98154ef..18fccac 100644 --- a/cxx/caca++.h +++ b/cxx/caca++.h @@ -22,6 +22,7 @@ #define _CACA_PP_H #include +#include #undef __class #if defined(_WIN32) && defined(__LIBCACA_PP__) @@ -170,6 +171,15 @@ __class Event CACA_EVENT_ANY = 0xffff /**< Bitmask for any event. */ } type; + int caca_get_event_key_ch(); + enum caca_event_type caca_get_event_type(); + uint32_t caca_get_event_key_utf32(); + int caca_get_event_key_utf8(char *utf8); + int caca_get_event_mouse_button(); + int caca_get_event_mouse_x(); + int caca_get_event_mouse_y(); + int caca_get_event_resize_width(); + int caca_get_event_resize_height(); protected: caca_event_t e;