xserver: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sun Apr 12 23:10:05 UTC 2020


 hw/xfree86/common/xf86Xinput.c |   28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

New commits:
commit 4f95d87d66b6a6e11aa8616c9242e0907ffee66b
Author: Michael Stapelberg <stapelberg at google.com>
Date:   Thu Mar 26 21:53:58 2020 +0100

    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 at google.com>

diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index 07e52bcf7..3cc90c4e9 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -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;
 }
 


More information about the xorg-commit mailing list