This problem is happening again. The keyboard repeat rate is fast for a little bit, then slows down. I am using xorg-server 1.4.0.90-r3, xorg-x11 7.3 and 2.6.24-gentoo-r8 kernel. Thanks +++ This bug was initially created as a clone of Bug #72856 +++ This is a pretty odd problem, but I've had it on two different gentoo systems now so I think it's a bug. Basically, what you do is this. In your x11-base/xorg-x11-6.8.0-r3 server running on 2.6.9-gentoo-r1, pull up a terminal and set your keyboard rate to 250ms/30cps with the kbdrate command. Then, use xset to set the keyboard rate to something less than 250ms delay and more than 30cps repeat. For this example, I used 180ms/90cps just to demonstrate the problem. so: kbdrate -r 30 -d 250 then: xset r rate 180 90 What happens when you press a key is this: - delay for 180ms - repeat at 90 cps for 70ms - then repeat at 30 cps from then on Interestingly, "xset r rate 1 255", in addition to the expected behavior of making your keyboard useless, doesn't seem to exhibit this behavior. The relevant part of my X config: Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "CoreKeyboard" "true" Option "XkbModel" "pc105" Option "XkbLayout" "us" EndSection This can be worked around by simply using the same settings for xset that you use with kbdrate, but then you are limited to 250ms/30cps, which is too slow by my measure at least. Reproducible: Always Steps to Reproduce: 1. kbdrate -r 30 -d 250 2. xset r rate 180 90 3. press & hold a key Actual Results: - delay for 180ms - repeat at 90 cps for 70ms - then repeat at 30 cps from then on Expected Results: - delay for 180ms - repeat at 90 cps
I have the same problem, but I think it only happens with the evdev driver. Sadly with the new xorg-server-1.5 I can't get the kbd driver to work at all, with or without configuring the event device, it still doesn't recognize keys correctly.
Jup, it's an upstream issue in the xorg-server and (at least) the evdev driver. I don't know if the keyboard driver is affected too, but I'll have a look. The evdev driver does not filter kernel autorepeat events (see src/evdev.c@156), while the xorg-server will soft-autorepeat keys, EXCEPT if rate is set to exactly 25/sec (40ms interval) and delay is set to 660ms (see xorg-server, xkb/ddxCtrls.c@67). If running "xset r rate 660 25", then the soft-autorepeat will automagically stop and only the events set with kbdrate should come through. I'll carry the issue upstream soon...
II just "upgraded" to xorg-server-1.5.3 and this has started happening. It's making my system virtually unusable - kbdrate can't set the rate anywhere near high enough for my needs and it's overriding X's keyboard rate. This didn't happen with xorg-server--1.3.0. What's even more bizarre is that the repeat rate depends on which key I press! Up arrow repeats fast, down arrow repeats slow. That doesn't make any sense to me. I don't understand why Gentoo puts software like this in the stable branch when it's going to break our systems in important ways.
(In reply to comment #2) > I'll carry the issue upstream soon... If you open a bug in FreeDesktop's bugzilla, please paste the url here so we can track the issue. We'd appreciate it :) (In reply to comment #3) > I don't understand why Gentoo puts software like this in the stable branch when > it's going to break our systems in important ways. Thanks for telling us how to do our job, it makes me glow. Try to appreciate all the work we've put into this before making snappy comments.
It's fixed in xorg-server-1.6 by the following commit: http://cgit.freedesktop.org/xorg/xserver/commit/?h=server-1.6-branch&id=ff9b55d8cbc19e0e31a91034e332058acd967cd1 To backport this to xorg-server-1.5 you also have to revert following commit to xf86-input-evdev: http://cgit.freedesktop.org/xorg/driver/xf86-input-evdev/commit/?h=evdev-2.2-branch&id=486bbdc481a6eb337b57a7b85a99267cf2879aae
(In reply to comment #5) > It's fixed in xorg-server-1.6 by the following commit: > > http://cgit.freedesktop.org/xorg/xserver/commit/?h=server-1.6-branch&id=ff9b55d8cbc19e0e31a91034e332058acd967cd1 Ah indeed, thanks for looking into this. > To backport this to xorg-server-1.5 you also have to revert following commit to > xf86-input-evdev: > http://cgit.freedesktop.org/xorg/driver/xf86-input-evdev/commit/?h=evdev-2.2-branch&id=486bbdc481a6eb337b57a7b85a99267cf2879aae Why revert it? The patch seems to handle properly xorg 1.5 and 1.6 (ABI_XINPUT_VERSION foo), the driver just needs to be rebuilt when upgrading to 1.6. Or am I missing something? Thanks again :)
xorg-server-1.5 (ABI_XINPUT_VERSION <=2 ) does not do softrepeat all keys in the server, so the evdev driver has to do it. The patch makes xf86-input-evdev repeat (again) if built against 1.5 server. If we backport the patch against xorg-server-1.6, the server will do softrepeat for all keys while xf86-input-evdev *must not* repeat any keys, which it would with the patch applied. So it needs to be reverted.
xorg-server 1.6 is now unmasked on all arches. As the patch mentioned in comment #5 is now shipped, this bug is now fixed. Closing Thanks