Custom keyboard layout in GNOME (Wayland)


last few days I try to add a custom keyboard layout on Fedora 37 (GNOME).
I switch from DE-ISO to US-ANSI layout and wanna change some key’s. Keyboard is 75% TKL with US-ANSI.

With EurKEY I was able to get ä, ö, ü and ß with AltGR + a/o/u/s.
Now what I wanna do is change the position for key Z and Y and it would be the perfect layout for me.

What I did:
1. To get the EurKEY layout I run

gsettings set org.gnome.desktop.input-sources show-all-sources true

2. After that I use EurKEY as my base. It is locatet in:


So I copy it and name the file “halo” (name of my keyboard is Halo75)

sudo cp eu halo

open the file with

sudo gnome-text-editor halo

change it to

// Umlaute und Y-Z unter ANSI-US

default partial alphanumeric_keys modifier_keys
xkb_symbols “basic” {

name[Group1] = "halo";

key <TLDE>	{[        grave,      asciitilde,           dead_grave,           dead_tilde  ]};
key <AE01>	{[            1,          exclam,           exclamdown,          onesuperior  ]};
key <AE02>	{[            2,              at,          ordfeminine,          twosuperior  ]};
key <AE03>	{[            3,      numbersign,            masculine,        threesuperior  ]};
key <AE04>	{[            4,          dollar,             sterling,                  yen  ]};
key <AE05>	{[            5,         percent,             EuroSign,                 cent  ]};
key <AE06>	{[            6,     asciicircum,      dead_circumflex,           dead_caron  ]};
key <AE07>	{[            7,       ampersand,       dead_abovering,          dead_macron  ]};
key <AE08>	{[            8,        asterisk,   doublelowquotemark,   singlelowquotemark  ]};
key <AE09>	{[            9,       parenleft,  leftdoublequotemark,  leftsinglequotemark  ]};
key <AE10>	{[            0,      parenright, rightdoublequotemark, rightsinglequotemark  ]};
key <AE11>	{[        minus,      underscore,               endash,               emdash  ]};
key <AE12>	{[        equal,            plus,             multiply,             division  ]};

key <AD01>	{[            q,               Q,                   ae,                   AE  ]};
key <AD02>	{[            w,               W,                aring,                Aring  ]};
key <AD03>	{[            e,               E,           ediaeresis,           Ediaeresis  ]};
key <AD04>	{[            r,               R,               yacute,               Yacute  ]};
key <AD05>	{[            t,               T,                thorn,                THORN  ]};
key <AD06>	{[            z,               Z,           ydiaeresis,           Ydiaeresis  ]};
key <AD07>	{[            u,               U,           udiaeresis,           Udiaeresis  ]};
key <AD08>	{[            i,               I,           idiaeresis,           Idiaeresis  ]};
key <AD09>	{[            o,               O,           odiaeresis,           Odiaeresis  ]};
key <AD10>	{[            p,               P,                   oe,                   OE  ]};
key <AD11>	{[  bracketleft,       braceleft,        guillemotleft,                U2039  ]}; // ‹
key <AD12>	{[ bracketright,      braceright,       guillemotright,                U203A  ]}; // ›
key <BKSL>	{[    backslash,             bar,              notsign,            brokenbar  ]};

key <AC01>	{[            a,               A,           adiaeresis,           Adiaeresis  ]};
key <AC02>	{[            s,               S,               ssharp,              section  ]};
key <AC03>	{[            d,               D,                  eth,                  ETH  ]};
key <AC04>	{[            f,               F,               egrave,               Egrave  ]};
key <AC05>	{[            g,               G,               eacute,               Eacute  ]};
key <AC06>	{[            h,               H,               ugrave,               Ugrave  ]};
key <AC07>	{[            j,               J,               uacute,               Uacute  ]};
key <AC08>	{[            k,               K,                U0133,                U0132  ]}; // ij, IJ
key <AC09>	{[            l,               L,               oslash,               Oslash  ]};
key <AC10>	{[    semicolon,           colon,               degree,       periodcentered  ]};
key <AC11>	{[   apostrophe,        quotedbl,           dead_acute,       dead_diaeresis  ]};

key <AB01>	{[            y,               Y,               agrave,               Agrave  ]};
key <AB02>	{[            x,               X,               aacute,               Aacute  ]};
key <AB03>	{[            c,               C,             ccedilla,             Ccedilla  ]};
key <AB04>	{[            v,               V,               igrave,               Igrave  ]};
key <AB05>	{[            b,               B,               iacute,               Iacute  ]};
key <AB06>	{[            n,               N,               ntilde,               Ntilde  ]};
key <AB07>	{[            m,               M,           dead_greek,            Multi_key  ]};
key <AB08>	{[        comma,            less,               ograve,               Ograve  ]};
key <AB09>	{[       period,         greater,               oacute,               Oacute  ]};
key <AB10>	{[        slash,        question,         questiondown,                U2026  ]}; // …

include "level3(ralt_switch)"

3. Now I add in:


This part

	  <description>German (US)</description>

Safe it and run

systemctl restart gdm.service

What I am doing wrong?

You probably also have to swap the y,Y on AB01 with the z,Z of AD06

To make a QWERTY out of a QWERTZ or viz versa changing the keycaps.

Did you read or understand what the problem is?

Yes I was reading more than once. I understood you want to make a own layout for your Keyboard.

You not really said what exactly not works … my guess was the swap of z - y ( qwerty to qwertz or viz versa)

Please be more specific about which of the steps not works.

With the last picture u can see I can not find it in the list.

Hast Du versucht “eine Eingabequelle hinzufügen” und dann Deine editierte Datei hinzuzufügen?

Ja, funzt net.

What I did:

  1. Who-T: User-specific XKB configuration - putting it all together
    Do it like he did
  2. copy the 2 lines with Z and Y and change it
  3. with Gnome Tweak I try it and it works