|
@@ -144,8 +144,17 @@ DBus_MessageFilter(DBusConnection *conn, DBusMessage *msg, void *data)
|
|
|
dbus->message_iter_init(msg, &iter);
|
|
|
dbus->message_iter_get_basic(&iter, &text);
|
|
|
|
|
|
- if (text)
|
|
|
- SDL_SendKeyboardText(text);
|
|
|
+ if (text && *text) {
|
|
|
+ char buf[SDL_TEXTINPUTEVENT_TEXT_SIZE];
|
|
|
+ size_t text_bytes = SDL_strlen(text), i = 0;
|
|
|
+
|
|
|
+ while (i < text_bytes) {
|
|
|
+ size_t sz = SDL_utf8strlcpy(buf, text+i, sizeof(buf));
|
|
|
+ SDL_SendKeyboardText(buf);
|
|
|
+
|
|
|
+ i += sz;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
return DBUS_HANDLER_RESULT_HANDLED;
|
|
|
}
|