Portál AbcLinuxu, 7. května 2025 09:57
Zdravim , do wine-1.5.20 sem si nainstaloval tuto stařičkou hru , nastavil , spustil a vše funguje jak má až na jednu velmi důležitou věc a to klávesnice.
Pro velení jednotce se používají příkazy zadávané pomocí kláves (ěščřžýáíé) teda ve hře mají fungovat jako 1-0 . No ale ve hře klávesi nereagují ať si nastavím jakoukoliv klávesnici. Ve hře nelze použít numerická klávesnice neb má vlastní funkce. Ovládání ěščřžýáíé nefunguje a nelze jej přemapovat. Ve windows to normálně funguje.
Poradíte nějaký parametr pro wine , Kde4 či Xka pro to aby to fungovalo jako ve Win ?
Na google jsem hledal ale nic o klávesnici vs wine vs resistance nenašel.
Děkuji za rady.
To sem skoušel jako první a žádná změna.
Tak sem vyzkoušel nového uživatele celého v EN a je to stejné.
Funguje pouze klávesa 1!+ a od dvojky k nule už ne. Vyzkoušel sem i downgradovat wine a je to stále stejné. :(
trace:key:X11DRV_KeyEvent type 2, window 4800002, state 0x0010, keycode 68
trace:key:X11DRV_KeyEvent XmbLookupString needs 0 byte(s)
trace:key:X11DRV_KeyEvent nbyte = 0, status 3
trace:key:X11DRV_KeyEvent KeyPress : keysym=ffbf (F2), # of chars=0 / ""
trace:key:EVENT_event_to_vkey e->keycode = 68
trace:key:X11DRV_KeyEvent keycode 68 converted to vkey 0x71 scan 3c
trace:keyboard:update_lock_state Adjusting NumLock state (00)
trace:key:X11DRV_send_keyboard_input hwnd 0x20026 vkey=0090 scan=0045 flags=0001
trace:key:X11DRV_send_keyboard_input hwnd 0x20026 vkey=0090 scan=0045 flags=0003
trace:key:X11DRV_send_keyboard_input hwnd 0x20026 vkey=0071 scan=003c flags=0000
trace:keyboard:MapVirtualKeyExW (71, 2, 0x4050405)
trace:keyboard:X11DRV_MapVirtualKeyEx wCode=0x71, wMapType=2, hkl 0x4050405
trace:key:EVENT_event_to_vkey e->keycode = 68
trace:keyboard:X11DRV_MapVirtualKeyEx Found keycode 68
trace:keyboard:X11DRV_MapVirtualKeyEx returning 0x0.
trace:key:TranslateMessage Translating key VK_NUMLOCK (0090), scancode 0145
trace:key:X11DRV_ToUnicodeEx NumLockMask = 0010
trace:key:X11DRV_ToUnicodeEx AltGrMask = 0010
trace:key:X11DRV_ToUnicodeEx (0090, 0145) : faked state = 0x0010
trace:key:EVENT_event_to_vkey e->keycode = 77
trace:key:X11DRV_ToUnicodeEx Found keycode 77
trace:key:X11DRV_ToUnicodeEx type 2, window 4800002, state 0x0010, keycode 77
trace:key:X11DRV_ToUnicodeEx XmbLookupString needs 0 byte(s)
trace:key:X11DRV_ToUnicodeEx nbyte = 0, status 0x3
trace:key:X11DRV_ToUnicodeEx KeyPress : keysym=ff7f (Num_Lock), # of chars=0 / ""
trace:keyboard:KEYBOARD_MapDeadKeysym no character for dead keysym 0x0000ff7f
trace:key:X11DRV_ToUnicodeEx returning 0 with L""
trace:key:TranslateMessage Translating key VK_F2 (0071), scancode 003c
trace:key:X11DRV_ToUnicodeEx NumLockMask = 0010
trace:key:X11DRV_ToUnicodeEx AltGrMask = 0010
trace:key:X11DRV_ToUnicodeEx (0071, 003C) : faked state = 0x0010
trace:key:EVENT_event_to_vkey e->keycode = 68
trace:key:X11DRV_ToUnicodeEx Found keycode 68
trace:key:X11DRV_ToUnicodeEx type 2, window 4800002, state 0x0010, keycode 68
trace:key:X11DRV_ToUnicodeEx XmbLookupString needs 0 byte(s)
trace:key:X11DRV_ToUnicodeEx nbyte = 0, status 0x3
trace:key:X11DRV_ToUnicodeEx KeyPress : keysym=ffbf (F2), # of chars=0 / ""
trace:keyboard:KEYBOARD_MapDeadKeysym no character for dead keysym 0x0000ffbf
trace:key:X11DRV_ToUnicodeEx returning 0 with L""
trace:key:X11DRV_KeyEvent type 3, window 4800002, state 0x0010, keycode 68
trace:key:X11DRV_KeyEvent nbyte = 0, status 0
trace:key:X11DRV_KeyEvent KeyRelease : keysym=ffbf (F2), # of chars=0 / ""
trace:key:EVENT_event_to_vkey e->keycode = 68
trace:key:X11DRV_KeyEvent keycode 68 converted to vkey 0x71 scan 3c
trace:key:X11DRV_send_keyboard_input hwnd 0x20026 vkey=0071 scan=003c flags=0002
trace:keyboard:MapVirtualKeyExW (71, 2, 0x4050405)
trace:keyboard:X11DRV_MapVirtualKeyEx wCode=0x71, wMapType=2, hkl 0x4050405
trace:key:EVENT_event_to_vkey e->keycode = 68
trace:keyboard:X11DRV_MapVirtualKeyEx Found keycode 68
trace:keyboard:X11DRV_MapVirtualKeyEx returning 0x0.
trace:key:X11DRV_KeyEvent type 2, window 4800002, state 0x0010, keycode 11
trace:key:X11DRV_KeyEvent XmbLookupString needs 2 byte(s)
trace:key:X11DRV_KeyEvent nbyte = 2, status 4
trace:key:X11DRV_KeyEvent KeyPress : keysym=1ec (ecaron), # of chars=2 / "\xc4\x9b"
trace:key:EVENT_event_to_vkey e->keycode = 11
trace:key:X11DRV_KeyEvent keycode 11 converted to vkey 0x32 scan 60
trace:key:X11DRV_send_keyboard_input hwnd 0x20026 vkey=0032 scan=0060 flags=0000
trace:keyboard:MapVirtualKeyExW (32, 2, 0x4050405)
trace:keyboard:X11DRV_MapVirtualKeyEx wCode=0x32, wMapType=2, hkl 0x4050405
trace:key:EVENT_event_to_vkey e->keycode = 11
trace:keyboard:X11DRV_MapVirtualKeyEx Found keycode 11
trace:keyboard:X11DRV_MapVirtualKeyEx returning 0x11a.
trace:key:TranslateMessage Translating key VK_2 (0032), scancode 0060
trace:key:X11DRV_ToUnicodeEx NumLockMask = 0010
trace:key:X11DRV_ToUnicodeEx AltGrMask = 0010
trace:key:X11DRV_ToUnicodeEx (0032, 0060) : faked state = 0x0010
trace:key:EVENT_event_to_vkey e->keycode = 11
trace:key:X11DRV_ToUnicodeEx Found keycode 11
trace:key:X11DRV_ToUnicodeEx type 2, window 4800002, state 0x0010, keycode 11
trace:key:X11DRV_ToUnicodeEx XmbLookupString needs 2 byte(s)
trace:key:X11DRV_ToUnicodeEx nbyte = 2, status 0x4
trace:key:X11DRV_ToUnicodeEx KeyPress : keysym=1ec (ecaron), # of chars=2 / "\xc4\x9b"
trace:key:X11DRV_ToUnicodeEx Translating char 0xc4 to unicode
trace:key:X11DRV_ToUnicodeEx returning 1 with L"\011b"
trace:key:TranslateMessage 1 -> PostMessageW(0x20026,WM_CHAR,011b,00600001)
trace:key:X11DRV_KeyEvent type 3, window 4800002, state 0x0010, keycode 11
trace:key:X11DRV_KeyEvent nbyte = 2, status 0
trace:key:X11DRV_KeyEvent KeyRelease : keysym=1ec (ecaron), # of chars=2 / "\xc4\x9b"
trace:key:EVENT_event_to_vkey e->keycode = 11
trace:key:X11DRV_KeyEvent keycode 11 converted to vkey 0x32 scan 60
trace:key:X11DRV_send_keyboard_input hwnd 0x20026 vkey=0032 scan=0060 flags=0002
trace:keyboard:MapVirtualKeyExW (32, 2, 0x4050405)
trace:keyboard:X11DRV_MapVirtualKeyEx wCode=0x32, wMapType=2, hkl 0x4050405
trace:key:EVENT_event_to_vkey e->keycode = 11
trace:keyboard:X11DRV_MapVirtualKeyEx Found keycode 11
trace:keyboard:X11DRV_MapVirtualKeyEx returning 0x11a.
trace:key:X11DRV_KeyEvent type 2, window 4800002, state 0x0010, keycode 64
trace:key:X11DRV_KeyEvent XmbLookupString needs 0 byte(s)
trace:key:X11DRV_KeyEvent nbyte = 0, status 3
trace:key:X11DRV_KeyEvent KeyPress : keysym=ffe9 (Alt_L), # of chars=0 / ""
trace:key:EVENT_event_to_vkey e->keycode = 64
trace:key:X11DRV_KeyEvent keycode 64 converted to vkey 0xA4 scan 38
trace:key:X11DRV_send_keyboard_input hwnd 0x20026 vkey=00a4 scan=0038 flags=0000
trace:keyboard:MapVirtualKeyExW (A4, 2, 0x4050405)
trace:keyboard:X11DRV_MapVirtualKeyEx wCode=0xa4, wMapType=2, hkl 0x4050405
trace:key:EVENT_event_to_vkey e->keycode = 64
trace:keyboard:X11DRV_MapVirtualKeyEx Found keycode 64
trace:keyboard:X11DRV_MapVirtualKeyEx returning 0x0.
trace:key:TranslateMessage Translating key VK_MENU (0012), scancode 2038
trace:key:X11DRV_ToUnicodeEx NumLockMask = 0010
trace:key:X11DRV_ToUnicodeEx AltGrMask = 0010
trace:key:X11DRV_ToUnicodeEx (0012, 2038) : faked state = 0x0010
warn:key:X11DRV_ToUnicodeEx Unknown virtual key 12 !!!
Pustil sem hru , klácesou F2 sem ozačil hráče a klávesou 2 chtěl zadat příkaz ale to nešlo tak sem dal ALT+F4 a hru vyp. tady je to TRACE wine
WINEDEBUG=+key,+keyboard wine
No ale nic mi to neříká a je tam toho nějak moc.
trace:key:EVENT_event_to_vkey e->keycode = 11 trace:key:X11DRV_KeyEvent keycode 11 converted to vkey 0x32 scan 60 trace:key:X11DRV_send_keyboard_input hwnd 0x20026 vkey=0032 scan=0060 flags=0000 trace:keyboard:MapVirtualKeyExW (32, 2, 0x4050405) trace:keyboard:X11DRV_MapVirtualKeyEx wCode=0x32, wMapType=2, hkl 0x4050405 trace:key:EVENT_event_to_vkey e->keycode = 11 trace:keyboard:X11DRV_MapVirtualKeyEx Found keycode 11 trace:keyboard:X11DRV_MapVirtualKeyEx returning 0x11a. trace:key:TranslateMessage Translating key VK_2 (0032), scancode 0060 trace:key:X11DRV_ToUnicodeEx NumLockMask = 0010 trace:key:X11DRV_ToUnicodeEx AltGrMask = 0010 trace:key:X11DRV_ToUnicodeEx (0032, 0060) : faked state = 0x0010 trace:key:EVENT_event_to_vkey e->keycode = 11 trace:key:X11DRV_ToUnicodeEx Found keycode 11 trace:key:X11DRV_ToUnicodeEx type 2, window 4800002, state 0x0010, keycode 11 trace:key:X11DRV_ToUnicodeEx XmbLookupString needs 2 byte(s) trace:key:X11DRV_ToUnicodeEx nbyte = 2, status 0x4 trace:key:X11DRV_ToUnicodeEx KeyPress : keysym=1ec (ecaron), # of chars=2 / "\xc4\x9b" trace:key:X11DRV_ToUnicodeEx Translating char 0xc4 to unicode trace:key:X11DRV_ToUnicodeEx returning 1 with L"\011b" trace:key:TranslateMessage 1 -> PostMessageW(0x20026,WM_CHAR,011b,00600001) trace:key:X11DRV_KeyEvent type 3, window 4800002, state 0x0010, keycode 11 trace:key:X11DRV_KeyEvent nbyte = 2, status 0 trace:key:X11DRV_KeyEvent KeyRelease : keysym=1ec (ecaron), # of chars=2 / "\xc4\x9b" trace:key:EVENT_event_to_vkey e->keycode = 11což bych interpretoval tak, že se zachytila klávesa (11) a zkonvertovala na znak
vkey (0x32) scan 60
, ale kterým klávesám odpovídají, které keykody nevím. vkey (0x32) v hexa odpovídá znaku 2,
ale pak jsou tam nějaké další transformace do UNICODE (keysym=1ec (ecaron), # of chars=2 / "\xc4\x9b"
) což vidím jako příčinu. Pořád to prostředí vlastně pracuje s českou klávesnicí a dělá odpovídající transformace.
setxkbmap -print xkb_keymap { xkb_keycodes { include "evdev+aliases(qwertz)" }; xkb_types { include "complete" }; xkb_compat { include "complete" }; xkb_symbols { include "pc+cz(qwerty)+us:2+inet(evdev)" }; xkb_geometry { include "pc(pc101)" }; };Když jsem to změnil na následující, tak mapování ve hře začalo fungovat korektně:
goliash:~$ setxkbmap us goliash:~$ setxkbmap -print 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(pc101)" }; };
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.