This has been asked countless times, so I'll try to be brief.
I have two input layouts, Ukrainian and English, and want:
- to use Caps Lock for fast switching;
- not have any delays imposed, I'm a fast typer;
- not have mode errors:
- (any number of) CapsLock sets English,
- (any number of) ShiftCapsLock sets Ukrainian;
- see the current layout in the standard widget.
I've already tried three (!) GUIs to configure this, the Gnome Settings, the gnome-tweak-tool
, the dconf-editor
/gsettings
. Nothing works. Tweaks
crashes randomly.
Enough homework done
I've asked this myself 4 years ago for 14.04 LTS. Since then, that UI popup appeared and all broke. I can now easily configure stateful CapsLock toggle, but even then, it goes with that irritating delay. Basically unusable at times when I need language switched 4-5 times per sentence.
This thread suggests caps:none
XKB option as a bug workaround. I've tried that, both with gsettings
CLI and dconf-editor
, and in combinations with grp:shift_caps_switch
XKB option. No dice. Something trumps those core XKB features as it seems.
This thread offers caps:menu
XKB option as a hack to be able to bind CapsLock in Gnome Settings
→ Devices → Keyboard. It kinda works, but A) it gives cyclic/stateful switching; B) I have to wait a decent timeout on every switch.
This thread asks exactly what I need, yet it's unanswered and even worse: closed as duplicate of two other questions (???) none of which are the same, and none of which give me a working solution. What's wrong with you guys?
There's another exact match — alas, unanswered as well!
In Ubuntu 18.04, by default there is a option to choose Caps_Lock and Shift+Caps_Lock to achieve the behavior we are looking for, is in
gnome-tweaks
. But this is not working and could not get the reason why.I could manage to achieve this behavior by the below workaround.
See this link for a 20Sec Video. https://imgur.com/QNdrVqa
first check the below commands in terminal whether they are changing the input language.
and
well, they are working.
we need to bind these commands to key presses of Caps_Lock and Shift+Caps_Lock
can achieve this with
xbindkeys
if xbindkeys is not yet installed install it bysudo apt install xbindkeys
.xbindkeysrc
in $HOME foldertouch ~/.xbindkeysrc
run
xbindkeys --key
once the white box appears press the Caps_Lock button, do it for Shift button also and copy the keycodes/ids as show below.xbindkeysrc
gedit ~/.xbindkeysrc
and edit the file like below based on the results of above stepsChange the values in below content according to the results you got in step 2 above. Content:
There is a bug report you can subscribe to:
The bug report reads:
Bug Workarounds
The bug is currently on the "Wishlist". These workarounds are proposed:
Workaround 1
Found a workaround for this bug:
Workaround 2
Another way to do this: 1. Install GNOME Tweaks (gnome-tweak-tool) 2. Open the Tweaks app 3. Switch to the Keyboard & Mouse panel 4. Click Additional Layout Options 5. Use the "Switching to another layout" section
Subscribe to bug report
I would recommend subscribing to the bug report and adding your own experiences. The more people subscribing to the bug report, the faster the solution comes (usually).