Resolve diverged APIs to keep string input working

This commit is contained in:
David Boddie
2019-08-05 17:37:08 +00:00
parent a19bbdc870
commit 2c355ec966

View File

@ -104,12 +104,14 @@ send_fake_key (SeatEmitter *emitter,
static void static void
send_fake_text (SeatEmitter *emitter, send_fake_text (SeatEmitter *emitter,
EekKeyboard *keyboard, EekKeyboard *keyboard,
gchar *text, const gchar *text,
uint32_t timestamp) uint32_t timestamp)
{ {
while (*text) { gchar *ptr = (gchar *)text;
while (*ptr) {
gchar buf[7]; gchar buf[7];
gunichar c = g_utf8_get_char(text); gunichar c = g_utf8_get_char(ptr);
int n = g_unichar_to_utf8(c, buf); int n = g_unichar_to_utf8(c, buf);
*(buf + n) = 0; *(buf + n) = 0;
@ -117,7 +119,6 @@ send_fake_text (SeatEmitter *emitter,
if (key_press) { if (key_press) {
EekKey *key = key_press->key; EekKey *key = key_press->key;
EekSymbolMatrix *matrix = eek_key_get_symbol_matrix(key);
send_fake_key (emitter, key_press->level, eek_key_get_keycode(key), send_fake_key (emitter, key_press->level, eek_key_get_keycode(key),
(key_press->level % 2) == 1 ? EEK_SHIFT_MASK : 0, (key_press->level % 2) == 1 ? EEK_SHIFT_MASK : 0,
@ -128,7 +129,7 @@ send_fake_text (SeatEmitter *emitter,
0, timestamp); 0, timestamp);
} }
text = g_utf8_find_next_char(text, NULL); ptr = g_utf8_find_next_char(ptr, NULL);
} }
} }
@ -173,11 +174,11 @@ emit_key_activated (EekboardContextService *manager,
emitter.keymap = keyboard->keymap; emitter.keymap = keyboard->keymap;
update_modifier_info (&emitter); update_modifier_info (&emitter);
guint level = eek_element_get_level(EEK_ELEMENT(keyboard)); const gchar *text = (gchar *)eek_text_get_text(symbol);
if (text && pressed) {
if (EEK_IS_TEXT(symbol) && pressed) {
gchar *text = (gchar *)eek_text_get_text(EEK_TEXT(symbol));
send_fake_text (&emitter, keyboard, text, timestamp); send_fake_text (&emitter, keyboard, text, timestamp);
} else } else {
guint level = eek_element_get_level(EEK_ELEMENT(keyboard));
send_fake_key (&emitter, level, keycode, modifiers, pressed, timestamp); send_fake_key (&emitter, level, keycode, modifiers, pressed, timestamp);
}
} }