Nach dem Aufsetzen eines FreeNX-Servers stand ich vor dem Problem, dass im Client viele Tasten zu falschen Resultaten führten – insbesondere wurde die Taste AltGr als Enter interpretiert – keine Chance auf Sonderzeichen.

Der Fehler lässt sich dadurch beheben, dass man zunächst die Keymap des Client-Systems exportiert und diese anschließend (automatisiert) in der NX-Session lädt und die falschen Zuordnungen überschreibt.

Der erste Schritt besteht im Speichern der Keymap des Clients. Dazu führt man in einem XTerm den folgenden Befehl aus:

xmodmap -pke > nxclient.xmodmap

Dieser speichert die Keymap des Clients in der Datei nxclient.xmodmap; diese Datei muss man nun auf den NX-Server transferieren und sie bspw. in das Home-Verzeichnis des Benutzers legt. In einer geöffneten NX-Session kann man anschließend mit dem folgenden Befehl die falsche Keymap ersetzen:

xmodmap ~/nxclient.xmodmap

Natürlich lässt sich dies auch (eingeschränkt) automatisieren. Die Variable $NXSESSIONID wird bei einer Remote-Verbindung durch NX gesetzt. Überprüft man in seiner .profile, ob sie gesetzt ist, kann man die Keymap automatisch ersetzen:

if [ -n "$NXSESSIONID" ]; then
 /usr/bin/xmodmap ~/nxclient.xmodmap
fi

Dies funktioniert natürlich nur, wenn alle verbindenden Clients die gleiche Keymap nutzen.