diff --git a/ruby/caca-display.c b/ruby/caca-display.c index 8440e33..a3e9878 100644 --- a/ruby/caca-display.c +++ b/ruby/caca-display.c @@ -122,6 +122,7 @@ static VALUE set_mouse2(VALUE self, VALUE visible) static VALUE get_event(VALUE self, VALUE event_mask, VALUE timeout) { + char utf8[8]; caca_event_t ev; VALUE e; @@ -132,42 +133,44 @@ static VALUE get_event(VALUE self, VALUE event_mask, VALUE timeout) return Qnil; } - switch(ev.type) + switch(caca_get_event_type(&ev)) { case CACA_EVENT_KEY_PRESS: + caca_get_event_key_utf8(&ev, utf8); e = rb_funcall(cEventKeyPress, rb_intern("new"), 3, - UINT2NUM(ev.data.key.ch), - ULONG2NUM(ev.data.key.utf32), - rb_str_new(ev.data.key.utf8, 8)); + UINT2NUM(caca_get_event_key_ch(&ev)), + ULONG2NUM(caca_get_event_key_utf32(&ev)), + rb_str_new(utf8, 8)); break; case CACA_EVENT_KEY_RELEASE: + caca_get_event_key_utf8(&ev, utf8); e = rb_funcall(cEventKeyRelease, rb_intern("new"), 3, - UINT2NUM(ev.data.key.ch), - ULONG2NUM(ev.data.key.utf32), - rb_str_new(ev.data.key.utf8, 8)); + UINT2NUM(caca_get_event_key_ch(&ev)), + ULONG2NUM(caca_get_event_key_utf32(&ev)), + rb_str_new(utf8, 8)); break; case CACA_EVENT_MOUSE_PRESS: e = rb_funcall(cEventMousePress, rb_intern("new"), 3, - UINT2NUM(ev.data.mouse.x), - UINT2NUM(ev.data.mouse.y), - UINT2NUM(ev.data.mouse.button)); + UINT2NUM(caca_get_event_mouse_x(&ev)), + UINT2NUM(caca_get_event_mouse_y(&ev)), + UINT2NUM(caca_get_event_mouse_button(&ev))); break; case CACA_EVENT_MOUSE_RELEASE: e = rb_funcall(cEventMouseRelease, rb_intern("new"), 3, - UINT2NUM(ev.data.mouse.x), - UINT2NUM(ev.data.mouse.y), - UINT2NUM(ev.data.mouse.button)); + UINT2NUM(caca_get_event_mouse_x(&ev)), + UINT2NUM(caca_get_event_mouse_y(&ev)), + UINT2NUM(caca_get_event_mouse_button(&ev))); break; case CACA_EVENT_MOUSE_MOTION: e = rb_funcall(cEventMouseMotion, rb_intern("new"), 3, - UINT2NUM(ev.data.mouse.x), - UINT2NUM(ev.data.mouse.y), + UINT2NUM(caca_get_event_mouse_x(&ev)), + UINT2NUM(caca_get_event_mouse_y(&ev)), Qnil); break; case CACA_EVENT_RESIZE: e = rb_funcall(cEventResize, rb_intern("new"), 2, - UINT2NUM(ev.data.resize.w), - UINT2NUM(ev.data.resize.h)); + UINT2NUM(caca_get_event_resize_width(&ev)), + UINT2NUM(caca_get_event_resize_height(&ev))); break; case CACA_EVENT_QUIT: e = rb_funcall(cEventQuit, rb_intern("new"), 0);