Cannot create xkb layout - Possible bug and regression in xkbcomp or xkb?

cheater cheater cheater00 at gmail.com
Wed Dec 5 15:01:09 PST 2012


> I'd mark this as solved

Ah, that's where shameless cross-posting gets you. This was supposed
to only go to the Ubuntu forums!

Take care

On Thu, Dec 6, 2012 at 12:00 AM, cheater cheater <cheater00 at gmail.com> wrote:
> I figured it out. Kind of out of desperation, I just googled for
> "stackoverflow xkb" and started reading everything. I came across two
> questions, one that mentioned using modifier_map, and another that
> mentioned using xkbcomp :0.0 to get a dump of the final layout that's
> loaded. I had to do the following:
>
> 1. set the group 1 explicitly, otherwise the keys only got overridden
> on group 2.
>
>
>     // Make the lower-right corner of the k400/k400r saner.
>     key <RCTL> {
>         type="TWO_LEVEL",
>         symbols[Group1]=[ Alt_R, Meta_R ]
>     };
>     key <UP>   {
>         symbols[Group1]= [         Shift_R ],
>         symbols[Group2]= [         Shift_R ]
>        };
>     key <DOWN> {
>         symbols[Group1]= [       Control_R ],
>         symbols[Group2]= [           Alt_R ]
>     };
>     key <RGHT> {
>         symbols[Group1]= [       Control_R ],
>         symbols[Group2]= [           Alt_R ]
>     };
>
>     // Make the left-over left arrow cursor key a meta key.
>     // Apparently, if there's only one meta key, you set it to Meta_L.
>     key <LEFT> {
>         type[Group1]="ONE_LEVEL",
>         symbols[Group1]= [        ISO_Level3_Shift ]
>     };
>
>
> 2. use modifier_map
>
>
>     modifier_map Control { <DOWN> };
>     modifier_map Control { <RGHT> };
>     modifier_map Shift { <UP> };
>     modifier_map Mod1 { <RCTL> };
>     modifier_map Mod1 { <RALT> };
>     modifier_map Mod5 { ISO_Level3_Shift };
>
>
> and 3. delete the other layouts that were loaded. Crazily enough, they
> modified the layout, even if they weren't selected! so no matter what
> i did, the up arrow's group1 was always set to Up. This is some sort
> of bug.
>
> Hope this helps someone. I'd mark this as solved, but I'm not sure
> how. Maybe one of the moderators can do that if they come across this
> thread.
>
> Thanks!
>
> On Wed, Dec 5, 2012 at 7:44 PM, cheater cheater <cheater00 at gmail.com> wrote:
>> By the way, here's the related section of dumpkeys:
>>
>>
>>
>> keycode 103 = Up
>>     alt    keycode 103 = KeyboardSignal
>>     alt    shiftl    keycode 103 = KeyboardSignal
>>     alt    shiftr    keycode 103 = KeyboardSignal
>>     alt    shiftl    shiftr    keycode 103 = KeyboardSignal
>>     alt    ctrll    keycode 103 = KeyboardSignal
>>     alt    shiftl    ctrll    keycode 103 = KeyboardSignal
>>     alt    shiftr    ctrll    keycode 103 = KeyboardSignal
>>     alt    shiftl    shiftr    ctrll    keycode 103 = KeyboardSignal
>> keycode 104 = Prior
>>     shift    keycode 104 = Scroll_Backward
>>     shift    shiftl    keycode 104 = Scroll_Backward
>>     shift    shiftr    keycode 104 = Scroll_Backward
>>     shift    shiftl    shiftr    keycode 104 = Scroll_Backward
>>     shift    ctrll    keycode 104 = Scroll_Backward
>>     shift    shiftl    ctrll    keycode 104 = Scroll_Backward
>>     shift    shiftr    ctrll    keycode 104 = Scroll_Backward
>>     shift    shiftl    shiftr    ctrll    keycode 104 = Scroll_Backward
>> keycode 105 = Left
>>     alt    keycode 105 = Decr_Console
>>     alt    shiftl    keycode 105 = Decr_Console
>>     alt    shiftr    keycode 105 = Decr_Console
>>     alt    shiftl    shiftr    keycode 105 = Decr_Console
>>     alt    ctrll    keycode 105 = Decr_Console
>>     alt    shiftl    ctrll    keycode 105 = Decr_Console
>>     alt    shiftr    ctrll    keycode 105 = Decr_Console
>>     alt    shiftl    shiftr    ctrll    keycode 105 = Decr_Console
>> keycode 106 = Right
>>     alt    keycode 106 = Incr_Console
>>     alt    shiftl    keycode 106 = Incr_Console
>>     alt    shiftr    keycode 106 = Incr_Console
>>     alt    shiftl    shiftr    keycode 106 = Incr_Console
>>     alt    ctrll    keycode 106 = Incr_Console
>>     alt    shiftl    ctrll    keycode 106 = Incr_Console
>>     alt    shiftr    ctrll    keycode 106 = Incr_Console
>>     alt    shiftl    shiftr    ctrll    keycode 106 = Incr_Console
>> keycode 107 = Select
>> keycode 108 = Down
>>
>>
>>
>> Note that the arrows are still what they were. They're clearly
>> remapped in the layout:
>> https://bitbucket.org/cheater/us_split_logitech_k400/commits/5f777c7dfe1a4b176b3409c71030ad8f
>>
>> On the other hand, the same layout remaps the k key to type h and that shows:
>>
>>
>>
>> keycode  37 = +h
>>     shift    keycode  37 = +H
>>     control    keycode  37 = BackSpace
>>     shift    control    keycode  37 = BackSpace
>>     altgr    control    keycode  37 = BackSpace
>>     shift    altgr    control    keycode  37 = BackSpace
>>     alt    keycode  37 = Meta_h
>>     shift    alt    keycode  37 = Meta_H
>>     altgr    alt    keycode  37 = Meta_h
>>     shift    altgr    alt    keycode  37 = Meta_h
>>     control    alt    keycode  37 = Meta_BackSpace
>>     shift    control    alt    keycode  37 = Meta_BackSpace
>>     altgr    control    alt    keycode  37 = Meta_BackSpace
>>     shift    altgr    control    alt    keycode  37 = Meta_BackSpace
>>
>>
>>
>> although after this line it starts showing incorrect values. So it
>> seems like this is a deeper bug. Can anyone comment on that? Is there
>> anyone in specific I could contact about the xkb codebase?
>>
>> The listing continues with some erroneous and some correct values:
>>
>>
>>
>>     shiftl    keycode  37 = +k
>>     shift    shiftl    keycode  37 = +K
>>     altgr    shiftl    keycode  37 = +k
>>     shift    altgr    shiftl    keycode  37 = +k
>>     control    shiftl    keycode  37 = Control_k
>>     shift    control    shiftl    keycode  37 = Control_k
>>     altgr    control    shiftl    keycode  37 = Control_k
>>     shift    altgr    control    shiftl    keycode  37 = Control_k
>>     alt    shiftl    keycode  37 = Meta_k
>>     shift    alt    shiftl    keycode  37 = Meta_K
>>     altgr    alt    shiftl    keycode  37 = Meta_k
>>     shift    altgr    alt    shiftl    keycode  37 = Meta_k
>>     control    alt    shiftl    keycode  37 = Meta_Control_k
>>     shift    control    alt    shiftl    keycode  37 = Meta_Control_k
>>     altgr    control    alt    shiftl    keycode  37 = Meta_Control_k
>>     shift    altgr    control    alt    shiftl    keycode  37 = Meta_Control_k
>>     shiftr    keycode  37 = +k
>>     shift    shiftr    keycode  37 = +K
>>     altgr    shiftr    keycode  37 = +k
>>     shift    altgr    shiftr    keycode  37 = +k
>>     control    shiftr    keycode  37 = Control_k
>>     shift    control    shiftr    keycode  37 = Control_k
>>     altgr    control    shiftr    keycode  37 = Control_k
>>     shift    altgr    control    shiftr    keycode  37 = Control_k
>>     alt    shiftr    keycode  37 = Meta_k
>>     shift    alt    shiftr    keycode  37 = Meta_K
>>     altgr    alt    shiftr    keycode  37 = Meta_k
>>     shift    altgr    alt    shiftr    keycode  37 = Meta_k
>>     control    alt    shiftr    keycode  37 = Meta_Control_k
>>     shift    control    alt    shiftr    keycode  37 = Meta_Control_k
>>     altgr    control    alt    shiftr    keycode  37 = Meta_Control_k
>>     shift    altgr    control    alt    shiftr    keycode  37 = Meta_Control_k
>>     shift    shiftl    shiftr    keycode  37 = +H
>>     control    shiftl    shiftr    keycode  37 = BackSpace
>>     shift    control    shiftl    shiftr    keycode  37 = BackSpace
>>     altgr    control    shiftl    shiftr    keycode  37 = BackSpace
>>     shift    altgr    control    shiftl    shiftr    keycode  37 =
>> BackSpace
>>     alt    shiftl    shiftr    keycode  37 = Meta_h
>>     shift    alt    shiftl    shiftr    keycode  37 = Meta_H
>>     altgr    alt    shiftl    shiftr    keycode  37 = Meta_h
>>     shift    altgr    alt    shiftl    shiftr    keycode  37 = Meta_h
>>     control    alt    shiftl    shiftr    keycode  37 = Meta_BackSpace
>>     shift    control    alt    shiftl    shiftr    keycode  37 = Meta_BackSpace
>>     altgr    control    alt    shiftl    shiftr    keycode  37 = Meta_BackSpace
>>     shift    altgr    control    alt    shiftl    shiftr    keycode
>> 37 = Meta_BackSpace
>>     ctrll    keycode  37 = +H
>>     altgr    ctrll    keycode  37 = +H
>>     shift    altgr    ctrll    keycode  37 = +H
>>     control    ctrll    keycode  37 = BackSpace
>>     shift    control    ctrll    keycode  37 = BackSpace
>>     altgr    control    ctrll    keycode  37 = BackSpace
>>     shift    altgr    control    ctrll    keycode  37 = BackSpace
>>     alt    ctrll    keycode  37 = Meta_h
>>     shift    alt    ctrll    keycode  37 = Meta_H
>>     altgr    alt    ctrll    keycode  37 = Meta_h
>>     shift    altgr    alt    ctrll    keycode  37 = Meta_h
>>     control    alt    ctrll    keycode  37 = Meta_BackSpace
>>     shift    control    alt    ctrll    keycode  37 = Meta_BackSpace
>>     altgr    control    alt    ctrll    keycode  37 = Meta_BackSpace
>>     shift    altgr    control    alt    ctrll    keycode  37 = Meta_BackSpace
>>     shiftl    ctrll    keycode  37 = +K
>>     shift    shiftl    ctrll    keycode  37 = +k
>>     altgr    shiftl    ctrll    keycode  37 = +K
>>     shift    altgr    shiftl    ctrll    keycode  37 = +K
>>     control    shiftl    ctrll    keycode  37 = Control_k
>>     shift    control    shiftl    ctrll    keycode  37 = Control_k
>>     altgr    control    shiftl    ctrll    keycode  37 = Control_k
>>     shift    altgr    control    shiftl    ctrll    keycode  37 =
>> Control_k
>>     alt    shiftl    ctrll    keycode  37 = Meta_k
>>     shift    alt    shiftl    ctrll    keycode  37 = Meta_K
>>     altgr    alt    shiftl    ctrll    keycode  37 = Meta_k
>>     shift    altgr    alt    shiftl    ctrll    keycode  37 = Meta_k
>>     control    alt    shiftl    ctrll    keycode  37 = Meta_Control_k
>>     shift    control    alt    shiftl    ctrll    keycode  37 = Meta_Control_k
>>     altgr    control    alt    shiftl    ctrll    keycode  37 = Meta_Control_k
>>     shift    altgr    control    alt    shiftl    ctrll    keycode  37
>> = Meta_Control_k
>>     shiftr    ctrll    keycode  37 = +K
>>     shift    shiftr    ctrll    keycode  37 = +k
>>     altgr    shiftr    ctrll    keycode  37 = +K
>>     shift    altgr    shiftr    ctrll    keycode  37 = +K
>>     control    shiftr    ctrll    keycode  37 = Control_k
>>     shift    control    shiftr    ctrll    keycode  37 = Control_k
>>     altgr    control    shiftr    ctrll    keycode  37 = Control_k
>>     shift    altgr    control    shiftr    ctrll    keycode  37 =
>> Control_k
>>     alt    shiftr    ctrll    keycode  37 = Meta_k
>>     shift    alt    shiftr    ctrll    keycode  37 = Meta_K
>>     altgr    alt    shiftr    ctrll    keycode  37 = Meta_k
>>     shift    altgr    alt    shiftr    ctrll    keycode  37 = Meta_k
>>     control    alt    shiftr    ctrll    keycode  37 = Meta_Control_k
>>     shift    control    alt    shiftr    ctrll    keycode  37 = Meta_Control_k
>>     altgr    control    alt    shiftr    ctrll    keycode  37 = Meta_Control_k
>>     shift    altgr    control    alt    shiftr    ctrll    keycode  37
>> = Meta_Control_k
>>     shiftl    shiftr    ctrll    keycode  37 = +H
>>     altgr    shiftl    shiftr    ctrll    keycode  37 = +H
>>     shift    altgr    shiftl    shiftr    ctrll    keycode  37 = +H
>>     control    shiftl    shiftr    ctrll    keycode  37 = BackSpace
>>     shift    control    shiftl    shiftr    ctrll    keycode  37 =
>> BackSpace
>>     altgr    control    shiftl    shiftr    ctrll    keycode  37 =
>> BackSpace
>>     shift    altgr    control    shiftl    shiftr    ctrll    keycode
>> 37 = BackSpace
>>     alt    shiftl    shiftr    ctrll    keycode  37 = Meta_h
>>     shift    alt    shiftl    shiftr    ctrll    keycode  37 = Meta_H
>>     altgr    alt    shiftl    shiftr    ctrll    keycode  37 = Meta_h
>>     shift    altgr    alt    shiftl    shiftr    ctrll    keycode  37
>> = Meta_h
>>     control    alt    shiftl    shiftr    ctrll    keycode  37 = Meta_BackSpace
>>     shift    control    alt    shiftl    shiftr    ctrll    keycode
>> 37 = Meta_BackSpace
>>     altgr    control    alt    shiftl    shiftr    ctrll    keycode
>> 37 = Meta_BackSpace
>>     shift    altgr    control    alt    shiftl    shiftr    ctrll
>> keycode  37 = Meta_BackSpace
>>
>>
>> On Wed, Dec 5, 2012 at 1:45 PM, cheater cheater <cheater00 at gmail.com> wrote:
>>> Hi,
>>> I have recently tried updating a layout I have, called us_split. In
>>> its basic form it's like the us qwerty layout with a small mod. This
>>> is to make a specific keyboard (Logitech k400) more usable. The idea
>>> is to make the up arrow into right shift, down and right arrows into
>>> right ctrl, right control into right alt, and left arrow into left
>>> meta. It makes much more sense when you see the keyboard:
>>>
>>> http://i.imgur.com/jkfQY.jpg
>>>
>>> I call the new fork us_split_k400. It can be found at:
>>> https://bitbucket.org/cheater/us_split_logitech_k400
>>>
>>> the original can be found at:
>>> https://bitbucket.org/cheater/us_split
>>>
>>> the specific diff can be found at:
>>>
>>> https://bitbucket.org/cheater/us_split_logitech_k400/commits/5f777c7dfe1a4b176b3409c71030ad8f
>>>
>>> I have found the following issues:
>>>
>>> 1. Even without the changes above, my layout has regressed. In
>>> specific: us_split hard-wires caps to esc. That is, if you press the
>>> button to the left of A, you get esc. This isn't recognized anymore. I
>>> believe on this pc I have first installed the layout while running a
>>> fairly early beta of ubuntu 12.04. I have just reinstalled it (using
>>> python install.py) and the esc key to the left of A is simply gone. On
>>> the other hand, mapping compose onto the original esc key to the left
>>> of F1 works as it did before.
>>>
>>> 2. in us_split_k400, the arrows and right control don't bear
>>> remapping. In specific, only setting the right arrow to control_r
>>> worked. The rest didn't do anything. However, the layout worked
>>> correctly in a tty after I did sudo loadkeys us_split_k400.
>>>
>>> 3. The caps-as-esc key developed VERY weird behaviour: it was esc AND
>>> caps at the same time. So if you pressed it, you got esc, but the
>>> status of caps lock changed as well. Again, this worked under
>>> teletype.
>>>
>>>
>>> I would appreciate any and all tips. This is driving me nuts, and I
>>> think it might be representative of a deeper problem. I have no idea
>>> where to start, but if anyone would like me to perform any tests I'd
>>> love to help out.
>>>
>>> Thanks


More information about the xorg mailing list