Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 225945 - xorg keyboard repeat rate battle between xset and kbdrate
Summary: xorg keyboard repeat rate battle between xset and kbdrate
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: High minor with 1 vote (vote)
Assignee: Gentoo X packagers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-06-11 17:22 UTC by nachiketa sahoo
Modified: 2009-06-24 06:49 UTC (History)
6 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description nachiketa sahoo 2008-06-11 17:22:20 UTC
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
Comment 1 Tarmo Tänav 2008-09-09 12:23:39 UTC
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.
Comment 2 Sascha Hlusiak 2008-10-11 22:17:53 UTC
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...
Comment 3 Nicholas Vinen 2009-04-10 09:21:57 UTC
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.
Comment 4 Rémi Cardona (RETIRED) gentoo-dev 2009-04-10 09:32:19 UTC
(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.
Comment 5 Sascha Hlusiak 2009-04-10 09:41:39 UTC
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
Comment 6 Rémi Cardona (RETIRED) gentoo-dev 2009-04-10 09:50:00 UTC
(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 :)
Comment 7 Sascha Hlusiak 2009-04-10 10:02:58 UTC
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.
Comment 8 Rémi Cardona (RETIRED) gentoo-dev 2009-06-24 06:49:36 UTC
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