Customizing EurKey on Ubuntu
Source: Dev.to
This has been tested in Ubuntu 24.04.
When you need to type in different languages, you can configure your OS to handle their respective layouts. Often, when switching layouts, more than just the letters change: punctuation and shifted keys can change too, and you need to continuously adjust (where is the open parenthesis? Shift 9 or someplace entirely different? What happens if you hit the key right of L? etc.).
I recently switched to a ZSA Voyager programmable keyboard and got tired of continuously mistyping special characters and furiously switching keyboard layouts. I needed a single layout that would let me type everything! EurKey could be the answer, but despite its name EurKey does not handle all the languages spoken in Europe.
I needed to support Italian, English and German (which are supported) and Polish (which is not). I also do programming. My solution was to create a new OS layout, based on EurKey. This is not portable, but it makes my life easier most of the time.
Situation
On my own Ubuntu PC
- Everything works.
On a PC with EurKey
- Set layout to EurKey. Italian, German and English work; Polish does not work.
On a PC without EurKey
- Set language to English. Italian, German and Polish do not work.
Resulting layout
The layout was created using Oryx, the ZSA configuration utility (easy to reproduce on other programmable keyboards):
- Get the EurKey layout (print it if you prefer) and choose a few keys on the AltGr layer you will never use (for me, the first keys on the Q row are fine).
- Override those keys with the characters you need. Decide, for each key, what it should produce when hit with AltGr.
Example key mapping
| Key | Key + AltGr will produce |
|---|---|
| Q | ą |
| W | ę |
| E | ó |
| R | ć |
| … | … |
Installation steps
Follow the tutorial (or the newer version linked there):
1. Create a new XKB symbols file
Create /usr/share/X11/xkb/symbols/euspecial with the following content:
default partial alphanumeric_keys modifier_keys
xkb_symbols "basic" {
include "eu"
key { [ q, Q, aogonek, Aogonek ] };
key { [ w, W, eogonek, Eogonek ] };
key { [ e, E, oacute, Oacute ] };
key { [ r, R, cacute, Cacute ] };
key { [ t, T, zabovedot, Zabovedot ] };
key { [ y, Y, zacute, Zacute ] };
key { [ u, U, nacute, Nacute ] };
key { [ i, I, lstroke, Lstroke ] };
key { [ o, O, sacute, Sacute ] };
include "level3(ralt_switch)"
};
This changes the behavior of keys Q, W, E … O on the first row.
2. Register the new layout
Edit /usr/share/X11/xkb/rules/evdev.extras.xml and add a new section alongside the existing ones, inside the element:
euspecial
eu
EurKEY (Special)
US
cat
dan
eng
est
fao
fin
deu
ell
gsw
ita
lav
lit
nld
nor
por
spa
swe
3. Activate the layout
After saving the files, you should see a new “EurKEY (Special)” entry in your keyboard layout list. If it does not appear, restart your computer (or reload the XKB configuration).
Now you can type Italian, English, German and Polish characters—including the special characters you mapped—without constantly switching layouts.