| @@ -521,6 +521,9 @@ static int x11_get_event(caca_display_t *dp, caca_privevent_t *ev) | |||||
| dp->drv.p->event_mask, &xevent) == True) | dp->drv.p->event_mask, &xevent) == True) | ||||
| { | { | ||||
| KeySym keysym; | KeySym keysym; | ||||
| #if defined X_HAVE_UTF8_STRING | |||||
| int len; | |||||
| #endif | |||||
| /* Expose event */ | /* Expose event */ | ||||
| if(xevent.type == Expose) | if(xevent.type == Expose) | ||||
| @@ -602,15 +605,16 @@ static int x11_get_event(caca_display_t *dp, caca_privevent_t *ev) | |||||
| continue; | continue; | ||||
| #if defined X_HAVE_UTF8_STRING | #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); | ev->data.key.utf32 = caca_utf8_to_utf32(ev->data.key.utf8, NULL); | ||||
| if(ev->data.key.utf32 <= 0xff) | if(ev->data.key.utf32 <= 0xff) | ||||
| { | |||||
| ev->data.key.ch = ev->data.key.utf32; | ev->data.key.ch = ev->data.key.utf32; | ||||
| } else { | |||||
| else | |||||
| ev->data.key.ch = 0; | ev->data.key.ch = 0; | ||||
| } | |||||
| return 1; | return 1; | ||||
| } | } | ||||
| #endif | #endif | ||||