6

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!

Radu Rădeanu
  • 169,590

1 Answers1

3

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:

Radu Rădeanu
  • 169,590
  • Great! Thank you very very much!

    There is still one little glitch that I would like to fix. When there is only one layout (in the de_layouts), the icon for displaying the current language disappears.

    I've created a workaround by putting the entry 'de' two times: ['de', 'de'] but it is a bit of an ugly fix. I would be happier if there is a way for the keyboard layout icon not to disappear when it contains only one layout. And thanks again! :)

    – Anton Petrov Oct 09 '13 at 13:15
  • 1
    @AntonPetrov The problem is that there is no way for keyboard indicator to be shown if there is only one layout set. This is a part of the design. If you had asked, I would have offered you the same solution: de_layouts="['de', 'de']" or maybe de_layouts="['de', 'de\tnodeadkeys']" – Radu Rădeanu Oct 09 '13 at 13:32