XKB group switch

Trying to implement the following for Gnome3 (Wayland) in Fedora 40.

I would like to have a custom xkb symbols file, where I would like to define two layouts.

  1. EURKey Layout
  2. Russian Layout

This because, I would like to override keys globally for both layouts at the same time. For example, change Control and Alt keys.

I have defined the following xkb file test4 and evdev.xml files that live in ~/.config/xkb/symbols and ~/.config/xkb/rules respectively. I am doing this, to escape the need to have scripts or other programs solving this problem. As I would like these files to be part of my dotfiles.

test4 contents:

default partial alphanumeric_keys modifier_keys
xkb_symbols "base" {
    include "eu(basic)"
    include "level3(ralt_switch)"
    name[Group1]="EurKEY";
    
    include "ru(winkeys)"
    name[Group2]="Russian";

    key <CAPS> { 
        [ ISO_Next_Group ]
    };       
};

evdev.xml contents:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd">
<xkbConfigRegistry>
  <layoutList>
    <layout>
      <configItem>
        <name>test4</name>
        <shortDescription>eu2</shortDescription>
        <description>Custom EurKEY and Russian Layout</description>
        <languageList>
          <iso639Id>eng</iso639Id>
          <iso639Id>ger</iso639Id>
          <iso639Id>rus</iso639Id>
        </languageList>
      </configItem>
    </layout>
  </layoutList>

</xkbConfigRegistry>

Then I proceed to set the input-source:

gsettings set org.gnome.desktop.input-sources sources "[('xkb','test4')]"

Everything seems to load, however I notice the following issues:

  • after settings the sources using gsettings, the Russian layout is always selected by default instead of the EURKey layout.
  • the level3 (AltGr+key) symbols from EURKey Layout (e.g. ñ) are only available when Russian group is set. If I press and move to EURKey layout, I will not be able to access these keys. Not sure if this could be related to the fact that EURKey has defined 4 levels, while Russian layout only has 2.

I believe the solution is quite simple, I just do not see it. Any helps to solve it is much appreciated.