[Bug 19947] xkbcomp-1.0.5: Group width mismatch between key and type
Martin MOKREJŠ
mmokrejs at ribosome.natur.cuni.cz
Mon Feb 23 08:11:24 PST 2009
Hi Peter,
thanks for excellent explanations. More below.
Peter Hutterer wrote:
>> (**) Option "xkb_rules" "evdev"
>> (**) AT Translated Set 2 keyboard: xkb_rules: "evdev"
>> (**) Option "xkb_model" "evdev"
>> (**) AT Translated Set 2 keyboard: xkb_model: "evdev"
>> (**) Option "xkb_layout" "us,cz"
>> (**) AT Translated Set 2 keyboard: xkb_layout: "us,cz"
>> (**) Option "xkb_variant" ",qwerty"
>> (**) AT Translated Set 2 keyboard: xkb_variant: ",qwerty"
>> (**) Option "xkb_options" "grp:alt_shift_togglegrp_led:scrollcaps:shift_nocancel"
>> (**) AT Translated Set 2 keyboard: xkb_options: "grp:alt_shift_togglegrp_led:scrollcaps:shift_nocancel"
>
> this last line is wrong, see below.
>
>> xkb_keymap {
>> xkb_keycodes "evdev+aliases(qwerty)" {
> [...]
>
>> xkb_types "complete" {
> [...]
>
>> xkb_compatibility "complete" {
> [...]
>
>> xkb_symbols "pc+us+cz(qwerty):2+inet(evdev)" {
> [...]
>
> this is what actually is loaded in the server. You see how all your options
> are missing? This is because of a wrong setup (fdi file below).
Until one know how it should look like it is not that clear.
Now I see what had to be there:
(II) config/hal: Adding input device AT Translated Set 2 keyboard
(**) AT Translated Set 2 keyboard: always reports core events
(**) AT Translated Set 2 keyboard: Device: "/dev/input/event4"
(II) AT Translated Set 2 keyboard: Found keys
(II) AT Translated Set 2 keyboard: Configuring as keyboard
(II) XINPUT: Adding extended input device "AT Translated Set 2 keyboard" (type: KEYBOARD)
(**) Option "xkb_rules" "evdev"
(**) Option "xkb_model" "pc105"
(**) Option "xkb_layout" "us,cz"
(**) Option "xkb_variant" ",qwerty"
(**) Option "xkb_options" "grp:alt_shift_toggle,grp_led:scroll,caps:shift_nocancel"
>
>> key <LFSH> { [ Shift_L ] };
>> key <RTSH> { [ Shift_R ] };
>> key <LALT> { [ Alt_L, Meta_L ] };
>> key <RALT> {
>> type[group2]= "ONE_LEVEL",
>> symbols[Group1]= [ Alt_R, Meta_R ],
>> symbols[Group2]= [ ISO_Level3_Shift ]
>> };
>
> here's the details why it doesn't work, the Alt/Shift keys dont have the
> required ISO_Next_Group, ISO_Prev_Group they should have, hence group
> switching doesn't work.
So here is what I have now compared to the former/broken:
# xkbcomp :0 -xkb out.xkb3
# diff -u -w out.xkb out.xkb3
--- out.xkb 2009-02-12 17:54:32.000000000 +0100
+++ root/out.xkb3 2009-02-23 16:56:36.000000000 +0100
@@ -291,7 +291,7 @@
alias <LatM> = <AB07>;
};
-xkb_types "complete" {
+xkb_types "complete+caps(shift_nocancel)" {
virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper;
@@ -309,6 +309,7 @@
modifiers= Shift+Lock;
map[Shift]= Level2;
map[Lock]= Level2;
+ map[Shift+Lock]= Level2;
level_name[Level1]= "Base";
level_name[Level2]= "Caps";
};
@@ -489,10 +490,11 @@
modifiers= Shift+Lock+LevelThree;
map[Shift]= Level2;
map[Lock]= Level2;
+ map[Shift+Lock]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Lock+LevelThree]= Level4;
- map[Shift+Lock+LevelThree]= Level3;
+ map[Shift+Lock+LevelThree]= Level4;
level_name[Level1]= "Base";
level_name[Level2]= "Shift";
level_name[Level3]= "Alt Base";
@@ -502,6 +504,7 @@
modifiers= Shift+Lock+LevelThree;
map[Shift]= Level2;
map[Lock]= Level2;
+ map[Shift+Lock]= Level2;
map[LevelThree]= Level3;
map[Shift+LevelThree]= Level4;
map[Lock+LevelThree]= Level3;
@@ -582,7 +585,7 @@
};
};
-xkb_compatibility "complete" {
+xkb_compatibility "complete+ledscroll(group_lock)" {
virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper;
@@ -1048,8 +1051,7 @@
modifiers= NumLock;
};
indicator "Scroll Lock" {
- whichModState= locked;
- modifiers= ScrollLock;
+ groups= 0xfe;
};
indicator "Shift Lock" {
!allowExplicit;
@@ -1066,7 +1068,7 @@
};
};
-xkb_symbols "pc+us+cz(qwerty):2+inet(evdev)" {
+xkb_symbols "pc+us+cz(qwerty):2+inet(evdev)+group(alt_shift_toggle)" {
name[group1]="USA";
name[group2]="Czechia - qwerty";
@@ -1278,7 +1280,10 @@
symbols[Group1]= [ grave, asciitilde ],
symbols[Group2]= [ semicolon, dead_abovering, grave, asciitilde ]
};
- key <LFSH> { [ Shift_L ] };
+ key <LFSH> {
+ type= "PC_ALT_LEVEL2",
+ symbols[Group1]= [ Shift_L, ISO_Prev_Group ]
+ };
key <BKSL> {
type[group2]= "FOUR_LEVEL",
symbols[Group1]= [ backslash, bar ],
@@ -1341,12 +1346,15 @@
symbols[Group1]= [ slash, question ],
symbols[Group2]= [ minus, underscore, asterisk, dead_abovedot ]
};
- key <RTSH> { [ Shift_R ] };
+ key <RTSH> {
+ type= "PC_ALT_LEVEL2",
+ symbols[Group1]= [ Shift_R, ISO_Next_Group ]
+ };
key <KPMU> {
type= "CTRL+ALT",
symbols[Group1]= [ KP_Multiply, XF86_ClearGrab ]
};
- key <LALT> { [ Alt_L, Meta_L ] };
+ key <LALT> { [ Alt_L, ISO_Prev_Group ] };
key <SPCE> {
type[group2]= "FOUR_LEVEL",
symbols[Group1]= [ space ],
@@ -1446,7 +1454,7 @@
};
key <RALT> {
type[group2]= "ONE_LEVEL",
- symbols[Group1]= [ Alt_R, Meta_R ],
+ symbols[Group1]= [ Alt_R, ISO_Next_Group ],
symbols[Group2]= [ ISO_Level3_Shift ]
};
key <LNFD> { [ Linefeed ] };
@@ -1516,7 +1524,7 @@
key <I177> { [ XF86Phone ] };
key <I179> { [ XF86Tools ] };
key <I180> { [ XF86HomePage ] };
- key <I181> { [ XF86Refresh ] };
+ key <I181> { [ XF86Reload ] };
key <I182> { [ XF86Close ] };
key <I185> { [ XF86ScrollUp ] };
key <I186> { [ XF86ScrollDown ] };
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.mouse">
<merge key="input.x11_driver" type="string">mouse</merge>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
<merge key="input.x11_driver" type="string">evdev</merge>
</match>
</match>
<match key="info.capabilities" contains="input.keyboard">
<merge key="input.x11_driver" type="string">evdev</merge>
<merge key="input.xkb.rules" type="string">xorg</merge>
<merge key="input.xkb.model" type="string">pc105</merge>
<merge key="input.xkb.layout" type="string">us,cz</merge>
<merge key="input.xkb.variant" type="string">,qwerty</merge>
<!-- replace 'strlist' with 'string' on 'input.xkb.options' lines,
see http://bugs.gentoo.org/show_bug.cgi?id=237742#c5 -->
<merge key="input.xkb.options" type="string">grp:alt_shift_toggle,grp_led:scroll,caps:shift_nocancel</merge>
</match>
<match key="info.product" contains="Video Bus">
<remove key="input.x11_driver"/>
<remove key="input.xkb"/>
</match>
</device>
</deviceinfo>
So I am still using the deprecated syntax as mentioned in
http://cgit.freedesktop.org/xorg/xserver/tree/config/x11-input.fdi
It is worth changing? ;-)
> Anyway, this explains your troubles, xkb options need to be separated
> by commas, you're just appending strings (a leftover from what I guess used to
> be your strlist configuration), leading to the string we saw in the log. this
> string doesn't represent a valid option, so nothing happens.
> either append commas, or just do away with the <append> tag and add
> everything in the <merge> line, comma-separated of course.
Why is not hal issuing some error/warning messages that there are not
meaningful lines? So what is the strlist and string difference in respect
to append and merge?
Regarding the "Video Bus" issue I had ... lshal(1) reported:
udi = '/org/freedesktop/Hal/devices/computer_logicaldev_input'
info.addons.singleton = {'hald-addon-input'} (string list)
info.capabilities = {'input', 'input.keys', 'button'} (string list)
info.category = 'input' (string)
info.parent = '/org/freedesktop/Hal/devices/computer' (string)
info.product = 'Video Bus' (string)
info.subsystem = 'input' (string)
info.udi = '/org/freedesktop/Hal/devices/computer_logicaldev_input' (string)
input.device = '/dev/input/event6' (string)
input.product = 'Video Bus' (string)
input.x11_driver = 'evdev' (string)
input.xkb.layout = 'us' (string)
input.xkb.model = 'evdev' (string)
input.xkb.rules = 'base' (string)
input.xkb.variant = '' (string)
linux.device_file = '/dev/input/event6' (string)
linux.hotplug_type = 2 (0x2) (int)
linux.subsystem = 'input' (string)
linux.sysfs_path = '/sys/devices/LNXSYSTM:00/device:00/PNP0A03:00/device:01/LNXVIDEO:00/input/input6/event6' (string)
I though it is weird if a keyboard layout is assigned to a probably
an S-video or VGA output from my laptop. Why is it announcing
'input.keys'?
Thanks,
Martin
More information about the xorg
mailing list