From: "Marcel Zumstein" Subject: [Qemu-devel] AltGr and dead keys with VNC In VNC mode, my AltGr key (mapped to ISO_Level3_Shift) and the dead keys aren't supported. This patch adds XK_ISO_Level3_Shift (keysym 0xfe03) to the keymap. Furthermore, it adds support for the dead keys, which were for some reason present in the keymaps, but not in vnc_keysym.h. This is relevant for VNC viewers that pass dead keys on to the guest system (e.g. tightvnc does) and don't compose the accented letters themselves. Index: qemu/keymaps/modifiers =================================================================== --- qemu/keymaps/modifiers.orig +++ qemu/keymaps/modifiers @@ -3,6 +3,7 @@ Shift_L 0x2a Alt_R 0xb8 Mode_switch 0xb8 +ISO_Level3_Shift 0xb8 Alt_L 0x38 Control_R 0x9d Index: qemu/vnc_keysym.h =================================================================== --- qemu/vnc_keysym.h.orig +++ qemu/vnc_keysym.h @@ -204,6 +204,7 @@ static const name2keysym_t name2keysym[] {"EuroSign", 0x20ac}, /* XK_EuroSign */ /* modifiers */ +{"ISO_Level3_Shift", 0xfe03}, /* XK_ISO_Level3_Shift */ {"Control_L", 0xffe3}, /* XK_Control_L */ {"Control_R", 0xffe4}, /* XK_Control_R */ {"Alt_L", 0xffe9}, /* XK_Alt_L */ @@ -286,6 +287,27 @@ static const name2keysym_t name2keysym[] {"Pause", 0xff13}, /* XK_Pause */ {"Escape", 0xff1b}, /* XK_Escape */ +/* dead keys */ +{"dead_grave", 0xfe50}, /* XK_dead_grave */ +{"dead_acute", 0xfe51}, /* XK_dead_acute */ +{"dead_circumflex", 0xfe52}, /* XK_dead_circumflex */ +{"dead_tilde", 0xfe53}, /* XK_dead_tilde */ +{"dead_macron", 0xfe54}, /* XK_dead_macron */ +{"dead_breve", 0xfe55}, /* XK_dead_breve */ +{"dead_abovedot", 0xfe56}, /* XK_dead_abovedot */ +{"dead_diaeresis", 0xfe57}, /* XK_dead_diaeresis */ +{"dead_abovering", 0xfe58}, /* XK_dead_abovering */ +{"dead_doubleacute", 0xfe59}, /* XK_dead_doubleacute */ +{"dead_caron", 0xfe5a}, /* XK_dead_caron */ +{"dead_cedilla", 0xfe5b}, /* XK_dead_cedilla */ +{"dead_ogonek", 0xfe5c}, /* XK_dead_ogonek */ +{"dead_iota", 0xfe5d}, /* XK_dead_iota */ +{"dead_voiced_sound", 0xfe5e}, /* XK_dead_voiced_sound */ +{"dead_semivoiced_sound", 0xfe5f}, /* XK_dead_semivoiced_sound */ +{"dead_belowdot", 0xfe60}, /* XK_dead_belowdot */ +{"dead_hook", 0xfe61}, /* XK_dead_hook */ +{"dead_horn", 0xfe62}, /* XK_dead_horn */ + /* localized keys */ {"BackApostrophe", 0xff21}, {"Muhenkan", 0xff22},