I use three different layouts and looking code to change layout programmaticaly from .bashrc function.
-
3If you're using X: What about `setxkbmap`? – Marco Oct 30 '12 at 19:21
-
`.bashrc` is definitely not the right file for this. It's run when you start a shell, not when you log in. See [Alternative to .bashrc](http://unix.stackexchange.com/questions/3052/alternative-to-bashrc/3085#3085) – Gilles 'SO- stop being evil' Oct 31 '12 at 21:37
3 Answers
For example, to get the US layout (that is, by the way, excellent for programming; see this question).
In X, try setxkbmap -layout us
In the Linux console, add XKBLAYOUT="us" to /etc/default/keyboard; then run setupcon as superuser. Or, use dpkg-reconfigure keyboard-configuration (also as superuser). You could also use a different map in the console than in X by using KMAP; look in /etc/console-setup/.
This may require some fiddling; possibly, you'd like to write aliases and/or functions in your .bashrc for fast access. If you plan on switching back and forth, I've found that a compose key is a better solution. Unless, of course, you're writing in a totally different alphabet.
- 6,763
- 7
- 43
- 65
It is indeed strange that X11 doesn't provide a standard tool to switch to a given layout (when you define several with setxkbmap).
But I just found a tool that can do it: xkblayout-state
With it you can get/set the current layout, either by name or by position in your layout stack.
- 79,330
- 30
- 216
- 245
- 2,491
- 26
- 16
It may look hacky but it works like a charm:
setxkbmap -layout ru && setxkbmap -layout ru,us
setxkbmap -layout us && setxkbmap -layout us,ru
To force switch:
setxkbmap -layout ru && setxkbmap -layout us && setxkbmap -layout us,ru
You can program your loop if you need.
- 26
- 2