How do I change shortcuts for switching keyboard layouts in Ubuntu20.04? [duplicate]
Can I use Ctrl+Shift for changing languages? I can't set this hotkey for changing keyboard languages.
At this moment Alt+Shift switch languages, but I can't see this hotkey in keyboard hotkeys list or in
gsettings list-recursively org.gnome.desktop.wm.keybindings | sort | more
output.
Solution 1:
You can set such keyboard shortcut as follows:
-
On Ubuntu 18.04 LTS, 20.04 LTS, 21.04 and 21.10 with GNOME desktop from GNOME Tweaks.
-
Install it
sudo apt-get install gnome-tweaks
-
Then open GNOME Tweaks (
gnome-tweaks
). -
Select Keyboard & Mouse tab
-
Click Additional Layout Options button
-
Expand Switching to another layout
-
Select Ctrl + Shift here
See screenshot below:
Or simply:
gsettings set org.gnome.desktop.input-sources xkb-options \ "['grp:ctrl_shift_toggle']"
If you do not like Super + Space and Shift+Super+Space you can disable them with
gsettings set org.gnome.desktop.wm.keybindings switch-input-source "['']" gsettings set org.gnome.desktop.wm.keybindings switch-input-source-backward "['']" gsettings set org.freedesktop.ibus.general.hotkey triggers "['']"
Note: you will face interference problem as Ctrl+Shift+T in GNOME Terminal will switch language at once with opening new tab. It is known bug 1683383.
-
-
On Ubuntu MATE 18.04 LTS and newer versions this is possible from
mate-keyboard-properties
:- Open MATE Control Center
- Click Keyboard
- Go to Layouts tab
- Click Options
- Expand Switching to another layout
- Select Ctrl + Shift here
See screenshot below:
Or simply:
gsettings set org.mate.peripherals-keyboard-xkb.kbd options \ "['grp\tgrp:ctrl_shift_toggle']"
Note: here bug 1683383 is fixed by packages from my PPA :
sudo add-apt-repository ppa:nrbrtx/xorg-hotkeys sudo apt-get update sudo apt-get dist-upgrade
So Ctrl + Shift keyboard layout switcher will work normally on MATE DE after applying patch from ArchLinux AUR "for freedesktop bug 865 (need to kick hotkeys on release, not press)".
Warranty disclaimer: packages were tested in
- 16.04 LTS with HWE (Unity, MATE, Xfce)
- 18.04 LTS (Cinnamon, KDE, MATE, Xfce)
- 18.10 (Cinnamon, KDE, MATE, Xfce)
- 19.04 (Cinnamon, KDE, MATE, Unity, Xfce).
- 19.10 (Cinnamon, KDE, MATE, Unity, Xfce)
- 20.04 LTS (Cinnamon, KDE, MATE, Unity, Xfce)
- 20.10 (Cinnamon, KDE, MATE, Unity, Xfce)
- 21.04 (Cinnamon, KDE, MATE, Xfce)
- 21.10 (Cinnamon, KDE, MATE, Xfce)
However other desktops may have issues even after applying the patch.
These packages do not fix problems for GNOME Shell (18.04 LTS, 18.10, 19.04, 19.10, 20.04 LTS, 20.10 and 21.04) and Unity (in 18.04 LTS and 18.10).
If you are interested you can participate in poll and discussion on community.ubuntu.com.
Solution 2:
I found a partial workaround based on other answers for using Ctrl+Shift and shortcuts for GNOME in Ubuntu 18.04:
-
Install GNOME Tweaks as proposed in N0rbert's anwser:
sudo apt install gnome-tweaks
then:
- run it;
- open "Keyboard & Mouse" tab;
- click "Additional Layout Options" button;
- instead of selecting
Ctrl+Shift
key combination in "Switching to another layout" of "Additional Layout Options" window simply untick all checkboxes:
-
Open "Settings" application from "Show applications" menu at the left bottom corner. Alternatively run a command in terminal:
gnome-control-center
then
- go to "Devices" > "Keyboard" tab;
- scroll to "Typing" group;
- set shortcuts for "Switch to next input source" and "Switch to previous input source" (an order of keys DOES MATTER!!!):
If setting
Ctrl+Shift
orShift+Ctrl
shortcuts is impossible using this dialog (as it was in my case), then you can change these parameters in an alternative way:-
install
dconf-editor
:sudo apt install dconf-editor
-
run it from terminal:
dconf-editor
go to
org
>gnome
>desktop
>wm
>keybindings
;- select
switch-input-source
orswitch-input-source-backward
; - switch off "Use default value" and input "Custom Value":
<Control>Shift_L
for changing layout withCtrl+Shift
or<Shift>Control_L
— for changing layout withShift+Ctrl
:
Another way is to use
gsettings set
console command as proposed here:gsettings set org.gnome.desktop.wm.keybindings \ switch-input-source "['<Control>Shift_L']"
A limitation of this solution is that an order of keys pressed is important. If you set Ctrl+Shift
to change keyboard layout then it will work only when you press Ctrl
key first, and then Shift
key. Pressing Shift
key first and Ctrl
after will not work in this case. But this fact allows to use shortcuts containing Shift
and Ctrl
keys combination in different applications , for example:
-
Shift+Ctrl+T
to open new tab in Terminal; -
Shift+Ctrl+E
to export image in Gimp; -
Shift+Ctrl+F
to open search dialog in WebStorm/PhpStorm.