After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 569612 - Key repeat rate and delay fail to honor accessibility requirements
Key repeat rate and delay fail to honor accessibility requirements
Status: RESOLVED FIXED
Product: gnome-control-center
Classification: Core
Component: Keyboard
2.25.x
Other All
: Normal normal
: ---
Assigned To: Control-Center Maintainers
Control-Center Maintainers
Depends on:
Blocks:
 
 
Reported: 2009-01-28 23:07 UTC by Willie Walker
Modified: 2011-02-28 14:50 UTC
See Also:
GNOME target: 3.2
GNOME version: ---



Description Willie Walker 2009-01-28 23:07:12 UTC
From http://www.access-board.gov/sec508/standards.htm#Subpart_b, § 1194.23, (k): 

"(3) If key repeat is supported, the delay before repeat shall be adjustable to at least 2 seconds.  Key repeat rate shall be adjustable to 2 seconds per character."

I think this is going to require a change in the gnome-keyboard-properties glade file to extend the repeat delay, but I think we might suffer from a harder issue to do the repeat rate.  From what I can tell, the gconf property for repeat rate (/desktop/gnome/peripherals/keyboard/rate) seems to be an integer value that specifies characters per second.  So, a setting of 0.5 (the equivalent of 2 seconds per character) is not allowed.  XKB, on the other hand, specifies the repeat rate as a repeat interval of ms/key.

So, I dunno.  Is it possible to change the type of /desktop/gnome/peripherals/keyboard/rate to a floating point value?
Comment 1 Willie Walker 2009-01-29 00:05:39 UTC
Sorry, I should add the current ranges appear to be:

Delay range: 100ms to 1.5sec
Rate range: 10 char/sec to 110 char/sec
Comment 2 Jens Granseuer 2009-01-30 17:28:47 UTC
I've upped the delay range to 2 secs. Changing the rate to float should be possible, but I'd need to try to be sure.
Comment 3 Jens Granseuer 2009-01-30 19:02:42 UTC
On second thought, just switching to float wouldn't work because we'd also have to set the adjustment's step size to 0.5 to be able to get there, and such a small step size pretty much makes the slider unusable via keys.
Comment 4 Willie Walker 2009-01-30 19:14:05 UTC
(In reply to comment #3)
> On second thought, just switching to float wouldn't work because we'd also have
> to set the adjustment's step size to 0.5 to be able to get there, and such a
> small step size pretty much makes the slider unusable via keys.

Thanks tons for your work so far.  Much appreciated!

The main thing we need is the ability to get that 2 seconds/char value.  Would it be possible to hit this using the page up/down keys?  It might end up putting you in an odd state (i.e., page down followed by arrowing would result in you going 0.5, 1.5, 2.5., etc.), though.

BTW, regardless of whether the value is float or int, the single step size will still result in the finer granularity needed.  Another option to consider might be some sort of exponential/logarithmic scaling for the slider, but I'm not sure how one would pull that off.

Comment 5 Bastien Nocera 2011-02-28 14:50:58 UTC
(In reply to comment #1)
> Sorry, I should add the current ranges appear to be:
> 
> Delay range: 100ms to 1.5sec

Delay is 100 to 2000 msecs.

> Rate range: 10 char/sec to 110 char/sec

Done, this now ranges from 0.5 char/sec to 50 char/sec.

commit 5af7672349d81539fca31d2e12083d475a5a0850
Author: Bastien Nocera <hadess@hadess.net>
Date:   Mon Feb 28 14:46:03 2011 +0000

    keyboard: Switch repeat rate/speed to be a fraction
    
    Instead of settings the absolute value of the repeat rate in msecs
    through the scale, we set the number of chars per sec, and
    use GSettings' bindings functions to transform those a timeout.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=569612