Subject: Mac Os X keyboard bug: NumLockMask always set, keyboard unusable

From: benjamin milde <[email-masked]>
Date: Wed, 30 Jan 2013 19:35:14 +0100

Package: *
Version: various versions tried out, see below

* Buggy package name not known. I suspect a problem with nx-libraries.

------------------------------------------------------------------------------------------------
I can supply further information for the mac os x keyboard bug in x2go. I
think I had this problem already ~2 years ago, when I first tried out x2go.
All pressed client keys produce wrong key events on the host. Its a real
show-stopper since it makes x2go basically totally unusable for me and
others.

See also this post on the x2go mailing list
https://lists.berlios.de/pipermail/x2go-user/2012-November/001123.html
There, Michael had the same problem I observe with:

Server Side: Ubuntu 12.04 with x2goserver 3.1.1.6-0~610~precise1 from the
stable PPA
Client Side: Mac OS X 10.6.8 with x2goclient 3.99.2.1 from the x2go website
Keyboard Layout: en_us everywhere, and in x2goclient I checked "Keep
current keyboard Settings"

I'm using Mac OS X 10.8.2, XQuarz 2.7.4 and also x2goclient 3.99.2.1. I
also tried changing x2goserver from stable PPA to 4.1.0 from git. Also
toggling "Keep current keyboard Settings" does not make a difference.
Server is also a ubuntu machine, but could cross-check this with a Debian
install (and see if the same error occurs there).

The problem is that keystate changes while it is transferred to the host:

MAC:   state 0x0, keycode 26 (keysym 0x31, 1), same_screen YES,
LINUX: state 0x10, keycode 26 (keysym 0x65, e), same_screen YES,

This makes the keyboard unusable, since every client keycode gives a wrong
keysym on the host. The mask 0x10 is set for all key events sent to the
host, every time.

Looking around in X's headers I found:

defined in <X.h>
/* Key masks. Used as modifiers to GrabButton and GrabKey, results of
QueryPointer,
   state in various key-, mouse-, and button-related events. */
#define ShiftMask               (1<<0)
#define LockMask                (1<<1)
#define ControlMask             (1<<2)
#define Mod1Mask                (1<<3)
#define Mod2Mask                (1<<4)
#define Mod3Mask                (1<<5)
#define Mod4Mask                (1<<6)
#define Mod5Mask                (1<<7)

So keystate 0x10 means the keyevent has Mod2Mask set.

defined in <xorg/atKeynames.h> (but don't think it's a standard X11 header)
#define AltMask         Mod1Mask
#define NumLockMask     Mod2Mask
#define AltLangMask     Mod3Mask
#define KanaMask        Mod4Mask
#define ScrollLockMask  Mod5Mask

Which appears to be a NumLockMask. This makes sense since 'dfg' gives the
numbers '124', i.e. indicating that I have some sort of Numpad overlay in
the middle of the keyboard on the host.

For what is worth, a found similar bug report with no machines remote
desktop.
http://apple.stackexchange.com/questions/31691/no-machine-remote-desktop-issue

 "For instance, the Delete key was now comma, all the letters were
transposed, general chaos. "

I can also confirm that backspace is comma, so this seems to be the same
NumLockMask problem. Every key is garbled, but not randomly.

The same problems apparently appears here in a bug report in XQuartz. They
think its not their fault:

http://xquartz.macosforge.org/trac/ticket/471

Quote:
"From my experience using NX in Linux, NX is badly designed. It sends
keycodes instead of KeySyms to the remote NX session.
 This causes the remote session to behave badly, unless you install the
local keyboard map into the remote X session.
It is a problem with NX and not the X server. However, that should have no
effect on the local keyboard mapping. "

If someone could point me in the right direction, I would be glad to help.
And as I have no need for the Mod2Mask, as a temporary fix, I would be fine
to ignore this mask on the server side and hard code xkey->state &= ~(1u <<
4); somewhere.

Has someone an idea how to further investigate this issue? Is there someone
who can report a working keyboard with Mac Os X as client?

---

From: Ricardo Díaz Martín <[email-masked]>
Date: Sat, 2 Feb 2013 20:44:19 +0000

Hi Benjamin,

I can confirm the same keyboard behaviour.

I found a solution for this issue by myself. Install kde desktop in the
server and start kde session with a clean home folder for the user and the
keyborad works! It only works with kde desktop.

If you have logged on before with a user in gnome desktop you have to
rename user's home folder, login this wat in kde and then move files and
folder your really need.

Hope it helps you.

Regards,
Ricardo

2013/1/30 benjamin milde <[email-masked]>

> And as I have no need for the Mod2Mask, as a temporary fix, I would be
> fine to ignore this mask on the server side and hard code xkey->state &=
> ~(1u << 4); somewhere.
>
> Has someone an idea how to further investigate this issue? Is there
> someone who can report a working keyboard with Mac Os X as client?
>
>
> _______________________________________________
> X2Go-Dev mailing list
> [email-masked]
> https://lists.berlios.de/mailman/listinfo/x2go-dev
>