Re: Unknown keycode mapping '(null)'.



On Tue, Oct 07, 2014 at 04:17:56PM +0000, Eduardo Juan wrote:
Hi

I have the following problem when accessing the console of a VM.

root openstack1115:~# virt-viewer controller
(virt-viewer:25949): gtk-vnc-WARNING **: Unknown keycode mapping '(null)'.
Please report to gtk-vnc-list gnome org
including the following information:

  - Operating system
  - GDK build
  - X11 Server
  - xprop -root
  - xdpyinfo



The environment is as follows:

I have a Solaris Unix environment.
SunOS xbete1 5.10 Generic_147441-01 i86pc i386 i86pc

From a shell I do "ssh -X" to a server with  Ubuntu.

                I have set the DISPLAY variable to the Solaris environment with
                export DISPLAY=159.107.31.149:21.0

I have created some VMs on the Ubuntu host and the warning appears when I try to connect to the VM's 
console.

The problem is my keymap is quite wrong and it does not allow me to work.

So the situation with VNC and key handling is quite horrible

If you want to know the nasty details you can read

  
https://www.berrange.com/posts/2010/07/04/more-than-you-or-i-ever-wanted-to-know-about-virtual-keyboard-handling/
  
https://www.berrange.com/posts/2010/07/04/a-summary-of-scan-code-key-codes-sets-used-in-the-pc-virtualization-stack/


Basically with standard VNC protocol, the keyboard layout configured
on your local X server, the QEMU process and the guest operating
system must be identical. If they are not identical key handling
will be mangled. 

To solve this we invented an extension to VNC that passes raw hardware
scan codes to the VNC server. With this extension you only need to have
the same layout configured on your X server and guest operating system.
ie we have taken QEMU out of the loop to avoid it screwing things up.

Unfortunately for this extension to work we need to understand what
scancodes your build of GTK + X server is using. We've figured this
out for Xorg based servers, and Windows and OS-X, but it seems that
Solaris has a different X server and we don't have support for that.

So in this case we disable the scancode extension and you get the
plain VNC protocol. Presumably you are not using a US keybord layout,
since you say the keymap handling is broken when this happens.

The only real long term solution is to figure out how scancodes are
reported on Solaris X server and add support to GTK-VNC for this.

root openstack1115:~# xdpyinfo
name of display:    159.107.31.149:21.0
version number:    11.0
vendor string:    Citrix Systems Inc
vendor release number:    60423

If you are comfortable patching & building software, I'd be interested
in what happens if you apply the following patch:

diff --git a/src/vncdisplaykeymap.c b/src/vncdisplaykeymap.c
index 7f11e7c..4823cc6 100644
--- a/src/vncdisplaykeymap.c
+++ b/src/vncdisplaykeymap.c
@@ -186,7 +186,7 @@ const guint16 *vnc_display_keymap_gdk2rfb_table(size_t *maplen)
                       "  - xprop -root\n"
                       "  - xdpyinfo\n",
                       keycodes);
-            return NULL;
+            return keymap_xorgkbd2rfb;
         }
     }
 #endif


This is just a quick hack to try using standard x86 scan codes. If we are
lucky it might work for you. If not we'll need to do more detailed
investigations.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]