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)
goto done;
}
- if (event->key.string)
- {
- 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);
+ uc = gdk_keyval_to_unicode (keysym);
- inev.ie.kind = NO_EVENT;
+ if (uc)
+ {
+ 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: