Resolve diverged APIs to keep string input working
This commit is contained in:
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user