[Wine] Keyboard remapping (xmodmap) does not work in Warcraft III.

samyazza wineforum-user at winehq.org
Sat Nov 7 09:03:18 CST 2009


I want to run my Warcraft III with better inventory shortcuts. I'm on a laptop and I do not have a numpad, I have an Fn key I can use to access the numbers (actually hiding under Fn+Shift+key since Ubuntu 8.10) . This combination does nothing in Warcraft though, as if it wasn't getting any hint of my keyboard action. Pressing only FN+key does things though, like lower the vision angle and such, just as expected. To work this around and make things more comfortable for my playing I've written a small script to remap the numerical keys to other keys, using xev to retrieve their keycodes. The script looks like this:


Code:
xmodmap -e "keycode 10 = KP_7"
xmodmap -e "keycode 11 = KP_8"
xmodmap -e "keycode 12 = KP_4"
xmodmap -e "keycode 13 = KP_5"
xmodmap -e "keycode 14 = KP_1"
xmodmap -e "keycode 15 = KP_2"

wine 'Frozen Throne.exe' -opengl

xmodmap -e "keycode 10 = 1"
xmodmap -e "keycode 11 = 2"
xmodmap -e "keycode 12 = 3"
xmodmap -e "keycode 13 = 4"
xmodmap -e "keycode 14 = 5"
xmodmap -e "keycode 15 = 6"



Here's a sample xev output of pressing FN+shift+i:


Code:
KeyPress event, serial 31, synthetic NO, window 0x3c00001,
    root 0x13b, subw 0x0, time 9969781, (722,546), root:(726,571),
    state 0x2000, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 34, synthetic NO, window 0x3c00001,
    root 0x13b, subw 0x0, time 9969977, (722,546), root:(726,571),
    state 0x2001, keycode 84 (keysym 0xffb5, KP_5), same_screen YES,
    XLookupString gives 1 bytes: (35) "5"
    XmbLookupString gives 1 bytes: (35) "5"
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x3c00001,
    root 0x13b, subw 0x0, time 9970055, (722,546), root:(726,571),
    state 0x2001, keycode 84 (keysym 0xffb5, KP_5), same_screen YES,
    XLookupString gives 1 bytes: (35) "5"
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x3c00001,
    root 0x13b, subw 0x0, time 9970178, (722,546), root:(726,571),
    state 0x2001, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False




Running Warcraft with this script doesn't change anything though, pressing the keys 1-6 has no effect and I see the following on the console:



Code:

err:ole:CoCreateInstance apartment not initialised
fixme:advapi:SetSecurityInfo stub
fixme:win:EnumDisplayDevicesW ((null),0,0x33f270,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x33f608,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x33f640,0x00000000), stub!
fixme:dsalsa:IDsDriverBufferImpl_SetVolumePan (0x15e3c8,0x1625c8): stub
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0x4150415, 0000: semi-stub!
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0x4150415, 0000: semi-stub!
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0x4150415, 0000: semi-stub!
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0x4150415, 0000: semi-stub!
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0x4150415, 0000: semi-stub!
fixme:keyboard:X11DRV_ActivateKeyboardLayout 0x4150415, 0000: semi-stub!




The keyboard fixmes appear when I launch a new game. I'm confused with what is going on. 

OS: Ubuntu 8.10
Wine version: wine-1.1.32

I know there's a bug with the whole keyboard controlled mouse cursor thingy. I have that turned off, just as it should be, so it's not the issue.

Please help me remap the numpad keys to 1-6 and make wine understand the remapping.







More information about the wine-users mailing list