Commit 4f95d87d authored by Michael Stapelberg's avatar Michael Stapelberg

Xorg: honor AutoRepeat option

This option was implemented before the drivers were split in ≈2006,
and e.g. XWin still supports it.

With this commit, Xorg regains support, so that the following configuration can
be used to set the repeat rate for all keyboard devices without having to modify
Xorg command-line flags or having to automate xset(1):

Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "de"
        Option "XkbVariant" "neo"
	Option "AutoRepeat" "250 30"
EndSection
Signed-off-by: default avatarMichael Stapelberg <stapelberg@google.com>
parent 5684d436
......@@ -323,6 +323,33 @@ ApplyTransformationMatrix(DeviceIntPtr dev)
PropModeReplace, 9, matrix, FALSE);
}
static void
ApplyAutoRepeat(DeviceIntPtr dev)
{
InputInfoPtr pInfo = (InputInfoPtr) dev->public.devicePrivate;
XkbSrvInfoPtr xkbi;
char *repeatStr;
long delay, rate;
if (!dev->key)
return;
xkbi = dev->key->xkbInfo;
repeatStr = xf86SetStrOption(pInfo->options, "AutoRepeat", NULL);
if (!repeatStr)
return;
if (sscanf(repeatStr, "%ld %ld", &delay, &rate) != 2) {
xf86Msg(X_ERROR, "\"%s\" is not a valid AutoRepeat value\n", repeatStr);
return;
}
xf86Msg(X_CONFIG, "AutoRepeat: %ld %ld\n", delay, rate);
xkbi->desc->ctrls->repeat_delay = delay;
xkbi->desc->ctrls->repeat_interval = rate;
}
/***********************************************************************
*
* xf86ProcessCommonOptions --
......@@ -821,6 +848,7 @@ xf86InputDevicePostInit(DeviceIntPtr dev)
{
ApplyAccelerationSettings(dev);
ApplyTransformationMatrix(dev);
ApplyAutoRepeat(dev);
return Success;
}
......
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