Typing umlauts and Eszet on GNU/Linux

I started studying Deutsche (German). Since learning a language requires input and output in both their forms ({listening, reading}, {speaking, writing}), I needed to configure my Debian system to write the Deutsche-specific characters:

  • The umlaut on certain vowels: ÄÖÜ äöü
  • The Eszett (ess zed) or scharfes S (double S): ß
    • Capital ß does not exist in German, so I don’t use it. But if I want to type a non-existing letter, now I can: ẞ. For some reason, this only works with some programs, not with others.

To write these chars, you need to have a compose key. Debian (and all other distros? who knows) doesn’t have it by default, so you configure it in your desktop:


See this page.


You have a GUI: Preferences/Keyboard.


On Debian, edit /etc/default/keyboard.

Add/edit this line to use the left Microsoft key:

Other key names I know: rwin, menu, lctrl, rctrl, caps, paus, prsc, sclk.

Now you can type!

Restart the DE session, of course.

Typing umlauts:

Hit the compose key, THEN type double quotes, THEN type a lowercase or uppercase vowel. Then means that you are not supposed to press 999 keys altogether.

Typing Eszett:

Hit the compose key, THEN type s, THEN type s. If both the s are uppercase and your software supports stupidity, a non-existing letter will appear.

Stupidity matters

MariaDB [(none)]> SELECT 'ß'='ẞ' stupidity1, LOWER('ẞ')='ẞ' stupidity2;
| stupidity1 | stupidity2 |
|          0 |          1 |
1 row in set (0.00 sec)

UPDATE: I filed a bug for this. It’s now “Verified”, so they seem to agree this behavior is not optimal.