Bug 57242

Summary: Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
Product: xorg Reporter: René Herman <rene.herman>
Component: App/xkbcompAssignee: Xorg Project Team <xorg-team>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: bensberg, jass0, keel_lambert, matej, paulepanter, peter.hutterer, rene.herman
Version: unspecified   
Hardware: x86 (IA32)   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
silences the one-level warning by properly reducing the number of levels
none
silences the one-level warning by properly reducing the number of levels
none
Archlinux PKGBUILD
none
Benno's ONE_LEVEL diff, re-attached
none
silences the one-level warning by properly reducing the number of levels
none
silences the one-level warning by properly reducing the number of levels
none
don't specify the keytype when not needed none

Description René Herman 2012-11-18 04:38:47 UTC
For quite a few years now, starting the X server has presented me with the warning:

===
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
>                   Ignoring extra symbols
Errors from xkbcomp are not fatal to the X server
===

My settings are

===
Section "InputClass"
        Identifier "evdev keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
        Option "XkbModel" "pc104"
        Option "XkbLayout" "us"
        Option "XkbVariant" "euro"
        Option "XkbOptions" "compose:rctrl"
EndSection
===

and the current version of xkeyboard-config is 2.7 (on arch linux).
 
The "euro" variant was introduced around 2007 (at my own instigation by the way -- Dutch computer-users use us keyboards, with just the additional euro-sign on Altgr-E or Altgr-5, and for those of use who can't stand the dead keys of us-international, this is the preferred layout) and at the time this warning was also present but was back then "promised" to be fixed shortly. I've been looking at the warning for 5 years now though... :-/

Google indicates that I'm also not particularly the only one, and not all of them using this specific variant. Could this be fixed somehow? If really need be perhaps by simply just not having xkbcomp complain, if this is somehow a valid setup? Or otherwise by fixing the layouts?
Comment 1 Sergey V. Udaltsov 2012-11-20 00:39:24 UTC
I appreciate your attention to an innocent warning :)

The type ONE_LEVEL has 1 level indeed. RALT has 1 level (see symbols/level3):

xkb_symbols "ralt_switch" {
  key <RALT> {
    type[Group1]="ONE_LEVEL",
    symbols[Group1] = [ ISO_Level3_Shift ]
    };
  modifier_map Mod5   { ISO_Level3_Shift };
};

So this looks like an issue with xkbcomp
Comment 2 René Herman 2012-11-20 02:43:32 UTC
It's digging through all sorts of these "innocent" warnings to get to the possibly non-innocent ones that's driving said attention :)

Thanks for (re-)assigning.
Comment 3 René Herman 2012-11-28 09:15:25 UTC
No comments though, so, is anyone actually reading this or have I simply been re-assigned to the dustbin?
Comment 4 René Herman 2012-12-11 00:16:11 UTC
Figures. I mean, really, X11 and QA? Hahahaha. What was I thinking...
Comment 5 keellambert 2013-03-24 01:33:30 UTC
the warning is still there with openSUSE12.3

running with,
<2013Mar24><02:18><~>  uname -a
Linux kernel 3.8.3-1-desktop #1 SMP PREEMPT Fri Mar 15 08:16:33 UTC 2013 (1ca6928) x86_64 GNU/Linux

have not noticed any ill effects

assumption: its innocent, hence its ignored
Comment 6 Benno Schulenberg 2013-09-20 16:07:54 UTC
Hmm, interesting stupid little bug.  The warning only gets given with the left and right Alt keys, not with the Win keys, nor the Menu key, nor the right Ctrl key (the left one is not assignable as third-level chooser).

Looking at the differences between the .xkb files that xkbcomp can produce after
choosing sequentially <LALT>, <RALT>, <LWIN>, <RWIN>, <RCTL>, and <COMP> as the third-level chooser, it dawned upon me what the trigger is.  The last four keys only ever get one symbol assigned (even though their type is nothing at all, not ONE_LEVEL), but the left Alt and the right Alt key each get two symbols assigned (Alt_L/R, and Meta_L/R on the shift level) before they get redefined as a one-level key that chooses the third level.  Somehow xkbcomp still sees that second symbol when it processes the one-level assignment.  It should wipe the key before doing any new assignments -- I've tried with "replace" and with "override", but those didn't work.

What *does* work is simply delete in the /usr/share/X11/xkb/symbols/altwin file the assignment of Meta_R to <RALT> (the one at the beginning, in xkb_symbols "meta_alt", does it for me).  Then the warning does not show any more.  It is not the solution, of course, but it's nice to have a workaround.


What also helped me figuring out where the problem lies, was observing the output of these:

$ setxkbmap -print  |  xkbcomp -w 1  -  $DISPLAY
Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
                  Ignoring extra symbols

$ setxkbmap -print  |  xkbcomp -w 1  -xkb  -  thekeymap
Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
                  Ignoring extra symbols

$ xkbcomp -w 1  thekeymap  $DISPLAY

The actual keymap does not produce the warning, it is in the extensive and overlapping data that setxkbmap provides that the problem was hiding.
Comment 7 Benno Schulenberg 2013-09-20 21:34:52 UTC
Created attachment 86226 [details] [review]
silences the one-level warning by properly reducing the number of levels

Attached patch fixes the warning for me, without affecting the resultant in any way.  Please test, if you can.
Comment 8 Benno Schulenberg 2013-09-29 19:01:09 UTC
Created attachment 86805 [details] [review]
silences the one-level warning by properly reducing the number of levels

This version of the patch looks more invasive, but it mainly swaps some lines around in order to make the logic of the modified if statement clearer.
Comment 9 keellambert 2013-10-03 16:33:30 UTC
this warning no longer occurs with :-

Kernel:  3.11.2-1.g4c1fc5a-desktop x86_64
Desktop: KDE 4.11.2 
Distro:  openSUSE 13.1 Beta 1 x86_64

(so patch not needed)
Comment 10 Benno Schulenberg 2013-10-03 17:40:34 UTC
(In reply to comment #9)
> this warning no longer occurs with :-
> Distro:  openSUSE 13.1 Beta 1 x86_64

Interesting.  Can you give me a URL of the xkbcomp RPM package that goes into openSuse 13.1 beta?  I can't find it on the opensuse website.
Comment 11 René Herman 2013-10-03 19:18:31 UTC
The warning is still present on Arch Linux (i386) with the, old but seemingly current, package

  xorg-xkbcomp-1.2.4-1

as found on:

  https://www.archlinux.org/packages/extra/i686/xorg-xkbcomp/

As said in the original report, its been present for me since 2007...

(I'm afraid I'm not set up to test).
Comment 12 keellambert 2013-10-03 21:29:35 UTC
(In reply to comment #10)

URL: http://download.opensuse.org:80/factory/repo/oss/
Comment 13 Benno Schulenberg 2013-10-04 07:49:10 UTC
(In reply to comment #12)
> URL: http://download.opensuse.org:80/factory/repo/oss/

Thanks.  I've downloaded http://download.opensuse.org/factory/repo/oss/suse/i586/xkbcomp-1.2.4-9.3.i586.rpm , unpacked it, and used its xkbcomp -- it still gives me the warning.  Maybe Suse changed something in the keymap definitions, or maybe you are using now a keymap that doesn't contain the triggering redefinition?
Comment 14 keellambert 2013-10-04 16:02:04 UTC
this pc has installed 

xkbcomp-1.2.4-9.3.x86_64

nothing has been changed, all kbd settings are as per default

fwiw

A780GM-m2<2013Oct04><17:44><~>  dmesg | grep Warning
[    0.000000] ACPI BIOS Warning (bug): Optional FADT field Pm2ControlBlock has zero address or length: 0x0000000000000000/0x1 (20130517/tbfadt-603)
[   10.901122] ACPI Warning: 0x0000000000000b00-0x0000000000000b07 SystemIO conflicts with Region \SOR1 1 (20130517/utaddress-251)
A780GM-m2<2013Oct04><17:45><~> 
 
A780GM-m2<2013Oct04><17:46><~>  cat .xsession-errors-\:0 | grep Warning
A780GM-m2<2013Oct04><17:47><~>  cat .xsession-errors-\:0 | grep WARNING
** (process:1812): WARNING **: 1 dictionaries weren't free'd.
** (process:1994): WARNING **: 1 dictionaries weren't free'd.
** (process:2561): WARNING **: 1 dictionaries weren't free'd.
A780GM-m2<2013Oct04><17:47><~>  cat .xsession-errors-\:0 | grep warning
I/O warning : failed to load external entity "/usr/share/qalculate/prefixes.xml"
I/O warning : failed to load external entity "/usr/share/qalculate/currencies.xml"
I/O warning : failed to load external entity "/usr/share/qalculate/units.xml"
I/O warning : failed to load external entity "/usr/share/qalculate/functions.xml"
I/O warning : failed to load external entity "/usr/share/qalculate/datasets.xml"
I/O warning : failed to load external entity "/usr/share/qalculate/variables.xml"
I/O warning : failed to load external entity "/usr/share/qalculate/currencies.xml"
I/O warning : failed to load external entity "/home/michael/.qalculate/eurofxref-daily.xml"
I/O warning : failed to load external entity "/home/michael/.qalculate/eurofxref-daily.xml"
A780GM-m2<2013Oct04><17:48><~>  

A780GM-m2<2013Oct04><17:49></var/log>  cat Xorg.0.log | grep Warning
[    24.444] (WW) Warning, couldn't open module fglrx
A780GM-m2<2013Oct04><17:52></var/log>  cat Xorg.0.log | grep xkb
[    26.218] (**) Option "xkb_rules" "evdev"
[    26.218] (**) Option "xkb_model" "pc104"
[    26.218] (**) Option "xkb_layout" "de"
[    26.218] (**) Option "xkb_variant" "nodeadkeys"
[    26.278] (**) Option "xkb_rules" "evdev"
[    26.278] (**) Option "xkb_model" "pc104"
[    26.278] (**) Option "xkb_layout" "de"
[    26.278] (**) Option "xkb_variant" "nodeadkeys"
[    26.282] (**) Option "xkb_rules" "evdev"
[    26.282] (**) Option "xkb_model" "pc104"
[    26.282] (**) Option "xkb_layout" "de"
[    26.282] (**) Option "xkb_variant" "nodeadkeys"
[    26.283] (**) Option "xkb_rules" "evdev"
[    26.283] (**) Option "xkb_model" "pc104"
[    26.283] (**) Option "xkb_layout" "de"
[    26.284] (**) Option "xkb_variant" "nodeadkeys"
[    26.286] (**) Option "xkb_rules" "evdev"
[    26.286] (**) Option "xkb_model" "pc104"
[    26.286] (**) Option "xkb_layout" "de"
[    26.286] (**) Option "xkb_variant" "nodeadkeys"
A780GM-m2<2013Oct04><17:52></var/log>

not awhere of what openSUSE has changed
Comment 15 Benno Schulenberg 2013-10-04 18:06:50 UTC
For completeness, could you execute the following single string of commands, and paste the output, if any:

  setxkbmap -print | xkbcomp -w 1 -xkb - -o - | grep -A3 "key <RALT>"
Comment 16 René Herman 2013-10-04 18:09:54 UTC
Please note, if I start X through my display manager (lxdm, for me) the xkbcomp warning appears in its log file, /var/log/lxdm.log:

=== (excerpt /var/log/lxdm.log)
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Symbol map for key <RALT> redefined
>                   Using last definition for conflicting fields
> Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
>                   Ignoring extra symbols
Errors from xkbcomp are not fatal to the X server
===

The additional first warning is being triggered by some time ago having switched to

=== (excerpt /etc/X11/xorg.conf.d/10-evdev.conf)
Option "XkbVariant" "altgr-intl"
===

At the time, I actually laughed when my momentary hope of getting rid of my age-old "euro warning" was slain so decisively. Anyways, that's not the point...

I also downloaded the SuSE 13.1 beta 1 xkbcomp source package:

http://download.opensuse.org/factory/repo/src-oss/suse/src/xkbcomp-1.2.4-9.3.src.rpm

and your xkbcomp is just plain vanilla 1.2.4, it seems. Given that it's unlikely that SuSE has been changing keymaps itself, I expect this means that you also do in fact still get the warning (with the keyboard config with which you used to get it) but that's it's now for you buried in some DM log file somewhere.

If you don't immediately know how to check, the quickest way might be to boot into a console (ie, "runlevel 3", most likely) and start X through startx -- if you're still that sort of person. You'll then probably see the warning back in full glory on your console. Or just rummage through your DM log, if any.
Comment 17 René Herman 2013-10-04 18:22:36 UTC
@ Benno:

Here's mine, if it's useful. This is currently with

===
Section "InputClass"
        Identifier "evdev keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
        Option "XkbLayout" "us"
        Option "XkbVariant" "altgr-intl"
EndSection
===

[rene@e600 ~]$ setxkbmap -print | xkbcomp -w 1 -xkb - -o - | grep -A3 "key <RALT>"
Warning:          Symbol map for key <RALT> redefined
                  Using last definition for conflicting fields
Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
                  Ignoring extra symbols
    key <RALT> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ ISO_Level3_Shift ]
    };
Comment 18 René Herman 2013-10-04 20:07:54 UTC
Created attachment 87136 [details]
Archlinux PKGBUILD
Comment 19 René Herman 2013-10-04 20:08:55 UTC
Created attachment 87137 [details]
Benno's ONE_LEVEL diff, re-attached
Comment 20 René Herman 2013-10-04 20:15:22 UTC
@ Benno:

Apologies, I'm not used to this bugzilla and only see now that the attachments have turned into two additional comments, at least one of which I should have provided this accompanying text for.

But...

I have tested your patch from comment #8 and it indeed silences the ONE_LEVEL warning for me. I have attached an archlinux PKGBUILD and, due to possible whitespace differences tripping up its checksum mechanism, also your patch from comment #8 again. If you guys do that stuff, and if you want, you can add a

Tested-by: Rene Herman <rene.herman@gmail.com>

I do still have that other warning about RALT being redefined, but that looks like it it's in fact probably valid -- and anyways, it would be a different issue.

Will you be pushing this formward?
Comment 21 Benno Schulenberg 2013-10-04 21:09:02 UTC
(In reply to comment #20)
> Apologies, I'm not used to this bugzilla and only see now that the
> attachments have turned into two additional comments,

??  Nothing happened to my attachment in comment #8, it is still the same as it is here.  Your version contains spaces instead of a tab in one line, but now I see that that is XOrg style, so in fact that is better.

> I do still have that other warning about RALT being redefined,

It seems Archlinux runs xkbcomp with '-w 10'; with a lower warning level I don't see that message here.

> Will you be pushing this formward?

I will try.  Soon I'll post some patches to xorg-devel.
Comment 22 René Herman 2013-10-04 21:31:09 UTC
No, never mind, nothing happened to your attachment. I was only apologizing for taking up three comments due to not knowing how to work this bugzilla.

That is, I had planned to write a single message, and then attach the PKGBUILD and my possibly whitespace-mangled copy/paste-version of your patch to that single message -- but after I wrote it, the process of attaching did not attach to the just-written message, but created comments #18 and #19, leaving me to retype the message as comment #20.

But that's not important...

As to your -w 10 remark: I believe archlinux does most everything very "vanilla" and I in fact also see the warning with your manual -w 1 line:

===
[rene@e600 ~]$ setxkbmap -print | xkbcomp -w 1 -xkb - -o - | grep -A3 "key <RALT>"
Warning:          Symbol map for key <RALT> redefined
                  Using last definition for conflicting fields
    key <RALT> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ ISO_Level3_Shift ]
    };
===

(again, with XkbVariant "altgr-intl"). So that's a little odd then?

In any case, thanks much for taking this up.
Comment 23 keellambert 2013-10-05 10:02:01 UTC
re: Comment 15

oops! really trying,

bash-4.2# setxkbmap -print | xkbcomp -w 1 -xkb - -o - | grep -A3 "key <RALT>"
Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
                  Ignoring extra symbols
    key <RALT> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ ISO_Level3_Shift ]
    };
bash-4.2#

last few lines of /var/log/kdm.log
--------
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
>                   Ignoring extra symbols
Errors from xkbcomp are not fatal to the X server
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Compat map for group 2 redefined
>                   Using new definition
> Warning:          Compat map for group 3 redefined
>                   Using new definition
> Warning:          Compat map for group 4 redefined
>                   Using new definition
Errors from xkbcomp are not fatal to the X server
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Compat map for group 2 redefined
>                   Using new definition
> Warning:          Compat map for group 3 redefined
>                   Using new definition
> Warning:          Compat map for group 4 redefined
>                   Using new definition
Errors from xkbcomp are not fatal to the X server
------

so not fixed

nb. on openSUSE the found symbols.c has only 250 lines

bash-4.2# cat symbols.c | grep result
bash-4.2#

hence application of patch not possible
Comment 24 Benno Schulenberg 2013-10-07 08:03:04 UTC
(In reply to comment #22)
> [...] and I in fact also see the warning with your manual -w 1 line:
> [...]
> (again, with XkbVariant "altgr-intl"). So that's a little odd then?

That is indeed a little odd.  If you see the "redefined" warning, I would expect you to also see the "Multiple symbols" warning.

$ setxkbmap -print | xkbcomp -w 10 -xkb - -o - 2>&1 | grep -A1 "key <RALT>"
Warning:          Multiple symbols for level 1/group 1 on key <RALT>
                  Using ISO_Level3_Shift, ignoring Alt_R
Warning:          Symbol map for key <RALT> redefined
                  Using last definition for conflicting fields
--
    key <RALT> {
        type= "ONE_LEVEL",

When I do this with '-w 1', or even '-w 9', I only get the last two lines.
Comment 25 Benno Schulenberg 2013-10-07 09:27:18 UTC
(In reply to comment #23)
> nb. on openSUSE the found symbols.c has only 250 lines

That must be a different symbols.c.  Are you sure this is
the .../xkbcomp/symbols.c ?

> bash-4.2# cat symbols.c | grep result

Useless use of cat, by the way.  When wanting to grep for
something in a file you can simply do:

  grep result symbols.c
Comment 26 keellambert 2013-10-07 11:09:48 UTC
(In reply to comment #25)

systemtap-2.3-3.3.x86_64 is the only package found containing symbols.c

A780GM-m2<2013Oct07><12:38><~/>  grep symbol systemtap-file-list
/usr/share/systemtap/runtime/linux/autoconf-kallsyms-on-each-symbol.c
/usr/share/systemtap/runtime/linux/autoconf-kprobe-symbol-name.c
/usr/share/systemtap/runtime/transport/symbols.c
/usr/share/systemtap/tapset/linux/context-symbols.stp
/usr/share/systemtap/tapset/linux/ucontext-symbols.stp
A780GM-m2<2013Oct07><12:39><~/>

/usr/share/doc/packages/xkbcomp/ is the only .../xkbcomp/ dir

different ballpark
Comment 27 Benno Schulenberg 2013-10-07 11:23:04 UTC
(In reply to comment #26)
> /usr/share/doc/packages/xkbcomp/ is the only .../xkbcomp/ dir

*Source* packages are not normally installed on user systems.  If you want to
look at them, change them, build them, and so on, you have to search for them
and install them explicitly.  Look for an xkbcomp src.rpm in your repos if you
want to apply the patch.  Or better: do not, there is no need.
Comment 28 René Herman 2013-10-07 14:07:38 UTC
(In reply to comment #24)\

Well... at least I also get more warnings with -w 10 than with -w 1...

===
[rene@e600 ~]$ setxkbmap -print | xkbcomp -w 10 -xkb - -o - 2>&1 | grep -A1 "key <RALT>"
Warning:          Symbol map for key <RALT> redefined
                  Using last definition for conflicting fields
--
Warning:          Multiple symbols for level 1/group 1 on key <RALT>
                  Using ISO_Level3_Shift, ignoring Alt_R
Warning:          Multiple definitions for group 0 type of key <RALT>
                  Using ONE_LEVEL, ignoring TWO_LEVEL
Warning:          Symbol map for key <RALT> redefined
                  Using last definition for conflicting fields
--
    key <RALT> {
        type= "ONE_LEVEL",

[rene@e600 ~]$ setxkbmap -print | xkbcomp -w 1 -xkb - -o - 2>&1 | grep -A1 "key <RALT>"
Warning:          Symbol map for key <RALT> redefined
                  Using last definition for conflicting fields
--
    key <RALT> {
        type= "ONE_LEVEL",
===

But, as can be seen above, I do have the <RALT> redefined one with just -w 1. altgr-intl is as far I know little used, and I actually sort of expected the map to be just "broken" in that sense.

Anyways -- the original ONE_LEVEL warning is gone from both, so that is success as far as I'm concerned.
Comment 29 Benno Schulenberg 2013-10-07 18:11:44 UTC
(In reply to comment #28)
> Warning:          Symbol map for key <RALT> redefined
>                   Using last definition for conflicting fields
> --
> Warning:          Multiple symbols for level 1/group 1 on key <RALT>
>                   Using ISO_Level3_Shift, ignoring Alt_R
> Warning:          Multiple definitions for group 0 type of key <RALT>
>                   Using ONE_LEVEL, ignoring TWO_LEVEL
> Warning:          Symbol map for key <RALT> redefined
>                   Using last definition for conflicting fields

Ah, but you get two warnings about "Symbol map redefined", I get only one.

> altgr-intl is as far I know little used, and I actually sort of expected
> the map to be just "broken" in that sense.

Well, I use altgr-intl too.  :)  But mine is somewhat modified.  When I undo one of the modifications, I also get two warnings about "Symbol map redefined", but both of them are *after* the "Multiple symbols" warning, and I still don't get the "Multiple definitions" warning.  Well, let's assume that this is because I am on an 'old' system (Ubuntu Lucid from April 2010) and you are on something much newer, and the order of things may have changed since then, and probably new warnings added.

(But no, altgr-intl is not "broken" in any way.  If it were, many other keymaps would be too.)
Comment 30 René Herman 2013-10-07 19:09:08 UTC
(In reply to comment #29)

I see. Yes, I'm on "rolling release archlinux" and actually keep it updated once a week or so, so it should indeed be very current. If it's useful to know:

[rene@e600 ~]$ pacman -Qo /usr/share/X11/xkb/symbols/us 
/usr/share/X11/xkb/symbols/us is owned by xkeyboard-config 2.9-2

Well... -- given that my reason for reporting this was to, at the time that I rebuilt this system, get things setup "just right" and therefore not ignore any of the errors or warnings, and the fact that you say that it's not a simple matter of a crusty old keymap file... this would seem to mean that I have in the end progressed in a parallel sense only.

Perhaps the right solution is to have the (standard) setup run xkbcomp by default with -w 0 if it's expected that untweaked, vanilla upstream setups trigger these warnings. Certainly since I quite fully expect that fewer than 0.01 percent of prospective readers of these warnings will ever have any use for them.
Comment 31 bjarniig 2014-07-25 18:36:48 UTC
Package: xkeyboard-config
Version: 2.12
Severity: minor
Tags: patch
File: .../xkb/symbols/level3

--- level3      2014-01-27 00:33:44.000000000 +0000
+++ level3.new  2014-07-24 23:50:46.000000000 +0000
@@ -2,12 +2,14 @@
 // so that the third shift level can be reached.

 // The default behaviour:
-// the right Alt key (AltGr) chooses the third symbol engraved on a key.
-default  partial modifier_keys
+// the right Alt key (AltGr) chooses the third position in a keymap line.
+// If engraved on a key, then in the lower right corner.
+default partial modifier_keys
 xkb_symbols "ralt_switch" {
   key <RALT> {
-    type[Group1]="ONE_LEVEL",
-    symbols[Group1] = [ ISO_Level3_Shift ]
+    type[Group1]="TWO_LEVEL",
+// If "ISO_Next_Group" is absent, a symbol from the us keymap could appear
+    symbols[Group1] = [ ISO_Level3_Shift, ISO_Next_Group ]
   };
   include "level3(modifier_mapping)"
 };
~
Comment 32 Benno Schulenberg 2014-09-11 09:45:12 UTC
Created attachment 106117 [details] [review]
silences the one-level warning by properly reducing the number of levels

Hello René,

I finally got a review.  Could you test the attached slightly modified version of the patch, so that I can again add a Tested-by tag?
Comment 33 Benno Schulenberg 2014-09-11 20:12:22 UTC
Created attachment 106155 [details] [review]
silences the one-level warning by properly reducing the number of levels

Modified the patch still further after a rereview.  :)
Comment 34 Paul Menzel 2015-02-23 10:41:36 UTC
I am able to reproduce this on *only one* Debian Sid/unstable system. I’ll try to test this patch on that system.

By the way, do you know if this issue also causes delays for the X server start-up?
Comment 35 Peter Hutterer 2015-11-09 04:41:51 UTC
better late then never, pushed now as commit bf4d7d059daf5c6f81d70f8d3e5e2a87265381b7
Comment 36 Matej Nanut 2016-08-13 07:54:27 UTC
This commit (bf4d7d059daf5c6f81d70f8d3e5e2a87265381b7) breaks the Slovene ("si") keyboard layout for me, by making some AltGr combinations not work.

AltGr+1 doesn't produce a tilde anymore, and AltGr+, and AltGr+. don't produce < and > anymore.

Some combinations still work, though. AltGr+E produces E, and AltGr+V @.
Comment 37 Benno Schulenberg 2016-08-13 09:43:04 UTC
Created attachment 125761 [details] [review]
don't specify the keytype when not needed
Comment 38 Benno Schulenberg 2016-08-13 09:43:44 UTC
(In reply to Matej Nanut from comment #36)
> This commit (bf4d7d059daf5c6f81d70f8d3e5e2a87265381b7) breaks the Slovene
> ("si") keyboard layout for me, by making some AltGr combinations not work.

Hello Matej.  You are using xkbcomp from git?

> AltGr+1 doesn't produce a tilde anymore,

To be sure: you mean AltGr+Shift+1 doesn't produce tilde anymore?  Because AltGr+1 should produce a dead tilde -- which it probably doesn't do anymore either.  AltGr+Shift+2 should produce caron, AltGr+Shift+3 circumflex, etc.

> Some combinations still work, though. AltGr+E produces E,

You mean AltGr+E still produces euro (€)?

Could you try the attached patch against xkeyboard-config?
Comment 39 Matej Nanut 2016-08-13 11:20:00 UTC
(In reply to Benno Schulenberg from comment #38)
> Hello Matej.  You are using xkbcomp from git?

Hello.  I'm using the latest xkbcomp available from Xenocara (OpenBSD's version of Xorg).  I'm not sure from which git commit it was assembled.  But since that change got in, and the last CVS commit says "Update to xkbcomp 1.3.1", I assume it's the head version.

> To be sure: you mean AltGr+Shift+1 doesn't produce tilde anymore?  Because
> AltGr+1 should produce a dead tilde -- which it probably doesn't do anymore
> either.  AltGr+Shift+2 should produce caron, AltGr+Shift+3 circumflex, etc.

Yes, that's what I meant.  I usually press the dead key twice to generate a tilde.  I've only found out about the fourth level (AltGr+Shift) now. :)  To be sure, neither work now.

> > Some combinations still work, though. AltGr+E produces E,
> 
> You mean AltGr+E still produces euro (€)?

Yes, my silly mistake, sorry.  It produces €.

> Could you try the attached patch against xkeyboard-config?

The attached patch does fix the issue, thanks!  So xkeyboard-config was incorrect, and the xkbcomp update revealed it?
Comment 40 Paul Menzel 2016-08-13 11:52:39 UTC
Just a note, that `/usr/lib/gdm3/gdm-x-session` doesn’t print the warning anymore, since xkbcomp 1.3.1 was installed in Debian Sid/unstable by updating the package x11-xkb-utils (7.7+3) [1].

Benno, thank you very much.

[1] http://metadata.ftp-master.debian.org/changelogs//main/x/x11-xkb-utils/x11-xkb-utils_7.7+3_changelog
Comment 41 Paul Menzel 2016-08-13 11:53:42 UTC
(In reply to Matej Nanut from comment #36)
> This commit (bf4d7d059daf5c6f81d70f8d3e5e2a87265381b7) breaks the Slovene
> ("si") keyboard layout for me, by making some AltGr combinations not work.
> 
> AltGr+1 doesn't produce a tilde anymore, and AltGr+, and AltGr+. don't
> produce < and > anymore.
> 
> Some combinations still work, though. AltGr+E produces E, and AltGr+V @.

Thank you for your report and sorry that you experienced a regression. Could you please open a separate ticket for this though, referencing this one?
Comment 42 Matej Nanut 2016-08-13 13:19:03 UTC
(In reply to Paul Menzel from comment #41)
> Thank you for your report and sorry that you experienced a regression. Could
> you please open a separate ticket for this though, referencing this one?

Thank you for the swift reply!  I've opened the new bug #97332 as you proposed.  I hope quoting this bug in the new one's description is sufficient for the reference.
Comment 43 Benno Schulenberg 2016-08-13 17:55:22 UTC
(In reply to Paul Menzel from comment #40)
> [...] doesn’t print the warning anymore, since xkbcomp 1.3.1 was installed [...]

That is because of commit 26d1c57a938ce5c0d4fd9d645ace25308e6a7070 by Peter Hutterer, which suppresses the warning for lower levels.  If you run xkbcomp with "-w 6", you should still see the warning.

My commit to xkbcomp fixes the cause of the warning, but it is not in a release yet.
Comment 44 Benno Schulenberg 2016-08-13 18:07:40 UTC
(In reply to Matej Nanut from comment #39)
> The attached patch does fix the issue, thanks!

Okay, good.  Meanwhile I've been able to verify that myself too.

> So xkeyboard-config was
> incorrect, and the xkbcomp update revealed it?

I'm not sure.  Maybe my change to xkbcomp caused a new bug, or it revealed another one.  But at the moment that doesn't matter much, because it is easy to avoid it: stop xkeyboard-config from specifying a key as FOUR_LEVEL when in fact defining only the first two levels of it.  For the Slovene and related layouts that works, but I will have to see and check whether all other layouts that "overallocate" their keys can have these overspecifications snipped.

But will continue this investigation on bug #97332.
Comment 45 Peter Hutterer 2016-08-22 02:54:50 UTC
(In reply to Benno Schulenberg from comment #44)
> (In reply to Matej Nanut from comment #39)
> I'm not sure.  Maybe my change to xkbcomp caused a new bug, or it revealed
> another one.  

I'm gonna assume the latter, but xkbcomp is a bit hairy so I refrain from looking too deeply into it ;)

> But at the moment that doesn't matter much, because it is easy
> to avoid it: stop xkeyboard-config from specifying a key as FOUR_LEVEL when
> in fact defining only the first two levels of it.  For the Slovene and
> related layouts that works, but I will have to see and check whether all
> other layouts that "overallocate" their keys can have these
> overspecifications snipped.
> 
> But will continue this investigation on bug #97332.

good find and imo the right solution, thanks.

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.