I am trying to run a calculator simulator called kArmTI_v40.exe (see http://www.omnimaga.org/index.php?topic=13988.0). I have a Lenovo Thinkpad E330 laptop. When I run kArmTI_v40.exe under Wine 1.4.1, some keystrokes such as left and right parenthesis are not being recognised by the program, although the GUI shows that the shift key is being held down. The ( and ) characters are on top of the 9 and 0 keys.
I have also installed Lubuntu 13.04 desktop, Wine 1.4.1 into a VirtualBox on the laptop, and copied the kArmTI_v40.exe and associated filed (using rsync) into the virtual machine. When kArmTI_v40.exe runs in the virtual machine on the laptop, the parentheses keys work fine.
Note that the parentheses keys work fine in Notepad, just not in this program.
Can anybody suggest things that I could do to try and find out what the cause of my problem is, and how I could fix it? Any help greatly appreciated! [ more debug information below ]
Cheers,
Warren
Setxkbmap
Output from setxkbmap -query; setxkbmap -print (physical laptop and the VM):
Code: Select all
rules: evdev
model: pc105
layout: us
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)" };
xkb_geometry { include "pc(pc105)" };
};
Code: Select all
WINEDEBUG=+key,+keyboard wine kArmTI_v40.exe > key.log 2>&1
On the VM where the parentheses keys work:
Code: Select all
trace:key:X11DRV_KeyEvent KeyPress : keysym=ffe1 (Shift_L), # of chars=0 / ""
trace:key:EVENT_event_to_vkey e->keycode = 50
trace:key:X11DRV_KeyEvent keycode 50 converted to vkey 0xA0
trace:key:X11DRV_KeyEvent bScan = 0x2a.
trace:key:X11DRV_send_keyboard_input hwnd 0x10072 vkey=00a0 scan=002a flags=0000
trace:keyboard:MapVirtualKeyExW (10, 0, 0xc090c09)
trace:keyboard:X11DRV_MapVirtualKeyEx wCode=0x10, wMapType=0, hkl 0xc090c09
trace:keyboard:X11DRV_MapVirtualKeyEx returning 0x2a.
trace:key:X11DRV_ToUnicodeEx ShiftMask = 0001
trace:key:X11DRV_ToUnicodeEx AltGrMask = 0000
trace:key:X11DRV_ToUnicodeEx (0010, 002A) : faked state = 0x0001
warn:key:X11DRV_ToUnicodeEx Unknown virtual key 10 !!!
trace:key:X11DRV_KeyEvent type 2, window 2c00001, state 0x0001, keycode 18
trace:key:X11DRV_KeyEvent XmbLookupString needs 1 byte(s)
trace:key:X11DRV_KeyEvent nbyte = 1, status 4
trace:key:X11DRV_KeyEvent KeyPress : keysym=28 (parenleft), # of chars=1 / "("
trace:key:EVENT_event_to_vkey e->keycode = 18
trace:key:X11DRV_KeyEvent keycode 18 converted to vkey 0x39
trace:key:X11DRV_KeyEvent bScan = 0x0a.
trace:key:X11DRV_send_keyboard_input hwnd 0x10072 vkey=0039 scan=000a flags=0000
trace:keyboard:MapVirtualKeyExW (39, 0, 0xc090c09)
trace:keyboard:X11DRV_MapVirtualKeyEx wCode=0x39, wMapType=0, hkl 0xc090c09
trace:keyboard:X11DRV_MapVirtualKeyEx returning 0xa.
trace:key:X11DRV_ToUnicodeEx ShiftMask = 0001
trace:key:X11DRV_ToUnicodeEx AltGrMask = 0000
trace:key:X11DRV_ToUnicodeEx (0039, 000A) : faked state = 0x0001
trace:key:EVENT_event_to_vkey e->keycode = 18
trace:key:X11DRV_ToUnicodeEx Found keycode 18
trace:key:X11DRV_ToUnicodeEx type 2, window 2c00001, state 0x0001, keycode 18
trace:key:X11DRV_ToUnicodeEx XmbLookupString needs 1 byte(s)
trace:key:X11DRV_ToUnicodeEx nbyte = 1, status 0x4
trace:key:X11DRV_ToUnicodeEx KeyPress : keysym=28 (parenleft), # of chars=1 / "("
trace:key:X11DRV_ToUnicodeEx Translating char 0x28 to unicode
trace:key:X11DRV_ToUnicodeEx returning 1 with L"("
trace:key:X11DRV_KeyEvent type 3, window 2c00001, state 0x0001, keycode 18
trace:key:X11DRV_KeyEvent nbyte = 1, status 0
trace:key:X11DRV_KeyEvent KeyRelease : keysym=28 (parenleft), # of chars=1 / "("
trace:key:EVENT_event_to_vkey e->keycode = 18
trace:key:X11DRV_KeyEvent keycode 18 converted to vkey 0x39
trace:key:X11DRV_KeyEvent bScan = 0x0a.
trace:key:X11DRV_send_keyboard_input hwnd 0x10072 vkey=0039 scan=000a flags=0002
trace:keyboard:MapVirtualKeyExW (39, 0, 0xc090c09)
trace:keyboard:X11DRV_MapVirtualKeyEx wCode=0x39, wMapType=0, hkl 0xc090c09
trace:keyboard:X11DRV_MapVirtualKeyEx returning 0xa.
trace:key:X11DRV_ToUnicodeEx ShiftMask = 0001
trace:key:X11DRV_ToUnicodeEx AltGrMask = 0000
trace:key:X11DRV_ToUnicodeEx (0039, 000A) : faked state = 0x0001
trace:key:EVENT_event_to_vkey e->keycode = 18
trace:key:X11DRV_ToUnicodeEx Found keycode 18
trace:key:X11DRV_ToUnicodeEx type 2, window 2c00001, state 0x0001, keycode 18
trace:key:X11DRV_ToUnicodeEx XmbLookupString needs 1 byte(s)
trace:key:X11DRV_ToUnicodeEx nbyte = 1, status 0x4
trace:key:X11DRV_ToUnicodeEx KeyPress : keysym=28 (parenleft), # of chars=1 / "("
trace:key:X11DRV_ToUnicodeEx Translating char 0x28 to unicode
trace:key:X11DRV_ToUnicodeEx returning 1 with L"("
On the physical laptop where the parentheses keys don't work:
Code: Select all
trace:key:X11DRV_KeyEvent type 2, window 3400001, state 0x0000, keycode 50
trace:key:X11DRV_KeyEvent XmbLookupString needs 0 byte(s)
trace:key:X11DRV_KeyEvent nbyte = 0, status 3
trace:key:X11DRV_KeyEvent KeyPress : keysym=ffe1 (Shift_L), # of chars=0 / ""
trace:key:EVENT_event_to_vkey e->keycode = 50
trace:key:X11DRV_KeyEvent keycode 50 converted to vkey 0xA0
trace:key:X11DRV_KeyEvent bScan = 0x2a.
trace:key:X11DRV_send_keyboard_input hwnd 0x10072 vkey=00a0 scan=002a flags=0000
trace:keyboard:MapVirtualKeyExW (10, 0, 0xc090c09)
trace:keyboard:X11DRV_MapVirtualKeyEx wCode=0x10, wMapType=0, hkl 0xc090c09
trace:keyboard:X11DRV_MapVirtualKeyEx returning 0x2a.
trace:key:X11DRV_ToUnicodeEx ShiftMask = 0001
trace:key:X11DRV_ToUnicodeEx AltGrMask = 0000
trace:key:X11DRV_ToUnicodeEx (0010, 002A) : faked state = 0x0001
warn:key:X11DRV_ToUnicodeEx Unknown virtual key 10 !!!
trace:key:X11DRV_KeyEvent type 2, window 3400001, state 0x0001, keycode 18
trace:key:X11DRV_KeyEvent XmbLookupString needs 1 byte(s)
trace:key:X11DRV_KeyEvent nbyte = 1, status 4
trace:key:X11DRV_KeyEvent KeyPress : keysym=28 (parenleft), # of chars=1 / "("
trace:key:EVENT_event_to_vkey e->keycode = 18
trace:key:X11DRV_KeyEvent keycode 18 converted to vkey 0x39
trace:key:X11DRV_KeyEvent bScan = 0x0a.
trace:key:X11DRV_send_keyboard_input hwnd 0x10072 vkey=0039 scan=000a flags=0000
trace:keyboard:MapVirtualKeyExW (39, 0, 0xc090c09)
trace:keyboard:X11DRV_MapVirtualKeyEx wCode=0x39, wMapType=0, hkl 0xc090c09
trace:keyboard:X11DRV_MapVirtualKeyEx returning 0xa.
trace:key:X11DRV_ToUnicodeEx ShiftMask = 0001
trace:key:X11DRV_ToUnicodeEx AltGrMask = 0000
trace:key:X11DRV_ToUnicodeEx (0039, 000A) : faked state = 0x0001
trace:key:EVENT_event_to_vkey e->keycode = 18
trace:key:X11DRV_ToUnicodeEx Found keycode 18
trace:key:X11DRV_ToUnicodeEx type 2, window 3400001, state 0x0001, keycode 18
trace:key:X11DRV_ToUnicodeEx XmbLookupString needs 1 byte(s)
trace:key:X11DRV_ToUnicodeEx nbyte = 1, status 0x4
trace:key:X11DRV_ToUnicodeEx KeyPress : keysym=28 (parenleft), # of chars=1 / "("
trace:key:X11DRV_ToUnicodeEx Translating char 0x28 to unicode
trace:key:X11DRV_ToUnicodeEx returning 1 with L"("
trace:key:X11DRV_KeyEvent type 3, window 3400001, state 0x0001, keycode 18
trace:key:X11DRV_KeyEvent nbyte = 1, status 0
trace:key:X11DRV_KeyEvent KeyRelease : keysym=28 (parenleft), # of chars=1 / "("
trace:key:EVENT_event_to_vkey e->keycode = 18
trace:key:X11DRV_KeyEvent keycode 18 converted to vkey 0x39
trace:key:X11DRV_KeyEvent bScan = 0x0a.
trace:key:X11DRV_send_keyboard_input hwnd 0x10072 vkey=0039 scan=000a flags=0002
trace:keyboard:MapVirtualKeyExW (39, 0, 0xc090c09)
trace:keyboard:X11DRV_MapVirtualKeyEx wCode=0x39, wMapType=0, hkl 0xc090c09
trace:keyboard:X11DRV_MapVirtualKeyEx returning 0xa.
trace:key:X11DRV_ToUnicodeEx ShiftMask = 0001
trace:key:X11DRV_ToUnicodeEx AltGrMask = 0000
trace:key:X11DRV_ToUnicodeEx (0039, 000A) : faked state = 0x0001
trace:key:EVENT_event_to_vkey e->keycode = 18
trace:key:X11DRV_ToUnicodeEx Found keycode 18
trace:key:X11DRV_ToUnicodeEx type 2, window 3400001, state 0x0001, keycode 18
trace:key:X11DRV_ToUnicodeEx XmbLookupString needs 1 byte(s)
trace:key:X11DRV_ToUnicodeEx nbyte = 1, status 0x4
trace:key:X11DRV_ToUnicodeEx KeyPress : keysym=28 (parenleft), # of chars=1 / "("
trace:key:X11DRV_ToUnicodeEx Translating char 0x28 to unicode
trace:key:X11DRV_ToUnicodeEx returning 1 with L"("
Spy++
I captured the Windows keyboard events for both the physical laptop and Wine, and the VM and Wine. First up are the events on the VM where parentheses work:
Code: Select all
00200246 P WM_KEYDOWN nVirtKey:'2' cRepeat:1 ScanCode:03 fExtended:0 fAltDown:0 fRepeat:0 fUp:0
001C0266 S WM_KEYDOWN nVirtKey:'2' cRepeat:1 ScanCode:03 fExtended:0 fAltDown:0 fRepeat:0 fUp:0
001C0266 R WM_KEYDOWN
00200246 P WM_KEYUP nVirtKey:'2' cRepeat:1 ScanCode:03 fExtended:0 fAltDown:0 fRepeat:1 fUp:1
001C0266 S WM_KEYUP nVirtKey:'2' cRepeat:1 ScanCode:03 fExtended:0 fAltDown:0 fRepeat:1 fUp:1
001C0266 R WM_KEYUP
00200246 P WM_KEYDOWN nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
001C0266 S WM_KEYDOWN nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
001C0266 R WM_KEYDOWN
00200246 P WM_KEYDOWN nVirtKey:VK_OEM_PLUS cRepeat:1 ScanCode:0D fExtended:0 fAltDown:0 fRepeat:0 fUp:0
001C0266 S WM_KEYDOWN nVirtKey:VK_OEM_PLUS cRepeat:1 ScanCode:0D fExtended:0 fAltDown:0 fRepeat:0 fUp:0
001C0266 R WM_KEYDOWN
00200246 P WM_KEYUP nVirtKey:VK_OEM_PLUS cRepeat:1 ScanCode:0D fExtended:0 fAltDown:0 fRepeat:1 fUp:1
001C0266 S WM_KEYUP nVirtKey:VK_OEM_PLUS cRepeat:1 ScanCode:0D fExtended:0 fAltDown:0 fRepeat:1 fUp:1
001C0266 R WM_KEYUP
00200246 P WM_KEYUP nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
001C0266 S WM_KEYUP nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
001C0266 R WM_KEYUP
00200246 P WM_KEYDOWN nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
001C0266 S WM_KEYDOWN nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
001C0266 R WM_KEYDOWN
00200246 P WM_KEYUP nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
001C0266 S WM_KEYUP nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
001C0266 R WM_KEYUP
00200246 P WM_KEYDOWN nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
001C0266 S WM_KEYDOWN nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
001C0266 R WM_KEYDOWN
00200246 P WM_KEYDOWN nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
001C0266 S WM_KEYDOWN nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
001C0266 R WM_KEYDOWN
00200246 P WM_KEYUP nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
001C0266 S WM_KEYUP nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
001C0266 R WM_KEYUP
00200246 P WM_KEYUP nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
001C0266 S WM_KEYUP nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
001C0266 R WM_KEYUP
And here is the log on the physical laptop where the parentheses don't work. Note the extra events:
Code: Select all
00010078 P WM_KEYDOWN nVirtKey:'2' cRepeat:1 ScanCode:03 fExtended:0 fAltDown:0 fRepeat:0 fUp:0
00010072 S WM_KEYDOWN nVirtKey:'2' cRepeat:1 ScanCode:03 fExtended:0 fAltDown:0 fRepeat:0 fUp:0
00010072 R WM_KEYDOWN
00010072 R WM_KEYDOWN
00010072 R WM_KEYDOWN
00010078 P WM_KEYUP nVirtKey:'2' cRepeat:1 ScanCode:03 fExtended:0 fAltDown:0 fRepeat:1 fUp:1
00010072 S WM_KEYUP nVirtKey:'2' cRepeat:1 ScanCode:03 fExtended:0 fAltDown:0 fRepeat:1 fUp:1
00010072 R WM_KEYUP
00010072 R WM_KEYUP
00010072 R WM_KEYUP
00010078 P WM_KEYDOWN nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
00010072 S WM_KEYDOWN nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
00010072 R WM_KEYDOWN
00010072 R WM_KEYDOWN
00010072 R WM_KEYDOWN
00010078 P WM_KEYDOWN nVirtKey:VK_OEM_PLUS cRepeat:1 ScanCode:0D fExtended:0 fAltDown:0 fRepeat:0 fUp:0
00010072 S WM_KEYDOWN nVirtKey:VK_OEM_PLUS cRepeat:1 ScanCode:0D fExtended:0 fAltDown:0 fRepeat:0 fUp:0
00010072 R WM_KEYDOWN
00010072 R WM_KEYDOWN
00010072 R WM_KEYDOWN
00010078 P WM_KEYUP nVirtKey:VK_OEM_PLUS cRepeat:1 ScanCode:0D fExtended:0 fAltDown:0 fRepeat:1 fUp:1
00010072 S WM_KEYUP nVirtKey:VK_OEM_PLUS cRepeat:1 ScanCode:0D fExtended:0 fAltDown:0 fRepeat:1 fUp:1
00010072 R WM_KEYUP
00010072 R WM_KEYUP
00010072 R WM_KEYUP
00010078 P WM_KEYUP nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
00010072 S WM_KEYUP nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
00010072 R WM_KEYUP
00010072 R WM_KEYUP
00010072 R WM_KEYUP
00010078 P WM_KEYDOWN nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
00010072 S WM_KEYDOWN nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
00010072 R WM_KEYDOWN
00010072 R WM_KEYDOWN
00010072 R WM_KEYDOWN
00010078 P WM_KEYUP nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
00010072 S WM_KEYUP nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
00010072 R WM_KEYUP
00010072 R WM_KEYUP
00010072 R WM_KEYUP
00010078 P WM_KEYDOWN nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
00010072 S WM_KEYDOWN nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
00010072 R WM_KEYDOWN
00010072 R WM_KEYDOWN
00010072 R WM_KEYDOWN
00010078 P WM_KEYDOWN nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
00010072 S WM_KEYDOWN nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:0 fUp:0
00010072 R WM_KEYDOWN
00010072 R WM_KEYDOWN
00010072 R WM_KEYDOWN
00010078 P WM_KEYUP nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
00010072 S WM_KEYUP nVirtKey:'9' cRepeat:1 ScanCode:0A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
00010072 R WM_KEYUP
00010072 R WM_KEYUP
00010072 R WM_KEYUP
00010078 P WM_KEYUP nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
00010072 S WM_KEYUP nVirtKey:VK_SHIFT cRepeat:1 ScanCode:2A fExtended:0 fAltDown:0 fRepeat:1 fUp:1
00010072 R WM_KEYUP
00010072 R WM_KEYUP
00010072 R WM_KEYUP