I've got some games running in Wine, but I can't figure out how to change the keyboard layout. By default, I use the dvorak layout in Ubuntu, which isn't very friendly for most games. I can change it back to QWERTY in Ubuntu, but when I fire up a game, it stays with my default dvorak. How can I change to QWERTY inside my wine application?
4 Answers
A lot of wine programs use the X keyboard layout instead of the window manager's layout. You have to change it by running
setxkbmap usThen change back with
setxkbmap us dvorak In case someone has multiple keyboard layouts - this solution worked for me.
I have two keyboard layouts: English (us) and Ukrainian (uk). The first one was set as default in system settings. However, in Wine games the letter keys (q,w,e,r,t,y,etc.) didn't work at all.
Based on Alex's answer, I found the way to determine my current X keyboard layout settings:
setxkbmap -vIt showed me the following:
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete+numpad(microsoft)
compat: complete
symbols: pc+ua+us:2+inet(evdev)+group(alt_shift_toggle)
geometry: pc(pc101)I noticed that the symbols line has ua (not us) on the first place. Assuming that Wine always uses the first specified layout, I just needed to change the layout precedence:
setxkbmap us,uaAnd it worked. However, after reboot it was reset back to its default state. Thus, I have to do it each time after boot. I'll try to find a way to store those settings by default.
1Who use different keyboard layouts just need open settings on ubuntu -> language settings and plase English layout top on list. P.S. I'm sorry, I did it on gui, dont know terminal command ;-)
1In the keyboard control panel, you can configure multiple keyboard layouts from the Layouts tab. Click on Options... and expand the Key(s) to change layout section. Pick the key combo you prefer and you should have an easy way to switch layouts.
If the Separate layout for each window checkbox is checked in the main keyboard control panel, then each window should remember which layout they are using separately rather than it being a global setting.