diff options
author | Ulrich Sibiller <uli42@gmx.de> | 2017-11-19 01:11:05 +0100 |
---|---|---|
committer | Ulrich Sibiller <uli42@gmx.de> | 2017-11-23 15:22:27 +0100 |
commit | 8fd25cf83c057e9d865b672eb3d42e2d362eabd7 (patch) | |
tree | aed11ec731218f67dd34195c25a379713ac251d7 /nx-X11/programs | |
parent | 4b71309c3e727bf1770e8150546060a450246f24 (diff) | |
download | nx-libs-8fd25cf83c057e9d865b672eb3d42e2d362eabd7.tar.gz nx-libs-8fd25cf83c057e9d865b672eb3d42e2d362eabd7.tar.bz2 nx-libs-8fd25cf83c057e9d865b672eb3d42e2d362eabd7.zip |
add option keyconv=(auto|on|off)
Adds a new option called "keyconv" to control keycode conversion.
Before commit 2f2ade61a8823bad012737b2b388dcc168cccbbf keycode
conversion was activated if the client was Linux and client side rules
and/or model was "evdev". The only (and undocumented) way to disable
that was providing a value different from "linux" for the "client"
option (which had no other effect). The mentioned commit removed the
dependency on Linux and so there was no way anymore to disable keycode
conversion.
Diffstat (limited to 'nx-X11/programs')
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Args.c | 19 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 18 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Options.c | 4 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Options.h | 13 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 | 13 |
5 files changed, 67 insertions, 0 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index ea970be02..cccfd40e0 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -1483,6 +1483,25 @@ static void nxagentParseOptions(char *name, char *value) return; } + else if (!strcmp(name, "keyconv")) + { + if (!strcmp(value, "off")) { + nxagentChangeOption(KeycodeConversion, KeycodeConversionOff); + } + else if (!strcmp(value, "on")) { + nxagentChangeOption(KeycodeConversion, KeycodeConversionOn); + } + else if (!strcmp(value, "auto")) { + nxagentChangeOption(KeycodeConversion, KeycodeConversionAuto); + } + else + { + fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'keyconv'.\n", + validateString(value)); + } + + return; + } else { #ifdef DEBUG diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 06977d99d..e92df8762 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -1821,6 +1821,19 @@ void nxagentKeycodeConversionSetup(void) char *doptions = NULL; unsigned int drulesLen; + if (nxagentOption(KeycodeConversion) == KeycodeConversionOff) + { + fprintf(stderr, "Info: Keycode conversion is off\n"); + nxagentKeycodeConversion = False; + return; + } + else if (nxagentOption(KeycodeConversion) == KeycodeConversionOn) + { + fprintf(stderr, "Info: Keycode conversion is on\n"); + nxagentKeycodeConversion = True; + return; + } + nxagentKeycodeConversion = False; drulesLen = nxagentXkbGetNames(&drules, &dmodel, &dlayout, @@ -1894,8 +1907,13 @@ void nxagentKeycodeConversionSetup(void) "Activating KeyCode conversion.\n"); #endif + fprintf(stderr, "Info: Keycode conversion auto-determined as on\n"); nxagentKeycodeConversion = True; } + else + { + fprintf(stderr, "Info: Keycode conversion auto-determined as off\n"); + } if (drules != NULL) { diff --git a/nx-X11/programs/Xserver/hw/nxagent/Options.c b/nx-X11/programs/Xserver/hw/nxagent/Options.c index 978f3ab95..3464fdb10 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Options.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Options.c @@ -168,6 +168,8 @@ void nxagentInitOptions() nxagentOptions.SleepTime = DEFAULT_SLEEP_TIME; nxagentOptions.ReconnectTolerance = DEFAULT_TOLERANCE; + + nxagentOptions.KeycodeConversion = DEFAULT_KEYCODE_CONVERSION; } /* @@ -193,6 +195,8 @@ void nxagentResetOptions() nxagentOptions.WMBorderWidth = -1; nxagentOptions.WMTitleHeight = -1; + + nxagentOptions.KeycodeConversion = DEFAULT_KEYCODE_CONVERSION; } void nxagentSaveOptions() diff --git a/nx-X11/programs/Xserver/hw/nxagent/Options.h b/nx-X11/programs/Xserver/hw/nxagent/Options.h index 20616a90b..95b0642e1 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Options.h +++ b/nx-X11/programs/Xserver/hw/nxagent/Options.h @@ -78,6 +78,15 @@ typedef enum _ToleranceChecksMode #define DEFAULT_TOLERANCE ToleranceChecksStrict +typedef enum _KeycodeConversion +{ + KeycodeConversionOn = 0, + KeycodeConversionOff = 1, + KeycodeConversionAuto = 2 +} KeycodeConversionMode; + +#define DEFAULT_KEYCODE_CONVERSION KeycodeConversionAuto + /* * Set of options affecting agent operations. */ @@ -431,6 +440,10 @@ typedef struct _AgentOptions ToleranceChecksMode ReconnectTolerance; + /* + * Convert evdev keycodes to pc105. + */ + KeycodeConversionMode KeycodeConversion; } AgentOptionsRec; typedef AgentOptionsRec *AgentOptionsPtr; diff --git a/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 b/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 index 43b3381d5..e5393c71e 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 +++ b/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 @@ -491,6 +491,19 @@ start or resume a session in fullscreen mode (default: off) .B keyboard=<string> set remote keyboard layout .TP 8 +.B keyconv=<string> +set keycode conversion mode + +.BR auto | on | off + +by default (\fIauto\fR) \fBnxagent\fR will activate keycode conversion +if it detects an evdev XKEYBOARD setup on the client side (the +standard on linux systems nowadays). Keycode conversion means that +certain keycodes are mapped to make the keyboard appear as an pc105 +model. Using \fIoff\fR this conversion can be suppressed and with +\fIon\fR it will be forced. + +.TP 8 .B clipboard=<string> .BR both | client | server | none |