diff --git a/caca/driver/x11.c b/caca/driver/x11.c index 822d33a..7c690db 100644 --- a/caca/driver/x11.c +++ b/caca/driver/x11.c @@ -521,6 +521,9 @@ static int x11_get_event(caca_display_t *dp, caca_privevent_t *ev) dp->drv.p->event_mask, &xevent) == True) { KeySym keysym; +#if defined X_HAVE_UTF8_STRING + int len; +#endif /* Expose event */ if(xevent.type == Expose) @@ -602,15 +605,16 @@ static int x11_get_event(caca_display_t *dp, caca_privevent_t *ev) continue; #if defined X_HAVE_UTF8_STRING - if(Xutf8LookupString(dp->drv.p->ic, &xevent.xkey, ev->data.key.utf8, 8, NULL, NULL)) + len = Xutf8LookupString(dp->drv.p->ic, &xevent.xkey, + ev->data.key.utf8, 8, NULL, NULL); + ev->data.key.utf8[len] = 0; + if (len) { ev->data.key.utf32 = caca_utf8_to_utf32(ev->data.key.utf8, NULL); if(ev->data.key.utf32 <= 0xff) - { ev->data.key.ch = ev->data.key.utf32; - } else { + else ev->data.key.ch = 0; - } return 1; } #endif