-
Notifications
You must be signed in to change notification settings - Fork 41
Description
NX uses xfree86 rules by default. If the client side is Linux and using evdev rules and model the nxagent activates a keycode mapping (see nxagentConvertKeycode() in hw/nxagent/Keyboard.c) to map evdev keycodes back to xfree86 keycodes. I suppose this was necessary years ago because Xorg did not ship evdev support in the xkb database and NX was using xfree86. Starting 2009 (see https://www.freedesktop.org/wiki/Software/XKeyboardConfig/) evdev was included in XKeyboardConfig. So I think nxagent should try to use it instead of doing the keycode conversion and use the current solution as a fallback only.
Generally I'd like to have nxagent clone the settings from the client side automatically whenever possible (on initial connect and on reconnect).
Currently the -keyboard/-kbtype parameter accepts a value of query which was implemented in nx-2.0.0-22. The changelog describes it like this:
- Implented handling of value "query" for nxagentKbtype. This value
is passed by the NX client for MacOSX. If value of nxagentKbtype is
"query" or NULL we init keyboard by core protocol functions reading
the keyvoard mapping of the X server. The property _XKB_RULES_NAMES
is always set on the root window with default values of model and
layout.
I think this behaviour is desirable anywhere and should be extended to work on other OSes, too. And it should be the default.