kokutoru / koku-xinput-wine Goto Github PK
View Code? Open in Web Editor NEWAdds xinput support to wine, without changing the source of wine.
License: BSD 2-Clause "Simplified" License
Adds xinput support to wine, without changing the source of wine.
License: BSD 2-Clause "Simplified" License
Wine games now crash immediately at startup when trying to use this library. An example (Pro Evo 2016) Wine crash is below:
Unhandled exception: page fault on write access to 0x7e4724c0 in 32-bit code (0xf7fa9763).
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
EIP:f7fa9763 ESP:02ccf2d4 EBP:02ccf338 EFLAGS:00010216( R- -- I -A-P- )
EAX:7e4724c0 EBX:00000079 ECX:8b55ff8b EDX:000000ec
ESI:f7fae140 EDI:f7fae000
Stack dump:
0x02ccf2d4: 00152c20 02ccf318 7e46ebea 00152d80
0x02ccf2e4: 7e592240 f7fa9dce 00000001 00000000
0x02ccf2f4: 02198684 02ccf3a4 02198694 02ccf49c
0x02ccf304: 02ccf39c 7e159000 8b55ff8b 0243aeec
0x02ccf314: 01ee6558 00000006 9abc7900 02ccf33c
0x02ccf324: 01ee6558 02ccf350 00000000 0243aec8
Backtrace:
=>0 0xf7fa9763 _ZN4koku16CoCreateInstanceERK5_GUIDP8IUnknownjS2_PPv+0xb3() in koku-xinput-wine.so (0x02ccf338)
1 0x004834ef in pes2016 (+0x1934ee) (0x02ccf8c0)
2 0x00481035 in pes2016 (+0x191034) (0x02ccfccc)
3 0x0048270e in pes2016 (+0x19270d) (0x02ccfd10)
4 0x004828e2 in pes2016 (+0x1928e1) (0x02ccfd58)
5 0x0047bd70 in pes2016 (+0x18bd6f) (0x02ccfd90)
6 0x0047656c in pes2016 (+0x18656b) (0x02ccfda0)
7 0x002f10e6 in pes2016 (+0x10e5) (0x02ccfe40)
8 0x7b462d29 call_process_entry+0x18() in kernel32 (0x02ccfe68)
9 0x7b463e4c in kernel32 (+0x43e4b) (0x02ccfeb8)
10 0x7bca8440 call_thread_func_wrapper+0xb() in ntdll (0x02ccfedc)
11 0x7bcaba26 in ntdll (+0x6ba25) (0x02ccffcc)
12 0x7bca841e RtlRaiseException+0x49() in ntdll (0x02ccffec)
0xf7fa9763 _ZN4koku16CoCreateInstanceERK5_GUIDP8IUnknownjS2_PPv+0xb3 in koku-xinput-wine.so: movl %ecx,0x0(%eax)
Modules:
Module Address Debug info Name (120 modules)
PE 230000- 292000 Deferred steam_api
PE 2f0000- 2bc4000 Export pes2016
PE 2cd0000- 2ecf000 Deferred d3dx9_43
PE 10000000-10086000 Deferred sdkencryptedappticket
ELF 7a800000-7a93e000 Deferred opengl32<elf>
\-PE 7a820000-7a93e000 \ opengl32
ELF 7b400000-7b7ee000 Dwarf kernel32<elf>
\-PE 7b420000-7b7ee000 \ kernel32
ELF 7bc00000-7bd2d000 Dwarf ntdll<elf>
\-PE 7bc40000-7bd2d000 \ ntdll
ELF 7c000000-7c004000 Deferred <wine-loader>
ELF 7cdba000-7cdc0000 Deferred libtxc_dxtn.so
ELF 7cdc0000-7ce4a000 Deferred libgmp.so.10
ELF 7ce4a000-7ce80000 Deferred libhogweed.so.4
ELF 7ce80000-7cebe000 Deferred libnettle.so.6
ELF 7cef2000-7d034000 Deferred libp11-kit.so.0
This is with Wine Staging 2.19. Are there compatibility issues with the latest Wine versions?
Ignore this.
Hello!
I am hoping to be able to play with my PS3 controller, so I'm giving this libraries a try.
I can smoothly run cmake .
(even though skipping tests), but it seems like it was something wrong with the source while running make
. Most probably it depends on the version of the compiler I have on my machine, but just in case here's the error trace:
manuel@manuel:~/koku-xinput-wine$ make
[ 12%] Building CXX object CMakeFiles/koku-xinput-wine64.dir/xinput.cpp.o
/home/manuel/koku-xinput-wine/xinput.cpp:319:23: error: ‘XInputGetStateEx’ was not declared in this scope
koku::jumper<decltype(XInputGetStateEx)> XInputGetStateExJumper;
^~~~~~~~~~~~~~~~
/home/manuel/koku-xinput-wine/xinput.cpp:319:23: error: ‘XInputGetStateEx’ was not declared in this scope
/home/manuel/koku-xinput-wine/xinput.cpp:319:40: error: template argument 1 is invalid
koku::jumper<decltype(XInputGetStateEx)> XInputGetStateExJumper;
^
/home/manuel/koku-xinput-wine/xinput.cpp:320:50: error: ‘XINPUT_STATE_EX’ has not been declared
DWORD WINAPI XInputGetStateEx(DWORD dwUserIndex, XINPUT_STATE_EX *pState) {
^~~~~~~~~~~~~~~
/home/manuel/koku-xinput-wine/xinput.cpp: In function ‘void koku::XInputInit(void*)’:
/home/manuel/koku-xinput-wine/xinput.cpp:382:59: error: cannot convert ‘koku::jumper<unsigned int(unsigned int, int*)>’ to ‘int’ in assignment
koku::make_jumper(address, &koku::XInputGetStateEx);
^
CMakeFiles/koku-xinput-wine64.dir/build.make:86: recipe for target 'CMakeFiles/koku-xinput-wine64.dir/xinput.cpp.o' failed
make[2]: *** [CMakeFiles/koku-xinput-wine64.dir/xinput.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/koku-xinput-wine64.dir/all' failed
make[1]: *** [CMakeFiles/koku-xinput-wine64.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Specs:
gcc version 6.3.0 20170516 (Debian 6.3.0-18)
Could you help me?
Setup:
I'm using Wine with 64 bit prefix with esync from this AUR package: https://cdn.discordapp.com/attachments/277857463384932353/462650835009142784/wine-esync-staging.m4-pba-SMT-TkG-v5.zip and a self-compiled koku-xinput-wine, and I have registered my Twin USB Joystick with SDL_GAMECONTROLLERCONFIG.
Problem:
When I started Naruto Ultimate Ninja Storm 2 by running the NSUNS2.exe
directly, there is a welcome rumble, then it launches Steam, then it launches the game, and it skips the DirectInput setup screen, indicating that the games detects XInput, but then the game doesn't register any button presses.
When I started Steam first by running Steam.exe
, there is no welcome rumble, then when I started the game, the same problem happens.
If I started this game without this library, the game goes to DirectInput setup screen, which I can bind the controller buttons into it, but for some reason in game some of those buttons are not registered, which is a bug in Wine, so I'm trying to do Xinput emulation, and x360ce doesn't work, while this does
I understand that this is a hack, however, it is one of the only solution I got to work in some games where even x360ce doesn't.
However, it only reports one xinput controller, even if I have 4 controllers connected.
Can you fix it in order to report multiple xinput controllers for each connected device?
I get the following error while running cmake:
/usr/lib/gcc/i686-w64-mingw32/7.2.0/../../../../i686-w64-mingw32/bin/ld:
unrecognized option '-z'
Maybe it's a deprecated/new option?
Hi there,
I'm just trying to get my controller to work in Rocket League. It's been nearly impossible to compile your lib on either Arch Linux or Fedora 23, I still haven't been able to get it to work on either one. It keeps complaining that my SDL2 lib is the "wrong version". Either way, most users don't know how to compile things or want to (I have done some programming in C and still find this difficult). If you could provide a precompiled 32 bit version of the library available for download, that would be awesome. Bonus points if you can provide complete example configurations for controllers.
Good day all.
Compile instructions fail on Ubuntu 17.10. Can anyone help?
`cmake .
-- The C compiler identification is GNU 7.2.0
-- The CXX compiler identification is GNU 7.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for module 'sdl2'
-- Found sdl2, version 2.0.6
-- Found wine headers: /opt/wine-staging/include/wine/windows
CMake Warning at CMakeLists.txt:84 (message):
No 32-bit cross-compiler; skipping 32-bit tests
CMake Warning at CMakeLists.txt:97 (message):
No 64-bit cross-compiler; skipping 64-bit tests
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dreaddy/Projects/git/koku-xinput-wine
`
make
Scanning dependencies of target koku-xinput-wine
[ 12%] Building CXX object CMakeFiles/koku-xinput-wine.dir/main.cpp.o
[ 25%] Building CXX object CMakeFiles/koku-xinput-wine.dir/xinput.cpp.o
[ 37%] Building CXX object CMakeFiles/koku-xinput-wine.dir/device.cpp.o
[ 50%] Linking CXX shared library koku-xinput-wine.so
/usr/bin/ld: skipping incompatible //usr/lib/x86_64-linux-gnu/libSDL2.so when searching for -lSDL2
/usr/bin/ld: skipping incompatible //usr/lib/x86_64-linux-gnu/libSDL2.a when searching for -lSDL2
/usr/bin/ld: cannot find -lSDL2
collect2: error: ld returned 1 exit status
CMakeFiles/koku-xinput-wine.dir/build.make:146: recipe for target 'koku-xinput-wine.so' failed
make[2]: *** [koku-xinput-wine.so] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/koku-xinput-wine.dir/all' failed
make[1]: *** [CMakeFiles/koku-xinput-wine.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
This is a rather odd one. The .so works fine normally, but NBA 2K14 won't start if you preload koku (works fine without it). I've not run into this issue with any other game.
Here are the lines around where it exits (it's trimmed due to lots of cruft):
With Koku:
fixme:system:SystemParametersInfoW Unimplemented action: 59 (SPI_SETSTICKYKEYS)
fixme:system:SystemParametersInfoW Unimplemented action: 53 (SPI_SETTOGGLEKEYS)
fixme:system:SystemParametersInfoW Unimplemented action: 51 (SPI_SETFILTERKEYS)
fixme:thread:SetThreadIdealProcessor (0xfffffffe): stub
fixme:thread:SetThreadIdealProcessor (0xe0): stub
fixme:thread:SetThreadIdealProcessor (0xfffffffe): stub
fixme:thread:SetThreadIdealProcessor (0xe0): stub
fixme:crypt:CertOpenStore unimplemented type 17
fixme:wbemprox:client_security_SetBlanket 0xf2b3782c, 0x190c90, 10, 0, (null), 3, 3, (nil), 0x00000000
fixme:wbemprox:client_security_Release 0xf2b3782c
fixme:wbemprox:enum_class_object_Next timeout not supported
ERROR: ld.so: object '/usr/lib/koku-xinput-wine.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
Without Koku:
fixme:system:SystemParametersInfoW Unimplemented action: 59 (SPI_SETSTICKYKEYS)
fixme:system:SystemParametersInfoW Unimplemented action: 53 (SPI_SETTOGGLEKEYS)
fixme:system:SystemParametersInfoW Unimplemented action: 51 (SPI_SETFILTERKEYS)
fixme:thread:SetThreadIdealProcessor (0xfffffffe): stub
fixme:thread:SetThreadIdealProcessor (0xe0): stub
fixme:thread:SetThreadIdealProcessor (0xfffffffe): stub
fixme:thread:SetThreadIdealProcessor (0xe0): stub
fixme:crypt:CertOpenStore unimplemented type 17
fixme:wbemprox:client_security_SetBlanket 0xf30a882c, 0x192328, 10, 0, (null), 3, 3, (nil), 0x00000000
fixme:wbemprox:client_security_Release 0xf30a882c
fixme:wbemprox:enum_class_object_Next timeout not supported
fixme:xinput:XInputGetCapabilities (index 0, flags 0x1, capabilities 0x2111b20) Stub!
fixme:crypt:CertOpenStore unimplemented type 17
fixme:d3d:state_normaldegree WINED3D_RS_NORMALDEGREE 0x2 not yet implemented.
Basically it seems to silently abort at the "xinput:XInputGetCapabilities" point.
Is there a way to get it to work with multilib wine on a 32 bit wineprefix?
I managed to link it (came out as a dylib file). xinput is a X11 extension/plugin or something right? so theoretically it should work?
Need to wait for beta to start I guess to see.
Hi! It's me again :)
This time, DDDA is proving a bit quirky. All of this have been realised on a clean Wine 32bit profile created for the game.
I tried to use the .dll(.so) from the Wine branch like I did the last time with Tales of Zestiria. They seemed to be working everywhere and be the ultimate solution.
Sadly, they didn't work this time. Which is strange because as far as I can tell, this game doesn't use SDL.
wine: Unhandled page fault on read access to 0x7f003e3e at address 0x7e33753b (thread 006b), starting debugger...
fixme:advapi:EventRegister {47a9201e-73b0-42ce-9821-7e134361bc6f}, 0x1006cb30, 0x10111468, 0x10111460
fixme:advapi:EventRegister {58a9201e-73b0-42ce-9821-7e134361bc70}, 0x1006cb30, 0x101114a0, 0x10111498
fixme:advapi:EventRegister {3fa9201e-73b0-43fe-9821-7e145359bc6f}, 0x1006cb30, 0x10111430, 0x10111428
fixme:advapi:EventRegister {1432afee-73b0-42ce-9821-7e134361b433}, 0x1006cb30, 0x101114d8, 0x101114d0
fixme:advapi:EventRegister {4372afee-73b0-42ce-9821-7e134361b519}, 0x1006cb30, 0x10111510, 0x10111508
fixme:imm:ImmGetOpenStatus (0x178cc8): semi-stub
fixme:ver:GetCurrentPackageId (0x33edf8 (nil)): stub
Unhandled exception: page fault on read access to 0x7f003e3e in 32-bit code (0x7e33753b).
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b
EIP:7e33753b ESP:0033cea0 EBP:0033cea4 EFLAGS:00010206( R- -- I - -P- )
EAX:7f003e3e EBX:00000018 ECX:00000000 EDX:7f00355a
ESI:00000000 EDI:0033cef0
Stack dump:
0x0033cea0: 00000018 0033cec0 01adadcf 00000000
0x0033ceb0: 00000001 0033cef0 00000000 0b8ab87c
0x0033cec0: 0033ced8 01adad47 7f000a80 00000000
0x0033ced0: 00000001 0033cef0 0b8ab840 00df1e6e
0x0033cee0: 00000000 00000001 0033cef0 0b8ab87c
0x0033cef0: 00000000 0033cf2c 00000000 0b8ab840
Backtrace:
=>0 0x7e33753b XInputGetCapabilities+0x15() in xinput1_3 (0x0033cea4)
1 0x01adadcf in gameoverlayrenderer (+0x8adce) (0x0033cec0)
2 0x01adad47 in gameoverlayrenderer (+0x8ad46) (0x0033ced8)
3 0x00df1e6e in ddda (+0x9f1e6d) (0x0b8ab840)
4 0x17acfe60 (0x01428558)
5 0x00c8a390 in ddda (+0x88a38f) (0x00df6b20)
0x7e33753b XInputGetCapabilities+0x15 in xinput1_3: movl 0x0(%eax),%eax
Modules:
Module Address Debug info Name (133 modules)
PE 400000- 1a49000 Export ddda
PE 1a50000- 1b9b000 Export gameoverlayrenderer
PE 54c0000- 55f7000 Deferred steam
PE 10000000-101ff000 Deferred d3dx9_43
PE 30000000-302c1000 Deferred steam2
PE 38000000-389ef000 Deferred steamclient
PE 3b400000-3b432000 Deferred steam_api
PE 3f000000-3f111000 Deferred tier0_s
PE 3f600000-3f653000 Deferred vstdlib_s
PE 60000000-60021000 Deferred cserhelper
ELF 7a800000-7a930000 Deferred opengl32
-PE 7a820000-7a930000 \ opengl32
ELF 7b800000-7ba68000 Deferred kernel32
-PE 7b810000-7ba68000 \ kernel32
ELF 7bc00000-7bcfe000 Deferred ntdll
-PE 7bc20000-7bcfe000 \ ntdll
ELF 7bf00000-7bf04000 Deferred
ELF 7d3b6000-7d441000 Deferred libgmp.so.10
ELF 7d441000-7d476000 Deferred libhogweed.so.4
ELF 7d476000-7d4b6000 Deferred libnettle.so.6
ELF 7d4b6000-7d4cb000 Deferred libtasn1.so.6
ELF 7d4cb000-7d4ff000 Deferred libidn.so.11
ELF 7d4ff000-7d561000 Deferred libp11-kit.so.0
ELF 7d561000-7d6ad000 Deferred libgnutls.so.30
ELF 7d6f5000-7d6fb000 Deferred libattr.so.1
ELF 7d6fb000-7d715000 Deferred libgcc_s.so.1
ELF 7d715000-7d72e000 Deferred libresolv.so.2
ELF 7d72e000-7d733000 Deferred libcap.so.2
ELF 7d733000-7d754000 Deferred libudev.so.1
ELF 7d754000-7d75a000 Deferred libtxc_dxtn.so
ELF 7d75a000-7d765000 Deferred libxcursor.so.1
ELF 7d76c000-7d775000 Deferred libffi.so.6
ELF 7d775000-7d7ad000 Deferred uxtheme
-PE 7d780000-7d7ad000 \ uxtheme
ELF 7d7fd000-7d826000 Deferred libexpat.so.1
ELF 7d826000-7d862000 Deferred libfontconfig.so.1
ELF 7d862000-7d8d7000 Deferred libpcre.so.1
ELF 7d8d7000-7d9fd000 Deferred libglib-2.0.so.0
ELF 7d9fd000-7da65000 Deferred libharfbuzz.so.0
ELF 7da65000-7daa2000 Deferred libpng16.so.16
ELF 7daa2000-7dab3000 Deferred libbz2.so.1.0
ELF 7dab3000-7db76000 Deferred libfreetype.so.6
ELF 7db76000-7db89000 Deferred libxi.so.6
ELF 7db89000-7db8d000 Deferred libxcomposite.so.1
ELF 7db8d000-7db9a000 Deferred libxrandr.so.2
ELF 7db9a000-7dba6000 Deferred libxrender.so.1
ELF 7dba6000-7dbcd000 Deferred libxcb.so.1
ELF 7dbcd000-7dd1c000 Deferred libx11.so.6
ELF 7dd1d000-7dd23000 Deferred libxfixes.so.3
ELF 7dd64000-7ddf9000 Deferred winex11
-PE 7dd70000-7ddf9000 \ winex11
ELF 7ddf9000-7de23000 Deferred iphlpapi
-PE 7de00000-7de23000 \ iphlpapi
ELF 7de23000-7de53000 Deferred netapi32
-PE 7de30000-7de53000 \ netapi32
ELF 7de53000-7de7a000 Deferred mpr
-PE 7de60000-7de7a000 \ mpr
ELF 7de7a000-7de91000 Deferred libz.so.1
ELF 7de92000-7dea7000 Deferred libxext.so.6
ELF 7dea7000-7ded9000 Deferred secur32
-PE 7deb0000-7ded9000 \ secur32
ELF 7ded9000-7df54000 Deferred wininet
-PE 7dee0000-7df54000 \ wininet
ELF 7df54000-7e055000 Deferred comctl32
-PE 7df60000-7e055000 \ comctl32
ELF 7e055000-7e081000 Deferred msvfw32
-PE 7e060000-7e081000 \ msvfw32
ELF 7e081000-7e13b000 Deferred winmm
-PE 7e090000-7e13b000 \ winmm
ELF 7e13b000-7e166000 Deferred msacm32
-PE 7e140000-7e166000 \ msacm32
ELF 7e166000-7e1ab000 Deferred avifil32
-PE 7e170000-7e1ab000 \ avifil32
ELF 7e1ab000-7e1b4000 Deferred librt.so.1
ELF 7e1b4000-7e2dd000 Deferred libsdl2-2.0.so.0
ELF 7e2e0000-7e2e7000 Deferred libxxf86vm.so.1
ELF 7e2e7000-7e2eb000 Deferred libxinerama.so.1
ELF 7e2eb000-7e325000 Deferred ws2_32
-PE 7e2f0000-7e325000 \ ws2_32
PE 7e325000-7e33b000 Dwarf xinput1_3
ELF 7e33b000-7e3be000 Deferred rpcrt4
-PE 7e350000-7e3be000 \ rpcrt4
ELF 7e3be000-7e4fd000 Deferred ole32
-PE 7e3e0000-7e4fd000 \ ole32
ELF 7e4fd000-7e519000 Deferred dinput8
-PE 7e500000-7e519000 \ dinput8
ELF 7e519000-7e66d000 Deferred wined3d
-PE 7e530000-7e66d000 \ wined3d
ELF 7e66d000-7e6ac000 Deferred d3d9
-PE 7e670000-7e6ac000 \ d3d9
ELF 7e6ac000-7e76a000 Deferred msvcrt
-PE 7e6c0000-7e76a000 \ msvcrt
ELF 7e76a000-7e78e000 Deferred imm32
-PE 7e770000-7e78e000 \ imm32
ELF 7e78e000-7e7a2000 Deferred psapi
-PE 7e790000-7e7a2000 \ psapi
ELF 7e7a2000-7e8c4000 Deferred gdi32
-PE 7e7b0000-7e8c4000 \ gdi32
ELF 7e8c4000-7ea34000 Deferred user32
-PE 7e8e0000-7ea34000 \ user32
ELF 7ea34000-7eaad000 Deferred shlwapi
-PE 7ea40000-7eaad000 \ shlwapi
ELF 7eaad000-7ed51000 Deferred shell32
-PE 7eac0000-7ed51000 \ shell32
ELF 7ed51000-7edc8000 Deferred advapi32
-PE 7ed60000-7edc8000 \ advapi32
ELF 7ef58000-7ef6b000 Deferred libnss_files.so.2
ELF 7ef6b000-7efb8000 Deferred libm.so.6
ELF 7efb9000-7efc0000 Deferred libxdmcp.so.6
ELF 7efc0000-7efda000 Deferred version
-PE 7efd0000-7efda000 \ version
ELF f46b8000-f690d000 Deferred libnvidia-glcore.so.358.16
ELF f690d000-f6a14000 Deferred libgl.so.1
ELF f6d79000-f6dc4000 Deferred dinput
-PE f6d80000-f6dc4000 \ dinput
ELF f7079000-f707e000 Deferred libnvidia-tls.so.358.16
ELF f70a0000-f710e000 Deferred setupapi
-PE f70b0000-f710e000 \ setupapi
ELF f710e000-f7244000 Deferred oleaut32
-PE f7130000-f7244000 \ oleaut32
ELF f7244000-f72ad000 Deferred dbghelp
-PE f7250000-f72ad000 \ dbghelp
ELF f72ad000-f7381000 Deferred crypt32
-PE f72c0000-f7381000 \ crypt32
ELF f7385000-f738a000 Deferred libdl.so.2
ELF f738c000-f7390000 Deferred libxau.so.6
ELF f73b5000-f73d0000 Deferred imagehlp
-PE f73c0000-f73d0000 \ imagehlp
ELF f73d2000-f758c000 Deferred libc.so.6
ELF f758c000-f75aa000 Deferred libpthread.so.0
ELF f75aa000-f7773000 Dwarf libwine.so.1
ELF f7774000-f7798000 Deferred ld-linux.so.2
ELF f779a000-f779b000 Deferred [vdso].so
Threads:
process tid prio (all id:s are in hex)
00000008 Steam.exe
00000056 0
00000055 0
00000052 0
00000051 0
00000050 0
0000004e 0
0000004d 0
0000004c 0
0000004b 15
0000004a 0
00000049 0
00000048 0
00000047 0
00000045 0
00000042 0
00000040 0
0000003e 0
0000002d 0
0000002b 0
0000002a 0
00000029 0
00000026 0
00000009 0
0000000e services.exe
00000020 0
0000001f 0
00000016 0
00000012 0
0000000f 0
00000010 explorer.exe
00000025 0
00000024 0
00000023 0
00000011 0
00000014 winedevice.exe
0000001e 0
0000001b 0
0000001a 0
00000015 0
0000001c plugplay.exe
00000022 0
00000021 0
0000001d 0
00000027 steamwebhelper.exe
0000004f 0
0000003f 0
0000003d 0
0000003c 0
0000003b 0
0000003a 0
00000039 0
00000038 0
00000037 0
00000036 0
00000035 0
00000034 0
00000033 0
00000030 0
0000002f 0
0000002e 0
0000002c 0
00000028 0
0000006a (D) E:\GAMING\SteamLibrary\steamapps\common\DDDA\DDDA.exe
00000077 0
00000076 0
00000075 0
00000074 0
00000073 0
00000072 0
00000071 -1
00000070 -1
0000006f -1
0000006e -1
0000006b 0 <==
System information:
Wine build: wine-1.9.1 (Staging)
Platform: i386
Version: Windows XP
Host system: Linux
Host version: 4.3.3-pf
I tried to use the old /usr/lib32/koku_xinput_wine.so method but it didn't work either. Here's the debug output:
$> env LD_PRELOAD=/usr/lib32/koku-xinput-wine.so KOKU_XINPUT_DEBUG=1 WINEARCH=win32 WINEPREFIX=$HOME/.wine_game_3_DRAGONS_DOGMA_DA_32/ wine DDDA.exe
koku-xinput-wine: [kernel32.dll] wine_dll_load("kernel32.dll", ...);
koku-xinput-wine: [steam_api.dll] wine_dll_load("steam_api.dll", ...);
koku-xinput-wine: [advapi32.dll] wine_dll_load("advapi32.dll", ...);
koku-xinput-wine: [shell32.dll] wine_dll_load("shell32.dll", ...);
koku-xinput-wine: [shlwapi.dll] wine_dll_load("shlwapi.dll", ...);
koku-xinput-wine: [user32.dll] wine_dll_load("user32.dll", ...);
koku-xinput-wine: [gdi32.dll] wine_dll_load("gdi32.dll", ...);
koku-xinput-wine: [version.dll] wine_dll_load("version.dll", ...);
koku-xinput-wine: [psapi.dll] wine_dll_load("psapi.dll", ...);
koku-xinput-wine: [imm32.dll] wine_dll_load("imm32.dll", ...);
koku-xinput-wine: [msvcrt.dll] wine_dll_load("msvcrt.dll", ...);
koku-xinput-wine: [d3d9.dll] wine_dll_load("d3d9.dll", ...);
koku-xinput-wine: [wined3d.dll] wine_dll_load("wined3d.dll", ...);
koku-xinput-wine: [opengl32.dll] wine_dll_load("opengl32.dll", ...);
koku-xinput-wine: [dinput8.dll] wine_dll_load("dinput8.dll", ...);
koku-xinput-wine: [ole32.dll] wine_dll_load("ole32.dll", ...);
koku-xinput-wine: [rpcrt4.dll] wine_dll_load("rpcrt4.dll", ...);
koku-xinput-wine: search forCoSetProxyBlanket
, found, redirect it
koku-xinput-wine: [xinput1_3.dll] wine_dll_load("xinput1_3.dll", ...);
koku-xinput-wine: foundkernel32.dll
koku-xinput-wine: foundLoadLibrary
inkernel32.dll
koku-xinput-wine: foundGetProcAddress
inkernel32.dll
koku-xinput-wine: [xinput1_3.dll] search forXInputEnable
koku-xinput-wine: [xinput1_3.dll] foundXInputEnable
, redirect it
koku-xinput-wine: [xinput1_3.dll] search forXInputGetAudioDeviceIds
koku-xinput-wine: [xinput1_3.dll] search forXInputGetAudioDeviceIds
withkernel32.dll
koku-xinput-wine: [xinput1_3.dll] search forXInputGetBatteryInformation
koku-xinput-wine: [xinput1_3.dll] foundXInputGetBatteryInformation
, redirect it
koku-xinput-wine: [xinput1_3.dll] search forXInputGetCapabilities
koku-xinput-wine: [xinput1_3.dll] foundXInputGetCapabilities
, redirect it
koku-xinput-wine: [xinput1_3.dll] search forXInputGetDSoundAudioDeviceGuids
koku-xinput-wine: [xinput1_3.dll] foundXInputGetDSoundAudioDeviceGuids
, redirect it
koku-xinput-wine: [xinput1_3.dll] search forXInputGetKeystroke
koku-xinput-wine: [xinput1_3.dll] foundXInputGetKeystroke
, redirect it
koku-xinput-wine: [xinput1_3.dll] search forXInputGetState
koku-xinput-wine: [xinput1_3.dll] foundXInputGetState
, redirect it
koku-xinput-wine: [xinput1_3.dll] search forXInputSetState
koku-xinput-wine: [xinput1_3.dll] foundXInputSetState
, redirect it
koku-xinput-wine: [setupapi.dll] wine_dll_load("setupapi.dll", ...);
koku-xinput-wine: [ws2_32.dll] wine_dll_load("ws2_32.dll", ...);
koku-xinput-wine: [avifil32.dll] wine_dll_load("avifil32.dll", ...);
koku-xinput-wine: [msacm32.dll] wine_dll_load("msacm32.dll", ...);
koku-xinput-wine: [winmm.dll] wine_dll_load("winmm.dll", ...);
koku-xinput-wine: [msvfw32.dll] wine_dll_load("msvfw32.dll", ...);
koku-xinput-wine: [comctl32.dll] wine_dll_load("comctl32.dll", ...);
koku-xinput-wine: [wininet.dll] wine_dll_load("wininet.dll", ...);
koku-xinput-wine: [mpr.dll] wine_dll_load("mpr.dll", ...);
koku-xinput-wine: [secur32.dll] wine_dll_load("secur32.dll", ...);
koku-xinput-wine: [netapi32.dll] wine_dll_load("netapi32.dll", ...);
koku-xinput-wine: [iphlpapi.dll] wine_dll_load("iphlpapi.dll", ...);
koku-xinput-wine: [winex11.drv] wine_dll_load("winex11.drv", ...);
koku-xinput-wine: [uxtheme.dll] wine_dll_load("uxtheme.dll", ...);
err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
koku-xinput-wine: [steamclient.dll] wine_dll_load("steamclient.dll", ...);
koku-xinput-wine: [crypt32.dll] wine_dll_load("crypt32.dll", ...);
koku-xinput-wine: [imagehlp.dll] wine_dll_load("imagehlp.dll", ...);
koku-xinput-wine: [dbghelp.dll] wine_dll_load("dbghelp.dll", ...);
koku-xinput-wine: [oleaut32.dll] wine_dll_load("oleaut32.dll", ...);
koku-xinput-wine: [tier0_s.dll] wine_dll_load("tier0_s.dll", ...);
koku-xinput-wine: [vstdlib_s.dll] wine_dll_load("vstdlib_s.dll", ...);
fixme:advapi:EventRegister {47a9201e-73b0-42ce-9821-7e134361bc6f}, 0x3f006ba0, 0x3f040ce8, 0x3f040ce0
fixme:advapi:EventRegister {58a9201e-73b0-42ce-9821-7e134361bc70}, 0x3f006ba0, 0x3f040d20, 0x3f040d18
fixme:advapi:EventRegister {3fa9201e-73b0-43fe-9821-7e145359bc6f}, 0x3f006ba0, 0x3f040cb0, 0x3f040ca8
fixme:advapi:EventRegister {1432afee-73b0-42ce-9821-7e134361b433}, 0x3f006ba0, 0x3f040d58, 0x3f040d50
fixme:advapi:EventRegister {4372afee-73b0-42ce-9821-7e134361b519}, 0x3f006ba0, 0x3f040d90, 0x3f040d88
fixme:ver:GetCurrentPackageId (0x30e280 (nil)): stub
koku-xinput-wine: [rsaenh.dll] wine_dll_load("rsaenh.dll", ...);
koku-xinput-wine: [kernel32.dll] wine_dll_load("kernel32.dll", ...);
koku-xinput-wine: [ws2_32.dll] wine_dll_load("ws2_32.dll", ...);
koku-xinput-wine: [comctl32.dll] wine_dll_load("comctl32.dll", ...);
koku-xinput-wine: [user32.dll] wine_dll_load("user32.dll", ...);
koku-xinput-wine: [gdi32.dll] wine_dll_load("gdi32.dll", ...);
koku-xinput-wine: [advapi32.dll] wine_dll_load("advapi32.dll", ...);
koku-xinput-wine: [version.dll] wine_dll_load("version.dll", ...);
koku-xinput-wine: [shell32.dll] wine_dll_load("shell32.dll", ...);
koku-xinput-wine: [shlwapi.dll] wine_dll_load("shlwapi.dll", ...);
koku-xinput-wine: [oleaut32.dll] wine_dll_load("oleaut32.dll", ...);
koku-xinput-wine: [ole32.dll] wine_dll_load("ole32.dll", ...);
koku-xinput-wine: [rpcrt4.dll] wine_dll_load("rpcrt4.dll", ...);
koku-xinput-wine: search forCoSetProxyBlanket
, found, redirect it
koku-xinput-wine: [imm32.dll] wine_dll_load("imm32.dll", ...);
koku-xinput-wine: [winex11.drv] wine_dll_load("winex11.drv", ...);
koku-xinput-wine: [uxtheme.dll] wine_dll_load("uxtheme.dll", ...);
koku-xinput-wine: [psapi.dll] wine_dll_load("psapi.dll", ...);
fixme:ver:GetCurrentPackageId (0x33e410 (nil)): stub
fixme:process:ProcessIdToSessionId Unsupported for other processes.
I'm using
$> wine --version
wine-1.9.1 (Staging)
And I'm positive Zestiria and other games based on the .dll method are still working.
Compiled on Arch Linux with SDL2, loaded it with Wine 1.55 on Tales of Zestiria, xinput_1.3 overriden to "native" in winecfg, clean profile. The config file isn't even created. Stacktraces confirm the library is being loaded but I can't see it in action.
Hi,
I tried to compile the 64 bit version of your library but ran into this problem after installing libwine-dev libsdl2-dev cmake and build-essential
using apt-get
on an Ubuntu 17.04:
user@calculator:~/Downloads/koku-xinput-wine-1.2.1$ cmake -DBUILD_M32=OFF .
-- The C compiler identification is GNU 6.3.0
-- The CXX compiler identification is GNU 6.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for module 'sdl2'
-- Found sdl2, version 2.0.5
-- Found wine headers: /usr/include/wine/windows
CMake Warning at CMakeLists.txt:84 (message):
No 32-bit cross-compiler; skipping 32-bit tests
CMake Warning at CMakeLists.txt:97 (message):
No 64-bit cross-compiler; skipping 64-bit tests
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:
BUILD_M32
-- Build files have been written to: /home/user/Downloads/koku-xinput-wine-1.2.1
user@calculator:~/Downloads/koku-xinput-wine-1.2.1$ make
[ 12%] Building CXX object CMakeFiles/koku-xinput-wine64.dir/xinput.cpp.o
/home/user/Downloads/koku-xinput-wine-1.2.1/xinput.cpp:319:23: error: ‘XInputGetStateEx’ was not declared in this scope
koku::jumper<decltype(XInputGetStateEx)> XInputGetStateExJumper;
^~~~~~~~~~~~~~~~
/home/user/Downloads/koku-xinput-wine-1.2.1/xinput.cpp:319:23: error: ‘XInputGetStateEx’ was not declared in this scope
/home/user/Downloads/koku-xinput-wine-1.2.1/xinput.cpp:319:40: error: template argument 1 is invalid
koku::jumper<decltype(XInputGetStateEx)> XInputGetStateExJumper;
^
/home/user/Downloads/koku-xinput-wine-1.2.1/xinput.cpp:320:50: error: ‘XINPUT_STATE_EX’ has not been declared
DWORD WINAPI XInputGetStateEx(DWORD dwUserIndex, XINPUT_STATE_EX *pState) {
^~~~~~~~~~~~~~~
/home/user/Downloads/koku-xinput-wine-1.2.1/xinput.cpp: In function ‘void koku::XInputInit(void*)’:
/home/user/Downloads/koku-xinput-wine-1.2.1/xinput.cpp:382:59: error: cannot convert ‘koku::jumper<unsigned int(unsigned int, int*)>’ to ‘int’ in assignment
koku::make_jumper(address, &koku::XInputGetStateEx);
^
CMakeFiles/koku-xinput-wine64.dir/build.make:86: die Regel für Ziel „CMakeFiles/koku-xinput-wine64.dir/xinput.cpp.o“ scheiterte
make[2]: *** [CMakeFiles/koku-xinput-wine64.dir/xinput.cpp.o] Fehler 1
CMakeFiles/Makefile2:67: die Regel für Ziel „CMakeFiles/koku-xinput-wine64.dir/all“ scheiterte
make[1]: *** [CMakeFiles/koku-xinput-wine64.dir/all] Fehler 2
Makefile:83: die Regel für Ziel „all“ scheiterte
make: *** [all] Fehler 2
Any idea what I am missing?
Hi. I prefer being able to install from Synaptic so that I can see where things are being installed.
Do you know where it's being installed? I am using Ubuntu 16.04.
Can you please create a PPA? Because now I have no idea where it's been installed on my system.
First of all, I had to install the following dependencies:
apt install libsdl2-dev libc6-dev-i386 gcc-multilib g++-multilib
Also build and install cmake
from sources since the repository version is older than required (3.5).
I'm now hitting a compile error, which I can't find how to fix:
Building CXX object CMakeFiles/koku-xinput-wine.dir/xinput.cpp.o
/home/xbmc/install/koku-xinput-wine/xinput.cpp:10:22: fatal error: winerror.h: No such file or directory
compilation terminated.
CMakeFiles/koku-xinput-wine.dir/build.make:86: recipe for target 'CMakeFiles/koku-xinput-wine.dir/xinput.cpp.o' failed
make[2]: *** [CMakeFiles/koku-xinput-wine.dir/xinput.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/koku-xinput-wine.dir/all' failed
make[1]: *** [CMakeFiles/koku-xinput-wine.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Any ideas?
Hello. Thank you for your great work. I have seen this work for the XInputTest.exe program that can be found in the x360ce repository but unfortunately it seems ineffective for the one game I'm trying to play. I also tried your new
and wine
branches but they didn't help.
To cut a long story short, without XInput it's like one of the axis is permanently stuck, even under real Windows 10. x360ce works under Windows but it also has no effect under Wine for this particular game. I tried to get more information from the x360ce team in order to approach the Wine team but despite giving some hints to another user earlier this year, they decided they weren't going to help me today. I'd rather use your solution anyway.
This game requires x360ce's COM HookMask. After comparing your code against theirs, it looks as though you're doing something similar but not hooking as many functions. Perhaps CoGetClassObject
is significant? I captured logging from starting Steam, starting the game, quitting the game, and then quitting Steam. I can see CoGetClassObject
mentioned just before it outputs controller messages at line 1081 that you only see when it has fallen back to DirectInput.
One more thing, when using this project with Launcher.exe, the game's configurator, it crashes out on startup with a StackOverflowException after printing this over and over.
koku-xinput-wine: CoSetProxyBlanket(...);
This doesn't matter much as you generally don't need to use the configurator and this doesn't happen to the game itself. Just thought I should make you aware of it.
Please let me know if you need any more information.
The tool that you create is amazing. But I got a problem.
When I've started steam through wine using Koku-xinput-wine, steam always open in Big Picture mode and I get a black screen. If I close Big Picture it open again.
Any idea?
Specs:
If you don't mind I get a suggestion to your project. I've gotten some problems to build your tool. Ubuntu's implementation of Multiarch is still incomplete, so we can't simply install 32-bit and 64-bit libraries alongside each other. In other words we can't install libsdl2-dev and libsdl2-dev:i386 together with apt-get. So I build 32-bit SDL2 development headers from source and it fix my problem. You could put this in README.md. cdelorme explain how to build 32-bit SDL2 development headers here #10.
Thanks for your work.
When I start steam, the controller vibrates (a sign that the LD_PRELOAD is working?), but when I go to start Lego Star Wars, it crashes.
Without the LD_PRELOAD, lego starwars doesn't crash.
Any kind of log I can report to help with this?
On 64-bit Linux, wine is probably going to be compiled as a 64-bit binary. If WINEARCH is win32, then wine will create a 32-bit prefix, and if WINEARCH is win64, it will create a 64-bit prefix. Either way, the actual wine application is a 64-bit executable.
If I use LD_PRELOAD with a 32-bit .so, of course ld.so errors out. However, it still seems to fail in the obvious case of using a 64-bit .so in a 64-bit wine prefix.
ERROR: ld.so: object '/home/aaron/Documents/progs/koku-xinput-wine/build/koku-xinput-wine.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
ERROR: ld.so: object '/home/aaron/Documents/progs/koku-xinput-wine/build/koku-xinput-wine.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
So I'm not sure how this is supposed to actually be used.
Even though it's installed as libsdl2-2.0-0 on my system (Mint 17.3)
ANything I can do about that?
after write the command (cmake .)
CMake Error at CMakeLists.txt:36 (message):
Couldn't find wine headers!-- Configuring incomplete, errors occurred!
See also "/home/abdo96/Downloads/koku-xinput-wine/CMakeFiles/CMakeOutput.log".
I install wine-staging and loaction /opt/wine-staging/include has two directories bin and lib64
so what is the solution of this problem ? thanks ..
cmake.log:
https://drive.google.com/open?id=1skvgMkTZiQ9PUr9osxGlD9reWFME33Rc
cmake_Lists:
https://drive.google.com/open?id=1oaAxt7DGHdO3ii_FKHgS4X4R6dOMJ0Hw
I installed CMake 3.7.2 from PPSSPP's PPA to try to compile this, and received the following huge list of errors:
TiZLappy:koku-xinput-wine$ cmake -DBUILD_M32=OFF .
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for module 'sdl2'
-- Found sdl2, version 2.0.4
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tiz/Source/koku-xinput-wine
TiZLappy:koku-xinput-wine$ make
Scanning dependencies of target koku-xinput-wine
[ 25%] Building CXX object CMakeFiles/koku-xinput-wine.dir/main.cpp.o
[ 50%] Building CXX object CMakeFiles/koku-xinput-wine.dir/xinput.cpp.o
In file included from /opt/wine-staging/include/wine/windows/windef.h:266:0,
from /opt/wine-staging/include/wine/windows/xinput.h:23,
from /home/tiz/Source/koku-xinput-wine/xinput.cpp:11:
/opt/wine-staging/include/wine/windows/winnt.h:783:35: warning: attributes ignored on elaborated-type-specifier that is not a forward declaration [-Wattributes]
typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY *PSLIST_ENTRY;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:136:38: error: array must be initialized with a brace-enclosed initializer
koku::jumper<decltype(XInputEnable)> XInputEnableJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:136:38: error: too many initializers for ‘std::array<unsigned char, 12ul>’
In file included from /home/tiz/Source/koku-xinput-wine/main.h:6:0,
from /home/tiz/Source/koku-xinput-wine/xinput.cpp:1:
/home/tiz/Source/koku-xinput-wine/jumper.h: In constructor ‘koku::jumper<F>::jumper() [with F = void(int)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: array must be initialized with a brace-enclosed initializer
jumper() = default;
^
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/xinput.cpp: At global scope:
/home/tiz/Source/koku-xinput-wine/xinput.cpp:136:38: note: synthesized method ‘koku::jumper<F>::jumper() [with F = void(int)]’ first required here
koku::jumper<decltype(XInputEnable)> XInputEnableJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:150:40: error: array must be initialized with a brace-enclosed initializer
koku::jumper<decltype(XInputSetState)> XInputSetStateJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:150:40: error: too many initializers for ‘std::array<unsigned char, 12ul>’
In file included from /home/tiz/Source/koku-xinput-wine/main.h:6:0,
from /home/tiz/Source/koku-xinput-wine/xinput.cpp:1:
/home/tiz/Source/koku-xinput-wine/jumper.h: In constructor ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, _XINPUT_VIBRATION*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: array must be initialized with a brace-enclosed initializer
jumper() = default;
^
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/xinput.cpp: At global scope:
/home/tiz/Source/koku-xinput-wine/xinput.cpp:150:40: note: synthesized method ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, _XINPUT_VIBRATION*)]’ first required here
koku::jumper<decltype(XInputSetState)> XInputSetStateJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:185:40: error: array must be initialized with a brace-enclosed initializer
koku::jumper<decltype(XInputGetState)> XInputGetStateJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:185:40: error: too many initializers for ‘std::array<unsigned char, 12ul>’
In file included from /home/tiz/Source/koku-xinput-wine/main.h:6:0,
from /home/tiz/Source/koku-xinput-wine/xinput.cpp:1:
/home/tiz/Source/koku-xinput-wine/jumper.h: In constructor ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, _XINPUT_STATE*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: array must be initialized with a brace-enclosed initializer
jumper() = default;
^
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/xinput.cpp: At global scope:
/home/tiz/Source/koku-xinput-wine/xinput.cpp:185:40: note: synthesized method ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, _XINPUT_STATE*)]’ first required here
koku::jumper<decltype(XInputGetState)> XInputGetStateJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:229:44: error: array must be initialized with a brace-enclosed initializer
koku::jumper<decltype(XInputGetKeystroke)> XInputGetKeystrokeJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:229:44: error: too many initializers for ‘std::array<unsigned char, 12ul>’
In file included from /home/tiz/Source/koku-xinput-wine/main.h:6:0,
from /home/tiz/Source/koku-xinput-wine/xinput.cpp:1:
/home/tiz/Source/koku-xinput-wine/jumper.h: In constructor ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, unsigned int, _XINPUT_KEYSTROKE*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: array must be initialized with a brace-enclosed initializer
jumper() = default;
^
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/xinput.cpp: At global scope:
/home/tiz/Source/koku-xinput-wine/xinput.cpp:229:44: note: synthesized method ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, unsigned int, _XINPUT_KEYSTROKE*)]’ first required here
koku::jumper<decltype(XInputGetKeystroke)> XInputGetKeystrokeJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:240:47: error: array must be initialized with a brace-enclosed initializer
koku::jumper<decltype(XInputGetCapabilities)> XInputGetCapabilitiesJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:240:47: error: too many initializers for ‘std::array<unsigned char, 12ul>’
In file included from /home/tiz/Source/koku-xinput-wine/main.h:6:0,
from /home/tiz/Source/koku-xinput-wine/xinput.cpp:1:
/home/tiz/Source/koku-xinput-wine/jumper.h: In constructor ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, unsigned int, _XINPUT_CAPABILITIES*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: array must be initialized with a brace-enclosed initializer
jumper() = default;
^
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/xinput.cpp: At global scope:
/home/tiz/Source/koku-xinput-wine/xinput.cpp:240:47: note: synthesized method ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, unsigned int, _XINPUT_CAPABILITIES*)]’ first required here
koku::jumper<decltype(XInputGetCapabilities)> XInputGetCapabilitiesJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:273:5: error: array must be initialized with a brace-enclosed initializer
XInputGetDSoundAudioDeviceGuidsJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:273:5: error: too many initializers for ‘std::array<unsigned char, 12ul>’
In file included from /home/tiz/Source/koku-xinput-wine/main.h:6:0,
from /home/tiz/Source/koku-xinput-wine/xinput.cpp:1:
/home/tiz/Source/koku-xinput-wine/jumper.h: In constructor ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, _GUID*, _GUID*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: array must be initialized with a brace-enclosed initializer
jumper() = default;
^
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/xinput.cpp: At global scope:
/home/tiz/Source/koku-xinput-wine/xinput.cpp:273:5: note: synthesized method ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, _GUID*, _GUID*)]’ first required here
XInputGetDSoundAudioDeviceGuidsJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:297:5: error: array must be initialized with a brace-enclosed initializer
XInputGetBatteryInformationJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:297:5: error: too many initializers for ‘std::array<unsigned char, 12ul>’
In file included from /home/tiz/Source/koku-xinput-wine/main.h:6:0,
from /home/tiz/Source/koku-xinput-wine/xinput.cpp:1:
/home/tiz/Source/koku-xinput-wine/jumper.h: In constructor ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, unsigned char, _XINPUT_BATTERY_INFORMATION*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: array must be initialized with a brace-enclosed initializer
jumper() = default;
^
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/xinput.cpp: At global scope:
/home/tiz/Source/koku-xinput-wine/xinput.cpp:297:5: note: synthesized method ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, unsigned char, _XINPUT_BATTERY_INFORMATION*)]’ first required here
XInputGetBatteryInformationJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:319:42: error: array must be initialized with a brace-enclosed initializer
koku::jumper<decltype(XInputGetStateEx)> XInputGetStateExJumper;
^
/home/tiz/Source/koku-xinput-wine/xinput.cpp:319:42: error: too many initializers for ‘std::array<unsigned char, 12ul>’
In file included from /home/tiz/Source/koku-xinput-wine/main.h:6:0,
from /home/tiz/Source/koku-xinput-wine/xinput.cpp:1:
/home/tiz/Source/koku-xinput-wine/jumper.h: In constructor ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, _XINPUT_STATE_EX*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: array must be initialized with a brace-enclosed initializer
jumper() = default;
^
/home/tiz/Source/koku-xinput-wine/jumper.h:27:3: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/xinput.cpp: At global scope:
/home/tiz/Source/koku-xinput-wine/xinput.cpp:319:42: note: synthesized method ‘koku::jumper<F>::jumper() [with F = unsigned int(unsigned int, _XINPUT_STATE_EX*)]’ first required here
koku::jumper<decltype(XInputGetStateEx)> XInputGetStateExJumper;
^
In file included from /home/tiz/Source/koku-xinput-wine/main.h:6:0,
from /home/tiz/Source/koku-xinput-wine/xinput.cpp:1:
/home/tiz/Source/koku-xinput-wine/jumper.h: In instantiation of ‘koku::jumper<F>::jumper(F*, F*) [with F = void(int)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:89:28: required from ‘koku::jumper<F> koku::make_jumper(F*, F*) [with F = void(int)]’
/home/tiz/Source/koku-xinput-wine/xinput.cpp:328:72: required from here
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: array must be initialized with a brace-enclosed initializer
jumper(F *src, F *dst) : src(src), dst(dst) {
^
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/jumper.h: In instantiation of ‘koku::jumper<F>::jumper(F*, F*) [with F = unsigned int(unsigned int, _XINPUT_VIBRATION*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:89:28: required from ‘koku::jumper<F> koku::make_jumper(F*, F*) [with F = unsigned int(unsigned int, _XINPUT_VIBRATION*)]’
/home/tiz/Source/koku-xinput-wine/xinput.cpp:335:75: required from here
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: array must be initialized with a brace-enclosed initializer
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/jumper.h: In instantiation of ‘koku::jumper<F>::jumper(F*, F*) [with F = unsigned int(unsigned int, _XINPUT_STATE*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:89:28: required from ‘koku::jumper<F> koku::make_jumper(F*, F*) [with F = unsigned int(unsigned int, _XINPUT_STATE*)]’
/home/tiz/Source/koku-xinput-wine/xinput.cpp:342:75: required from here
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: array must be initialized with a brace-enclosed initializer
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/jumper.h: In instantiation of ‘koku::jumper<F>::jumper(F*, F*) [with F = unsigned int(unsigned int, unsigned int, _XINPUT_KEYSTROKE*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:89:28: required from ‘koku::jumper<F> koku::make_jumper(F*, F*) [with F = unsigned int(unsigned int, unsigned int, _XINPUT_KEYSTROKE*)]’
/home/tiz/Source/koku-xinput-wine/xinput.cpp:350:60: required from here
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: array must be initialized with a brace-enclosed initializer
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/jumper.h: In instantiation of ‘koku::jumper<F>::jumper(F*, F*) [with F = unsigned int(unsigned int, unsigned int, _XINPUT_CAPABILITIES*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:89:28: required from ‘koku::jumper<F> koku::make_jumper(F*, F*) [with F = unsigned int(unsigned int, unsigned int, _XINPUT_CAPABILITIES*)]’
/home/tiz/Source/koku-xinput-wine/xinput.cpp:358:63: required from here
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: array must be initialized with a brace-enclosed initializer
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/jumper.h: In instantiation of ‘koku::jumper<F>::jumper(F*, F*) [with F = unsigned int(unsigned int, _GUID*, _GUID*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:89:28: required from ‘koku::jumper<F> koku::make_jumper(F*, F*) [with F = unsigned int(unsigned int, _GUID*, _GUID*)]’
/home/tiz/Source/koku-xinput-wine/xinput.cpp:366:73: required from here
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: array must be initialized with a brace-enclosed initializer
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/jumper.h: In instantiation of ‘koku::jumper<F>::jumper(F*, F*) [with F = unsigned int(unsigned int, unsigned char, _XINPUT_BATTERY_INFORMATION*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:89:28: required from ‘koku::jumper<F> koku::make_jumper(F*, F*) [with F = unsigned int(unsigned int, unsigned char, _XINPUT_BATTERY_INFORMATION*)]’
/home/tiz/Source/koku-xinput-wine/xinput.cpp:374:69: required from here
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: array must be initialized with a brace-enclosed initializer
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: too many initializers for ‘std::array<unsigned char, 12ul>’
/home/tiz/Source/koku-xinput-wine/jumper.h: In instantiation of ‘koku::jumper<F>::jumper(F*, F*) [with F = unsigned int(unsigned int, _XINPUT_STATE_EX*)]’:
/home/tiz/Source/koku-xinput-wine/jumper.h:89:28: required from ‘koku::jumper<F> koku::make_jumper(F*, F*) [with F = unsigned int(unsigned int, _XINPUT_STATE_EX*)]’
/home/tiz/Source/koku-xinput-wine/xinput.cpp:382:59: required from here
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: array must be initialized with a brace-enclosed initializer
/home/tiz/Source/koku-xinput-wine/jumper.h:33:45: error: too many initializers for ‘std::array<unsigned char, 12ul>’
cc1plus: warning: unrecognized command line option ‘-Wno-subobject-linkage’
cc1plus: warning: unrecognized command line option ‘-Wno-ignored-attributes’
CMakeFiles/koku-xinput-wine.dir/build.make:86: recipe for target 'CMakeFiles/koku-xinput-wine.dir/xinput.cpp.o' failed
make[2]: *** [CMakeFiles/koku-xinput-wine.dir/xinput.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/koku-xinput-wine.dir/all' failed
make[1]: *** [CMakeFiles/koku-xinput-wine.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
TiZLappy:koku-xinput-wine$
i have all dependencies installed. trying to compile on arch linux.
Terminal output:
[zana@archlinux koku-xinput-wine]$ make
[ 12%] Building CXX object CMakeFiles/koku-xinput-wine.dir/device.cpp.o
In file included from /usr/include/wine/windows/objbase.h:252,
from /usr/include/wine/windows/ole2.h:25,
from /usr/include/wine/windows/wtypes.h:13,
from /usr/include/wine/windows/winscard.h:22,
from /usr/include/wine/windows/windows.h:70,
from /usr/include/wine/windows/rpc.h:22,
from /usr/include/wine/windows/objbase.h:19,
from /home/zana/koku-xinput-wine/device.cpp:7:
/usr/include/wine/windows/objidl.h:6100:15: error: ‘union _userSTGMEDIUM::<unnamed struct>::__WIDL_objidl_generated_name_0000000C’ invalid; an anonymous struct may only have public non-static data members [-fpermissive]
6100 | union __WIDL_objidl_generated_name_0000000C {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/koku-xinput-wine.dir/build.make:89: CMakeFiles/koku-xinput-wine.dir/device.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:77: CMakeFiles/koku-xinput-wine.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
[zana@archlinux koku-xinput-wine]$
I have a 32-bit Wine prefix that used to work great with this, but for the past week or so when I try to launch Steam with this LD_PRELOADed, I get this error. I'm on Arch Linux x64.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.