Commit 8fd25cf8 authored by Ulrich Sibiller's avatar Ulrich Sibiller

add option keyconv=(auto|on|off)

Adds a new option called "keyconv" to control keycode conversion. Before commit 2f2ade61 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.
parent 4b71309c
......@@ -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
......
......@@ -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)
{
......
......@@ -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()
......
......@@ -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;
......
......@@ -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
......
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