Re: [Bug 19947] xkbcomp-1.0.5: Group width mismatch between key and type
Martin MOKREJŠ wrote: Forgot to add that the [alt]+[shift] switch works with the setup I have now. Only I suspect that [shift]+twice pressing [=] on the US keyboard layout followed by pressing [u] should generate ů instead of ˇu. But, the character is anyway mapped over the [;] character of US layout. Is there a way to get a graphical layout of the expected buttons from my installation and some reference layout (gif/jpg/ps or X11 live app)? I see xvkbd but it does not change its output if I switch between the keyboard layouts: $ xvkbd xvkbd: Mode_switch not available as a modifier xvkbd: although ISO_Level3_Shift is used instead, AltGr may not work correctly xvkbd: Mode_switch not available as a modifier xvkbd: although ISO_Level3_Shift is used instead, AltGr may not work correctly xvkbd: Mode_switch not available as a modifier xvkbd: although ISO_Level3_Shift is used instead, AltGr may not work correctly xvkbd: Mode_switch not available as a modifier xvkbd: although ISO_Level3_Shift is used instead, AltGr may not work correctly $ Thanks Martin ___ xorg mailing list xorg@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/xorg
Re: [Bug 19947] xkbcomp-1.0.5: Group width mismatch between key and type
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 { [ Shift_L ] }; >> key { [ Shift_R ] }; >> key { [ Alt_L, Meta_L ] }; >> key { >> 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.0 +0100 +++ root/out.xkb3 2009-02-23 16:56:36.0 +0100 @@ -291,7 +291,7 @@ alias = ; }; -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 { [ Shift_L ] }; +key { +type= "PC_ALT_LEVEL2", +symbols[Group1]= [ Shift_L, ISO_Prev_Group ] +}; key { type[group2]= "FOUR_LEVEL", symbols[Group1]= [ backslash, bar ], @@ -1341,12 +1346,15 @@ symbols[Group1]= [ slash,question ], symbols[Group2]= [ m
Re: [Bug 19947] xkbcomp-1.0.5: Group width mismatch between key and type
On Sat, Feb 21, 2009 at 08:15:36PM +0100, Martin MOKREJŠ wrote: > Should I use in HAL .fdi files "input.xkb.layout" or > "input.x11_options.XkbLayout"? the latter is for X server specifics, the former for system-wide configuration (e.g. . The latter overrides the former. Both are fine to set. For example, in Fedora we set the input.xkb.* keys automatically from /etc/sysconfig/keyboard, but you can override them through the x11_options for specific devices if you need to. > I don't know the internals of xorg server, so ... I am puzzled why > the /usr/bin/xkbcomp is being called twice, as logged in Xorg.0.log. > I even cannot find the file to existing for teh currently running > instance: xkbcomp is called once for each keyboard (i.e. once for each input.capabilities = input.keyboard device). you most likely have multiple of those. > (**) 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). when I run setxkbmap with the settings you're presumably trying to get: $> setxkbmap -layout "us,cz" -variant ",qwerty" -option "grp:alt_shift_toggle"\ -option "grp_led:scroll" -option "caps:shift_nocancel" -print xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { include "complete+caps(shift_nocancel)" }; xkb_compat{ include "complete+ledscroll(group_lock)"}; xkb_symbols { include "pc+us+cz(qwerty):2+inet(evdev)+group(alt_shift_toggle)"}; xkb_geometry { include "pc(pc104)" }; }; this command should work for you. (remove the -print option to set it and check the server log) > key { [ Shift_L ] }; > key { [ Shift_R ] }; > key { [ Alt_L, Meta_L ] }; > key { > 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. > > > > > > > mouse >string="Linux"> > evdev > > > > > evdev > xorg > evdev > us,cz > ,qwerty > >type="string">grp:alt_shift_toggle > grp_led:scroll >type="string">caps:shift_nocancel > > > > > > > I hope this is the actual part that takes effect, because with all the bits that are comments in that file I lost track of what actually matters now. In the future, please remove things that look like configurations but are just comments. 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 tag and add everything in the line, comma-separated of course. Cheers, Peter ___ xorg mailing list xorg@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/xorg
Re: [Bug 19947] xkbcomp-1.0.5: Group width mismatch between key and type
Dan Nicholson wrote: > On Sat, Feb 21, 2009 at 11:15 AM, Martin MOKREJŠ > wrote: >> I don't know the internals of xorg server, so ... I am puzzled why >> the /usr/bin/xkbcomp is being called twice, as logged in Xorg.0.log. >> I even cannot find the file to existing for teh currently running >> instance: > > The server pipes xkb source data to xkbcomp, which outputs a compile > .xkm file. The server then loads the file and destroys it. It happens > twice because once is the keymap for the core keyboard, and once is > the keymap for the device. Hopefully one day this interaction can suck > less, but my guess is that your bug lies elsewhere in XKB. Thanks Dan, actually it seems it is called always when I go a console mode from X or while returning (ctrl+alt+F[0-6] or alt+F7). After a while I see it simply multiple times. Probably the problem is with my keyboard map then. Lets see who else can speak up. ;-) -- Martin ___ xorg mailing list xorg@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/xorg
Re: [Bug 19947] xkbcomp-1.0.5: Group width mismatch between key and type
On Sat, Feb 21, 2009 at 11:15 AM, Martin MOKREJŠ wrote: > Hi, > would anybody please tell me what is wrong on my system > so that the alt+shift switch does not work? I don't really understand the XKB issue, but I can tell you a bit about how the server operates on XKB data. > Should I use in HAL .fdi files "input.xkb.layout" or > "input.x11_options.XkbLayout"? Either one, although input.xkb.layout is preferred (I think). > I don't know the internals of xorg server, so ... I am puzzled why > the /usr/bin/xkbcomp is being called twice, as logged in Xorg.0.log. > I even cannot find the file to existing for teh currently running > instance: The server pipes xkb source data to xkbcomp, which outputs a compile .xkm file. The server then loads the file and destroys it. It happens twice because once is the keymap for the core keyboard, and once is the keymap for the device. Hopefully one day this interaction can suck less, but my guess is that your bug lies elsewhere in XKB. -- Dan ___ xorg mailing list xorg@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/xorg