From 4b71309c3e727bf1770e8150546060a450246f24 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sun, 19 Nov 2017 01:07:57 +0100 Subject: Keyboard.c: Use booleans for nxagentKeycodeConversion --- nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'nx-X11') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 02b60bef4..06977d99d 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -475,11 +475,11 @@ static CARD8 nxagentConvertedKeycodes[] = /* 255 */ 255 }; -static int nxagentKeycodeConversion = 0; +static int nxagentKeycodeConversion = False; CARD8 nxagentConvertKeycode(CARD8 k) { - if (nxagentKeycodeConversion != 0) + if (nxagentKeycodeConversion) { #ifdef DEBUG if (k != nxagentConvertedKeycodes[k]) @@ -1821,7 +1821,7 @@ void nxagentKeycodeConversionSetup(void) char *doptions = NULL; unsigned int drulesLen; - nxagentKeycodeConversion = 0; + nxagentKeycodeConversion = False; drulesLen = nxagentXkbGetNames(&drules, &dmodel, &dlayout, &dvariant, &doptions); @@ -1894,7 +1894,7 @@ void nxagentKeycodeConversionSetup(void) "Activating KeyCode conversion.\n"); #endif - nxagentKeycodeConversion = 1; + nxagentKeycodeConversion = True; } if (drules != NULL) @@ -1923,7 +1923,7 @@ void nxagentResetKeycodeConversion(void) "WARNING! Failed to query XKB extension.\n"); #endif - nxagentKeycodeConversion = 0; + nxagentKeycodeConversion = False; } } -- cgit v1.2.3 From 8fd25cf83c057e9d865b672eb3d42e2d362eabd7 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sun, 19 Nov 2017 01:11:05 +0100 Subject: 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. --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 19 +++++++++++++++++++ nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 18 ++++++++++++++++++ nx-X11/programs/Xserver/hw/nxagent/Options.c | 4 ++++ nx-X11/programs/Xserver/hw/nxagent/Options.h | 13 +++++++++++++ nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 | 13 +++++++++++++ 5 files changed, 67 insertions(+) (limited to 'nx-X11') 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 @@ -490,6 +490,19 @@ start or resume a session in fullscreen mode (default: off) .TP 8 .B keyboard= set remote keyboard layout +.TP 8 +.B keyconv= +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= -- cgit v1.2.3 From 66046f138cf816d4f0bd7ddd9faac772acb22a97 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Thu, 23 Nov 2017 15:19:02 +0100 Subject: Keyboard.c: make nxagentKeycodeConversion a Boolean --- nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'nx-X11') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index e92df8762..51f57a897 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -475,7 +475,7 @@ static CARD8 nxagentConvertedKeycodes[] = /* 255 */ 255 }; -static int nxagentKeycodeConversion = False; +static Bool nxagentKeycodeConversion = False; CARD8 nxagentConvertKeycode(CARD8 k) { -- cgit v1.2.3