Stop decoding GTK event strings when using native input
* src/gtkutil.c (xg_widget_key_press_event_cb): Stop decoding event strings.
This commit is contained in:
parent
0b0a8dab68
commit
73e4335c58
1 changed files with 9 additions and 33 deletions
|
@ -6123,9 +6123,6 @@ xg_widget_key_press_event_cb (GtkWidget *widget, GdkEvent *event,
|
|||
union buffered_input_event inev;
|
||||
guint keysym = event->key.keyval;
|
||||
unsigned int xstate;
|
||||
gunichar *cb;
|
||||
ptrdiff_t i;
|
||||
glong len;
|
||||
gunichar uc;
|
||||
|
||||
FOR_EACH_FRAME (tail, tem)
|
||||
|
@ -6235,40 +6232,19 @@ xg_widget_key_press_event_cb (GtkWidget *widget, GdkEvent *event,
|
|||
goto done;
|
||||
}
|
||||
|
||||
if (event->key.string)
|
||||
uc = gdk_keyval_to_unicode (keysym);
|
||||
|
||||
if (uc)
|
||||
{
|
||||
cb = g_utf8_to_ucs4_fast (event->key.string, -1, &len);
|
||||
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
inev.ie.kind = (SINGLE_BYTE_CHAR_P (cb[i])
|
||||
? ASCII_KEYSTROKE_EVENT
|
||||
: MULTIBYTE_CHAR_KEYSTROKE_EVENT);
|
||||
inev.ie.code = cb[i];
|
||||
|
||||
kbd_buffer_store_buffered_event (&inev, &xg_pending_quit_event);
|
||||
}
|
||||
|
||||
g_free (cb);
|
||||
|
||||
inev.ie.kind = NO_EVENT;
|
||||
inev.ie.kind = (SINGLE_BYTE_CHAR_P (uc)
|
||||
? ASCII_KEYSTROKE_EVENT
|
||||
: MULTIBYTE_CHAR_KEYSTROKE_EVENT);
|
||||
inev.ie.code = uc;
|
||||
}
|
||||
else
|
||||
{
|
||||
uc = gdk_keyval_to_unicode (keysym);
|
||||
|
||||
if (uc)
|
||||
{
|
||||
inev.ie.kind = (SINGLE_BYTE_CHAR_P (uc)
|
||||
? ASCII_KEYSTROKE_EVENT
|
||||
: MULTIBYTE_CHAR_KEYSTROKE_EVENT);
|
||||
inev.ie.code = uc;
|
||||
}
|
||||
else
|
||||
{
|
||||
inev.ie.kind = NON_ASCII_KEYSTROKE_EVENT;
|
||||
inev.ie.code = keysym;
|
||||
}
|
||||
inev.ie.kind = NON_ASCII_KEYSTROKE_EVENT;
|
||||
inev.ie.code = keysym;
|
||||
}
|
||||
|
||||
done:
|
||||
|
|
Loading…
Add table
Reference in a new issue