Package: x2goclient Version: 4.0.5.0
This bug affects mac clients only.
Systems:
OSX 10.6.8 + XQuartz 2.7.5 from macports
OSX 10.10.5 + XQuartz 2.7.5 from macports
Hi,
Problem: The keyboard works fine in x2goclient session (if xmodmap is found at hardcoded path "/opt/X11/bin/xmodmap")(see Bugs #487 and #977) only using virtualbox gives a completely garbled keyboard.
Explanation for the virtualbox part: virtualbox on a linux host has to find a mapping from X11 keycodes to scancodes that are to be sent to the guest system. It uses three methods to guess this mapping: "byXKB", "byType" and "byLayout". All three methods look at the keycode to keyname mapping of X11, if method "byXKB" gives a result that matches one of several known keyboard layouts, this result is used. Failing this, the results of the other two methods are checked. This works quite well for
This could be fixed using the x2goclient command line parameter --set-kbd=1 because then x2goserver uses some other way to set up XKB key mappings. This method results in virtualbox getting a good keyname to keycode mapping with XkbGetKeyboard().
I have not seen any problems with other X11 clients using the --set-kbd=1 parameter.
Unfortunately the parameter value for "--set-kbd" is silently overridden for max osx client in onmainwindow.cpp to 0 . I spent some hours of testing and looking at the source code of virtualbox, x2goserver, the nx part of x2goserver and at last found this code in onmainwindow.cpp:
#ifdef Q_OS_DARWIN
usekbd=0;
type="query";
#endif
in two places. I changed it to "usekbd=1" and virtualbox found a perfect keycode to scancode mapping.
As I did not find any problems using this setting, I suggest to use
usekbd=1; type="query";
as default for x2goclient on OSX.
Joerg