A friend of mine uses German letters on his windows with united states international Qwerty keyboard. Is there anything like that for Arch Linux? does anyone have any other options if that doesn't exist?

the windows keyboard my friend uses

  • I found people writing about problems with "dead keys" with a US international keyboard so I assume this is possible. – Chagai Friedlander Apr 19 '20 at 7:23
  • I don't know if it was Qwerty though... – Chagai Friedlander Apr 19 '20 at 7:24
  • 1
    I actually have a Qwertz keyboard so that would be even better but I guess I could get along with a Qwerty or basically anything else. – Hannah Apr 19 '20 at 7:37
  • 1
    Not everybody has windows, and without describing that "US International" layout, there's no way to know how it works. By running setxkbmap 'de(us)', you'll get a US qwerty layout, where pressing AltGr+a will get you ä, AltGr+o ö, AltGr+s ß, etc. Without any dreaded dead keys. You can probably configure that layout from your DE's control panel, too. – mosvy Apr 19 '20 at 7:49
  • If you install and use onboard (an on-screen keyboard), you will see the key mappings, when you change the keyboard (using different options of setxkbmap, for example according to the comment by @mosvy. – sudodus Apr 19 '20 at 8:10

A simple setxbmap us -variant intl solved my problem just fine.

But thanks for your help guys.


Here's how I do it on Debian (with X, xdm and fvwm, not Wayland):

May keyboard identifies as "pc104/us/altgr-int" under X.

I have an .Xmodmap file, which contents include

remove mod4 = Super_L Hyper_L
keysym Super_L = Mode_switch
keycode  34 = bracketleft braceleft adiaeresis Adiaeresis
keycode  35 = bracketright braceright udiaeresis Udiaeresis
keycode  51 = backslash bar odiaeresis Odiaeresis
keycode  21 = equal plus ssharp ssharp
keycode  47 = semicolon colon doublelowquotemark singlelowquotemark paragraph degree paragraph degree
keycode  48 = apostrophe quotedbl leftdoublequotemark leftsinglequotemark dead_acute dead_diaeresis dead_acute dead_diaeresis

This allows me to use the left "Windows" key as a mode switch to get äüöÄÜÖß on the places where those are normally on a German keyboard, and additionally „“‚‘ on the middle row.

No Alt-Gr needed (I always break my finger when I try to use that), and Shift works as expected for Umlauts.

The .Xmodmap is read by a command xmodmap $HOME/.Xmodmap in the ~/.xsession file that xdm executes on session login.

There are lots of variants possible; in particular Arch Linux and the display manager your friend uses (whatever he has installed, or whatever Arch uses by default) will likely require slightly different file names, or a different setup.


Mosvy's comment setxkbmap 'de(us)' led me to this entry in xkb/symbols/de.

partial alphanumeric_keys
xkb_symbols "us" {
    include "us"

    name[Group1]="German (US, with German letters)";

    key <AC01> { [           a,          A, adiaeresis, Adiaeresis ] };
    key <AC02> { [           s,          S,     ssharp,      U1E9E ] };
    key <AC10> { [   semicolon,      colon, odiaeresis, Odiaeresis ] };
    key <AC11> { [  apostrophe,   quotedbl, adiaeresis, Adiaeresis ] };
    key <AD03> { [           e,          E,   EuroSign,   EuroSign ] };
    key <AD07> { [           u,          U, udiaeresis, Udiaeresis ] };
    key <AD09> { [           o,          O, odiaeresis, Odiaeresis ] };
    key <AD11> { [ bracketleft,  braceleft, udiaeresis, Udiaeresis ] };
    key <AE03> { [           3, numbersign,    section,    section ] };
    key <AE11> { [       minus, underscore,     ssharp,   question ] };

    include "level3(ralt_switch)"

As US, with German letters and include "us" show, this is actually more a us(de) layout, technically.

This gives you two choices for a Umlaut/diaeresis: the letter "aou" itself or the original place ;'[. But only after a modifier, here ralt.

For typing fluently in German on a qwerty keyboard the Umlaute have to be on the colon-quote-left bracket keys. But these are important too, so they should be accessible by modifier. Unless you write a german dialogue with a lot of double qoutes, this should be the best compromise.

And then there is the Y and the Z...

I rather have what I see, and while I need the Umlaute on the right, a Z in the lower left corner disturbs me less than a Z in the usual place but labeled "Y".

So what is needed is some us(de) (the other way round) which is basically standard us, but the colon-key directly produces a ö etc., and for the colon you use AltGr (or another modifier).

Plus the option/variant us(de-YZ): swap these two. For people who want to write "zu" the normal way.

A simple setxkbmap de is actually enough to get the Umlaute. It gets you everything, actually, and that is the problem. Letters A to X and Punkt und Komma are OK, so you can write quite well, but everything else is totally scrambled. As soon as you need a colon, slash or dash you are quite lost.

For the linux console this line "enables" A-Umlaute:

keycode  30 = +a A Control_a nul adiaeresis Adiaeresis

The nul is for making it match Alt and Shift-Alt -- depends on the modifier definitions...

A friend of mine uses German letters

I really wonder in which way...sounds like he uses them on a regular basis.


I wrote a script for toggling between US and DE layout and bound that to an easily accessible key combination.

# usage: `xkbmap-toggle us de` toggles between the us and german keyboard layout

# get current layout and parameters
current=`setxkbmap -query | grep ^layout | awk '{print $2}'`

# exit if no parameters are given
test -z "$first" && notify-send 'setxkbmap' 'No layout specified' >/dev/null && exit 1

# determine next layout
for layout in "$@"; do
    test "$layout" = "$current" && next_is_target=1 && continue
    test $next_is_target -eq 1 && target="$layout" && break

# if current was last, set target to first
test -z "$target" && target="$first"

# set new layout
setxkbmap "$target"

# apply xmodmap config again
test -f ~/.config/xmodmap.conf && xmodmap ~/.config/xmodmap.conf

notify-send -t 500 -r 1337 'setxkbmap' "Set layout to $target" >/dev/null

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.