diff --git a/.gitmodules b/.gitmodules index b6d59c2..31c060f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -21,4 +21,7 @@ url = https://github.com/Ableton/link.git [submodule "ext/tfd"] path = ext/tfd - url = https://git.code.sf.net/p/tinyfiledialogs/code \ No newline at end of file + url = https://git.code.sf.net/p/tinyfiledialogs/code +[submodule "ext/mdqinc"] + path = ext/mdqinc + url = https://github.com/mdqinc/SDL_GameControllerDB.git diff --git a/CMakeLists.txt b/CMakeLists.txt index e605e61..fe4dc6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -728,9 +728,62 @@ set(VMIX_RSC_FILES ./rsc/shaders/filters/3DSimplexNoise.glsl ./rsc/shaders/filters/source.glsl ./rsc/images/logo.vmx - ./rsc/gamecontrollerdb.txt ) +##### +##### Sync gamecontrollerdb.txt from git submodule if different +##### +set(SUBMODULE_DB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/ext/mdqinc/gamecontrollerdb.txt") +set(RSC_DB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/rsc/gamecontrollerdb.txt") + +# Check if submodule file exists +if(EXISTS "${SUBMODULE_DB_PATH}") + # Compare the files to see if they differ + set(FILES_DIFFER FALSE) + + if(NOT EXISTS "${RSC_DB_PATH}") + # rsc file doesn't exist, copy it + set(FILES_DIFFER TRUE) + else() + # Both files exist, compare them + file(MD5 "${SUBMODULE_DB_PATH}" SUBMODULE_MD5) + file(MD5 "${RSC_DB_PATH}" RSC_MD5) + + if(NOT "${SUBMODULE_MD5}" STREQUAL "${RSC_MD5}") + set(FILES_DIFFER TRUE) + else() + message(STATUS "gamecontrollerdb.txt is up-to-date with submodule") + endif() + endif() + + # Copy if different + if(FILES_DIFFER) + file(COPY "${SUBMODULE_DB_PATH}" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/rsc/") + message(STATUS "Updated rsc/gamecontrollerdb.txt from ext/mdqinc submodule") + + # Show version info if available + if(GIT_EXECUTABLE AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ext/mdqinc/.git") + execute_process( + COMMAND ${GIT_EXECUTABLE} -C "${CMAKE_CURRENT_SOURCE_DIR}/ext/mdqinc" log -1 --format="%h %s" + OUTPUT_VARIABLE SUBMODULE_COMMIT + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + message(STATUS " Submodule commit: ${SUBMODULE_COMMIT}") + endif() + endif() +else() + # Submodule not initialized + if(EXISTS "${RSC_DB_PATH}") + message(STATUS "Using existing rsc/gamecontrollerdb.txt (submodule not initialized)") + else() + message(WARNING "gamecontrollerdb.txt not found!") + message(WARNING " Please run: git submodule update --init ext/mdqinc") + endif() +endif() + +# Add gamecontrollerdb.txt to resources +list(APPEND VMIX_RSC_FILES ./rsc/gamecontrollerdb.txt) + cmrc_add_resource_library(vmix-resources ALIAS vmix::rc NAMESPACE vmix WHENCE rsc ${VMIX_RSC_FILES}) diff --git a/ext/mdqinc b/ext/mdqinc new file mode 160000 index 0000000..2b71fff --- /dev/null +++ b/ext/mdqinc @@ -0,0 +1 @@ +Subproject commit 2b71fffae463ecaa08391c86cfd8a9f1842389af diff --git a/rsc/gamecontrollerdb.txt b/rsc/gamecontrollerdb.txt index 1433345..78c2be9 100644 --- a/rsc/gamecontrollerdb.txt +++ b/rsc/gamecontrollerdb.txt @@ -78,6 +78,7 @@ 03000000c82d00001230000000000000,8BitDo Ultimate,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b2,paddle2:b5,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, 03000000c82d00001260000000000000,8BitDo Ultimate 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b17,paddle2:b16,paddle3:b2,paddle4:b5,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, 03000000c82d00001b30000000000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, +03000000c82d00001c30000000000000,8BitDo Ultimate 2C,a:b0,b:b1,x:b3,y:b4,back:b10,guide:b12,start:b11,leftstick:b13,rightstick:b14,leftshoulder:b6,rightshoulder:b7,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:b8,righttrigger:b9,paddle1:b2,paddle2:b5,platform:Windows, 03000000c82d00001d30000000000000,8BitDo Ultimate 2C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,paddle1:b5,paddle2:b2,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, 03000000c82d00001530000000000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, 03000000c82d00001630000000000000,8BitDo Ultimate C,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, @@ -2197,6 +2198,3 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 050000005e040000130b0000ff870001,Xbox Series X Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, 050000005e040000e0020000df070000,Xbox Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:iOS, 050000005e040000e0020000ff070000,Xbox Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,platform:iOS, - -# Additional mappings for controllers not yet in upstream SDL_GameControllerDB -030000006f0e00000105000000010000,PDP Xbox 360 Controller,a:b0,b:b1,x:b2,y:b3,back:b6,start:b7,guide:b8,leftshoulder:b4,rightshoulder:b5,leftstick:b9,rightstick:b10,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,platform:Linux,