Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.2
xen
altgr_2.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File altgr_2.patch of Package xen
When access domU from Windows VNC client, spanish keyboard altgr key doesn't work. According to log info, we found that the keycodes passed from vncclient to qemu vncserver have something wrong. When altgr and "2" pressed, keycodes vncserver receives are: ALT_R down, CTRL_L down, CTRL_L up, ATL_R up, "2" down, "2" up, ... Since when send "2" down, there is no altgr modifier, the char displayed on screen will be "2" but not "@". To solve this problem, there is another patch applied by upstream which sends an additional altgr modifier before "2" down in the above case. It works well when domU is windows, but on sles10 sp3 domU, sometimes it display "@" and sometimes it still displays "2", especially when press altgr+2 continuously. For the sles10 sp3 domU problem, maybe because there are two many alt_r (same keycode as altgr on "es") up and down events and the domU OS couldn't handle it well. To furtherly solve this problem, I write this patch, when vncserver is "es" and receives a alt_r keysym (this is already abnormal since "es" has no alt_r), then treat the alt_r as alt_l. This can avoid too many altgr keycodes up and down events and make sure the intentionally added altgr keycode can take effect. Signed-off by Chunyan Liu (cyliu@novell.com) Index: xen-4.1.2-testing/tools/ioemu-qemu-xen/vnc.c =================================================================== --- xen-4.1.2-testing.orig/tools/ioemu-qemu-xen/vnc.c +++ xen-4.1.2-testing/tools/ioemu-qemu-xen/vnc.c @@ -1308,6 +1308,9 @@ static void do_key_event(VncState *vs, i shift_keys = vs->modifiers_state[0x2a] | vs->modifiers_state[0x36]; altgr_keys = vs->modifiers_state[0xb8]; + if ( !strcmp(keyboard_layout,"es") && sym == 0xffea ) + sym = 0xffe9; + keycode = keysym2scancode(vs->kbd_layout, sym & 0xFFFF); if (keycode == 0) { fprintf(stderr, "Key lost : keysym=0x%x(%d)\n", sym, sym);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor