Bug 16318

Summary: Auto-repeat of backspack does not work in us(colemak) layout
Product: xorg Reporter: Tomas Carnecky <tom>
Component: Input/evdevAssignee: Peter Hutterer <peter.hutterer>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Output of requested command. none

Description Tomas Carnecky 2008-06-12 00:52:05 UTC
Colemak has mapped capslock to backspace. But when I press and hold down capslock it won't auto-repeat backspace. I only see this with xorg hotplugging. When I disable hald and so stop hotplugging, and instead configure the keyboard layout in xorg.conf then the capslock works correctly.
Comment 1 Sergey V. Udaltsov 2008-06-12 00:56:39 UTC
Would you please do "xkbcomp :0 -xkb out.xkb" twice - once with hotplug, once without it - and attach resulting files?
Comment 2 Tomas Carnecky 2008-06-12 01:17:09 UTC
Argh, sorry. It does not work with a static configuration either. Also, both out.xkb files are identical.
Comment 3 Tomas Carnecky 2008-06-12 01:18:15 UTC
Created attachment 17072 [details]
Output of requested command.
Comment 4 Sergey V. Udaltsov 2008-06-12 13:38:00 UTC
I can reproduce it. Yes, your configuration looks right. Even changing 

type= "FOUR_LEVEL",
symbols[Group1]= [       BackSpace,       BackSpace,       BackSpace,       BackSpace ]

to

symbols[Group1]= [       BackSpace ]

does not help. May be it is something in the driver...
Comment 5 Peter Hutterer 2008-06-22 06:15:29 UTC
(In reply to comment #4)
> does not help. May be it is something in the driver...

it's not in the driver, the caps lock key doesn't seem to repeat in hardware, and xkb is required to autorepeat. The autorepeat flag isn't set for the key though hence why it doesn't do anything.  Setting the flag manually in gdb causes autorepeat to work fine.

So the question is - what is the magic xkb flag to set the autorepeat behaviour for a given key?
Comment 6 Peter Hutterer 2008-06-29 04:32:42 UTC
On Sun, Jun 22, 2008 at 06:15:30AM -0700, bugzilla-daemon@freedesktop.org wrote:
> So the question is - what is the magic xkb flag to set the autorepeat behaviour
> for a given key?

btw. "xset r 66" fixes the issue here, but I still don't know how to get that
into the keyboard layout by default.
Comment 7 Tomas Carnecky 2008-06-29 06:13:47 UTC
(In reply to comment #6)
> btw. "xset r 66" fixes the issue here, but I still don't know how to get that
> into the keyboard layout by default.

That doesn't work here. Still no autorepeat.

Comment 8 Peter Hutterer 2008-10-01 22:51:46 UTC
I was wrong. CapsLock repeat is stopped in the driver, PostKbdEvent() to be precise. Reassigning to evdev.
Comment 9 Sergey V. Udaltsov 2010-05-03 05:26:58 UTC
(In reply to comment #8)
> I was wrong. CapsLock repeat is stopped in the driver, PostKbdEvent() to be
> precise. Reassigning to evdev.

http://cgit.freedesktop.org/xorg/driver/xf86-input-evdev/tree/src/evdev.c?id=1f641d75edba7394201c1c53938215bae696791b#n261

Either KEY_CAPSLOCK should be removed from that condition - or #ifdef should be changed. Do not know what is right though.
Comment 10 Peter Hutterer 2010-05-03 14:47:02 UTC
(In reply to comment #9)
> http://cgit.freedesktop.org/xorg/driver/xf86-input-evdev/tree/src/evdev.c?id=1f641d75edba7394201c1c53938215bae696791b#n261
> 
> Either KEY_CAPSLOCK should be removed from that condition - or #ifdef should be
> changed. Do not know what is right though.

if you look at the #if condition, that's only for servers 1.5. 1.6 and later discard _all_ repeat events from the kernel because we soft-repeat them in the server. so the problem here is in the server (XKB somewhere).
Comment 11 Peter Hutterer 2011-02-10 15:37:57 UTC
commit 64237697994871adfcf4905b5784e75cd7281579
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Jan 13 12:20:38 2011 +1000

    xkb: after making changes to the xkb ctrls, copy them back into kbdfeed.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.