WiimoteReal: Add a hidapi IO implementation
Based on ca0c2efe7ab19c85449d52dd1bf4beec8603bbfe. Credits go to flacs. However, unlike the original commit, hidapi does not completely replace the current implementations, so we can still connect Wiimotes with 1+2 (without pairing). Also, it is only used on Linux and OS X for now. This removes the advantage of having only one implementation but there is no other choice: using hidapi on Windows is currently impossible because hid_write() is implemented in a way that won't work with Wiimotes. Additionally: * We now check for the device name in addition to the PID/VID so we can support the Balance Board and maybe third-party Wiimotes too. This doesn't achieve anything with the DolphinBar but it does with hidraw. * Added a check to not connect to the same device more than once.
This commit is contained in:
@@ -835,6 +835,33 @@ else()
|
||||
endif()
|
||||
list(APPEND LIBS ${ICONV_LIBRARIES})
|
||||
|
||||
if(NOT ANDROID)
|
||||
include(FindHIDAPI OPTIONAL)
|
||||
find_package(HIDAPI)
|
||||
if(HIDAPI_FOUND)
|
||||
message("Using shared ${HIDAPI_LIBRARIES} ${HIDAPI_VERSION}")
|
||||
include_directories(${HIDAPI_INCLUDE_DIRS})
|
||||
list(APPEND LIBS ${HIDAPI_LIBRARIES})
|
||||
else()
|
||||
include_directories(Externals/hidapi/hidapi)
|
||||
if(APPLE)
|
||||
message("Using static hidapi from Externals")
|
||||
add_subdirectory(Externals/hidapi/mac)
|
||||
list(APPEND LIBS hidapi)
|
||||
elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
message("Using static hidapi-hidraw from Externals")
|
||||
add_subdirectory(Externals/hidapi/linux)
|
||||
list(APPEND LIBS hidapi-hidraw udev)
|
||||
else()
|
||||
message("Using static hidapi-libusb from Externals")
|
||||
add_subdirectory(Externals/hidapi/libusb)
|
||||
list(APPEND LIBS hidapi-libusb)
|
||||
endif()
|
||||
endif()
|
||||
set(HIDAPI_FOUND 1)
|
||||
add_definitions(-DHAVE_HIDAPI=1)
|
||||
endif()
|
||||
|
||||
find_library(OPENSLES_LIBRARIES NAMES OpenSLES)
|
||||
find_path(OPENSLES_INCLUDE_DIR NAMES SLES/OpenSLES.h)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user