Unverified Commit 7f777e01 authored by Mihai Moldovan's avatar Mihai Moldovan

Merge branch 'uli42-pr/nokeyconv' into 3.6.x

parents 2e724702 66046f13
...@@ -1483,6 +1483,25 @@ static void nxagentParseOptions(char *name, char *value) ...@@ -1483,6 +1483,25 @@ static void nxagentParseOptions(char *name, char *value)
return; 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 else
{ {
#ifdef DEBUG #ifdef DEBUG
......
...@@ -475,11 +475,11 @@ static CARD8 nxagentConvertedKeycodes[] = ...@@ -475,11 +475,11 @@ static CARD8 nxagentConvertedKeycodes[] =
/* 255 */ 255 /* 255 */ 255
}; };
static int nxagentKeycodeConversion = 0; static Bool nxagentKeycodeConversion = False;
CARD8 nxagentConvertKeycode(CARD8 k) CARD8 nxagentConvertKeycode(CARD8 k)
{ {
if (nxagentKeycodeConversion != 0) if (nxagentKeycodeConversion)
{ {
#ifdef DEBUG #ifdef DEBUG
if (k != nxagentConvertedKeycodes[k]) if (k != nxagentConvertedKeycodes[k])
...@@ -1821,7 +1821,20 @@ void nxagentKeycodeConversionSetup(void) ...@@ -1821,7 +1821,20 @@ void nxagentKeycodeConversionSetup(void)
char *doptions = NULL; char *doptions = NULL;
unsigned int drulesLen; unsigned int drulesLen;
nxagentKeycodeConversion = 0; 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, drulesLen = nxagentXkbGetNames(&drules, &dmodel, &dlayout,
&dvariant, &doptions); &dvariant, &doptions);
...@@ -1894,7 +1907,12 @@ void nxagentKeycodeConversionSetup(void) ...@@ -1894,7 +1907,12 @@ void nxagentKeycodeConversionSetup(void)
"Activating KeyCode conversion.\n"); "Activating KeyCode conversion.\n");
#endif #endif
nxagentKeycodeConversion = 1; 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) if (drules != NULL)
...@@ -1923,7 +1941,7 @@ void nxagentResetKeycodeConversion(void) ...@@ -1923,7 +1941,7 @@ void nxagentResetKeycodeConversion(void)
"WARNING! Failed to query XKB extension.\n"); "WARNING! Failed to query XKB extension.\n");
#endif #endif
nxagentKeycodeConversion = 0; nxagentKeycodeConversion = False;
} }
} }
......
...@@ -168,6 +168,8 @@ void nxagentInitOptions() ...@@ -168,6 +168,8 @@ void nxagentInitOptions()
nxagentOptions.SleepTime = DEFAULT_SLEEP_TIME; nxagentOptions.SleepTime = DEFAULT_SLEEP_TIME;
nxagentOptions.ReconnectTolerance = DEFAULT_TOLERANCE; nxagentOptions.ReconnectTolerance = DEFAULT_TOLERANCE;
nxagentOptions.KeycodeConversion = DEFAULT_KEYCODE_CONVERSION;
} }
/* /*
...@@ -193,6 +195,8 @@ void nxagentResetOptions() ...@@ -193,6 +195,8 @@ void nxagentResetOptions()
nxagentOptions.WMBorderWidth = -1; nxagentOptions.WMBorderWidth = -1;
nxagentOptions.WMTitleHeight = -1; nxagentOptions.WMTitleHeight = -1;
nxagentOptions.KeycodeConversion = DEFAULT_KEYCODE_CONVERSION;
} }
void nxagentSaveOptions() void nxagentSaveOptions()
......
...@@ -78,6 +78,15 @@ typedef enum _ToleranceChecksMode ...@@ -78,6 +78,15 @@ typedef enum _ToleranceChecksMode
#define DEFAULT_TOLERANCE ToleranceChecksStrict #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. * Set of options affecting agent operations.
*/ */
...@@ -431,6 +440,10 @@ typedef struct _AgentOptions ...@@ -431,6 +440,10 @@ typedef struct _AgentOptions
ToleranceChecksMode ReconnectTolerance; ToleranceChecksMode ReconnectTolerance;
/*
* Convert evdev keycodes to pc105.
*/
KeycodeConversionMode KeycodeConversion;
} AgentOptionsRec; } AgentOptionsRec;
typedef AgentOptionsRec *AgentOptionsPtr; typedef AgentOptionsRec *AgentOptionsPtr;
......
...@@ -491,6 +491,19 @@ start or resume a session in fullscreen mode (default: off) ...@@ -491,6 +491,19 @@ start or resume a session in fullscreen mode (default: off)
.B keyboard=<string> .B keyboard=<string>
set remote keyboard layout set remote keyboard layout
.TP 8 .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> .B clipboard=<string>
.BR both | client | server | none .BR both | client | server | none
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment