After upgrade to new stable xorg-server-220.127.116.111-r2 default autorepeat
settings seem to be changed. I've tried to set it to my custom values via hal
<?xml version="1.0" encoding="UTF-8"?>
<!-- Keyboard -->
<match key="info.capabilities" contains="input.keys">
<merge key="input.x11_driver" type="string">evdev</merge>
<merge key="input.x11_options.XkbModel" type="string">evdev</merge>
<merge key="input.x11_options.XkbRules" type="string">base</merge>
<merge key="input.x11_options.XkbLayout" type="string">us,ru</merge>
<merge key="input.x11_options.AutoRepeat" type="string">180 30</merge>
But it doesn't work. All keyboard settings works for me except AutoRepeat one.
If I try to type:
> callisto ~ $ xset r rate 180 30
> Xlib: extension "XFree86-Misc" missing on display ":0.0".
Here is part of Xorg.0.log related to keyboard:
>(II) config/hal: Adding input device AT Translated Set 2 keyboard
>(II) LoadModule: "evdev"
>(II) Loading /usr/lib64/xorg/modules/input//evdev_drv.so
>(II) Module evdev: vendor="X.Org Foundation"
> compiled for 18.104.22.1681, module version = 2.2.5
> Module class: X.Org XInput Driver
> ABI class: X.Org XInput driver, version 4.0
>(**) AT Translated Set 2 keyboard: always reports core events
>(**) AT Translated Set 2 keyboard: Device: "/dev/input/event3"
>(II) AT Translated Set 2 keyboard: Found keys
>(II) AT Translated Set 2 keyboard: Configuring as keyboard
>(II) XINPUT: Adding extended input device "AT Translated Set 2 keyboard" (type: KEYBOARD)
>(**) Option "xkb_rules" "evdev"
>(**) Option "xkb_model" "evdev"
>(**) Option "xkb_layout" "us,ru"
>(**) Option "xkb_options" "ctrl:nocaps,grp:toggle,terminate:ctrl_alt_bksp"
There is nothing about AutoRepeat.
Hal seem to set this option normally:
>callisto ~ $ lshal | grep -i autorepeat
> input.x11_options.AutoRepeat = '180 30' (string)
I'm not running any DE, just x11-wm/awesome, so this should not be interference
with DE's settings.
So it seems like evdev's issue.
Here is initial bug report on gentoo's bugzilla:
see bug 17925 comment 38 for a possible workaround
(In reply to comment #1)
> see bug 17925 comment 38 for a possible workaround
This workaround doesn't work for evdev+hal. Tested with xorg-server 1.7.1 and xf86-input-evdev 2.3.0.
Tested again with xorg-server 1.7.3 and xf86-input-evdev 2.3.1 -- no luck :(
I see this problem too. I set a crazy repeat values:
# lshal | sed -n '/input.product.*Keyboard/,+5p'
input.product = 'Dell Dell USB Keyboard' (string)
input.x11_driver = 'evdev' (string)
input.x11_options.AutoRepeat = '1000 250' (string)
input.xkb.layout = 'us,cz,ru' (string)
input.xkb.model = 'evdev' (string)
... yet the keyboard, when unplugged and re-plugged, has some sort of default
I took a peek in the sources. config/hal.c:device_added doesn't name that
option explicitly (it does so for layout, model, etc.), but it sticks it into
its option array anyway. NewInputDeviceRequest then adds all these options to
then copies this over to InputInfoPtr::config. Then I gave up, `config' is
mentioned in too many places for me to sift through.
That's all on Fedora 12, but has been the case since Fedora 11. Versions of packages that strike me as relevant:
I hope you guys can apply educated guesses to match these to your components and their versions, I have very little idea how X packaging works.
(In particular, the problem is that X doesn't get these settings after the computer wakes up from suspend. I can use xset just fine, but that doesn't apply the setting for new keyboards, and after suspend, all keyboards are essentially considered new.)
(In reply to comment #5)
> ...after the computer wakes up from suspend...
Suspend to ram/wake up doesn't modify keyboard rate on my machine.
this option was only present in the keyboard driver and was removed before the keyboard-1.4.0 release.
this option is simply uninterpreted now. for keyboard repeat settings, you need the session to set it for you, we now completely rely on the server for repeat keys, not on the driver hacks. sorry.
(In reply to comment #7)
> for keyboard repeat settings, you need the session to set it for you, we now
> completely rely on the server for repeat
> keys, not on the driver hacks. sorry.
Ok, so what should I add to xorg.conf or xorg.conf.d/... to set keyboard rate to custom value? My current solution is 'xset r ...' in .xinitrc
(In reply to comment #8)
> Ok, so what should I add to xorg.conf or xorg.conf.d/... to set keyboard rate
> to custom value? My current solution is 'xset r ...' in .xinitrc
there is no xorg.conf option for this anymore, sorry. xset and whatever tools the desktop environment provide are the only option for now.
> this option was only present in the keyboard driver and was removed before the > keyboard-1.4.0 release.
> this option is simply uninterpreted now. for keyboard repeat settings, you need > the session to set it for you, we now completely rely on the server for repeat > keys, not on the driver hacks. sorry.
Hasn't the server access to xorg.conf too? It would be really nice to have this option again if this would be technically possible in the way xorg is programmed. Otherwise I must look for another solution, likely with udev to catch even hotplug events.