I switch between Dvorak and QWERTY keyboard layouts and frequently find myself with mismatched layouts on my host operating system and a Linux virtual machine.

How can I easily switch the layout when I have the wrong layout set?

Note that I'm talking about the command-line-only system console here, not a terminal window in a GUI.


I found the solution to be to create the following aliases in my .bashrc file:

alias asdf="sudo loadkeys dvorak"
alias aoeu="sudo loadkeys us"

Now, when I find myself with the wrong layout, I type the same four keys on the home row to switch layouts.

The only issue I had with this was that it could be difficult to enter a password for the sudo command when the wrong layout is enabled. There are two solutions to this problem, but they may be a security issue in some environments:

  1. Use a strong-ish password comprised only of numbers, symbols, and the letters M and A (they're the same for both Dvorak and Qwerty).

  2. Set the suid bit on /usr/bin/loadkeys so it automatically runs as root (and you don't need to run it with sudo). I used the command sudo chmod u+s /usr/bin/loadkeys. Note: I needed to install the console-data package beforehand.

Edit: added excellent suid suggestion from ssmy.

  • 1
    Nice password workaround. Might be a security issue, but maybe loadkeys can be set suid? – ssmy Feb 8 '13 at 5:23
  • Yeah, my password suggestion would not cut mustard in a production environment. On my personal systems, I always disable SSH password access to force RSA key authentication, and so only type a password either for sudo or when on the system console. – Steve HHH Feb 8 '13 at 7:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.