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: Michael Stapelberg <stapelberg@google.com>
This commit is contained in:
parent
5684d436e2
commit
4f95d87d66
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue