Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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.

share|improve this question
    
This might also be helpful superuser.com/questions/598405/… –  Liam William Jun 1 '13 at 19:15
add comment

1 Answer

up vote 2 down vote accepted

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.

share|improve this answer
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
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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