Ubuntu – How to have sub-layouts of a specific keyboard layout in Ubuntu

keyboardkeyboard-layoutshortcut-keys

In Windows it is possible to arrange your keyboard layouts in 2 levels as following:

  • 1. English:
    • 1.1. English US
    • 1.2. English UK
  • 2. German

And you are able to:

  • a) switch directly between 1. and 2. using Alt+Shift.

  • b) switch directly between 1.1. and 1.2. using Ctrl+Shift (when 1. is chosen).

How can I arrange the same setup in Ubuntu if is it possible?

Thank you for your help in advance!

Best Answer

There are many shortcuts to choose to switch between keyboard layouts, but none fits with what you want.

Anyway, it can be done using some tricks.

a) Switch directly between English (English US, English UK) and German

First, create the script, let's call it change_layouts:

#!/bin/bash

en_layouts="['us', 'gb']"
de_layouts="['de']"

current_layouts=$(gsettings get org.gnome.libgnomekbd.keyboard layouts)

if [ "$current_layouts" = "$en_layouts" ]; then
    gsettings set org.gnome.libgnomekbd.keyboard layouts "$de_layouts"
else 
    gsettings set org.gnome.libgnomekbd.keyboard layouts "$en_layouts"
fi

Save the script in your ~/bin directory and don't forget to make it executable:

chmod +x ~/bin/change_layouts

Now you can test the script in terminal. Run it more times to see how it works.

Second, add a custom shortcut for this script. Go to System SettingKeyboardShortcutsCustom Shortcuts and follow the instructions from the below image:

add custom shrtcut

For some reasons, at least in my case, if I set the Alt+Shift shortcut, this will not run the script. Maybe this is a bug. But there are many other choices, like Alt+Shift+1.

b) Switch directly between English US and English UK (when English is chosen)

Go to System SettingKeyboard LayoutOptionsKey(s) to change layout and tick Ctrl+Shift:

Key(s) to change layout

Related: