From f2f105191490d131cad0c76024d91112897676be Mon Sep 17 00:00:00 2001 From: ispyisail Date: Fri, 25 Sep 2026 11:30:48 +1200 Subject: [PATCH] Build the Windows package with 3D mouse support (hidapi) Installs MSYS2's hidapi and turns on QET_ENABLE_SPACEMOUSE with the hidapi backend, so the Windows package reads a 3Dconnexion SpaceMouse directly over USB, with no 3Dconnexion driver (discussion #599). The existing transitive DLL scan copies libhidapi-0.dll into the package, and both installers take everything in bin/. Two checks make a silent loss fail the build instead: CMake only warns when hidapi is missing, so the exe must link against it, and the DLL must be deployed, or QElectroTech.exe would not start. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/windows-build.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 3b5f37d67..2412235c5 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -57,6 +57,7 @@ jobs: mingw-w64-ucrt-x86_64-nsis mingw-w64-ucrt-x86_64-angleproject mingw-w64-ucrt-x86_64-qt6-declarative + mingw-w64-ucrt-x86_64-hidapi - name: Cache ccache uses: actions/cache@v5 @@ -120,6 +121,8 @@ jobs: -DCMAKE_POLICY_DEFAULT_CMP0077=NEW \ -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ -DQET_EXPORT_PROJECT_DB=ON \ + -DQET_ENABLE_SPACEMOUSE=ON \ + -DQET_SPACEMOUSE_BACKEND=hid \ -DCMAKE_C_COMPILER_LAUNCHER=/ucrt64/bin/ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=/ucrt64/bin/ccache \ -DSQLite3_INCLUDE_DIR=/ucrt64/include \ @@ -146,6 +149,11 @@ jobs: SIZE=$(stat -c%s "$EXE") echo "Exe found: $EXE ($SIZE bytes)" [ "$SIZE" -gt 100000 ] || { echo "ERROR: exe too small"; exit 1; } + # 3D mouse support (discussion #599): CMake only warns when hidapi + # is missing, which would ship a package without it -- fail here. + ldd "$EXE" | grep -qi 'libhidapi' \ + || { echo "ERROR: exe not linked against hidapi -- 3D mouse support missing"; exit 1; } + echo "3D mouse support: linked against $(ldd "$EXE" | grep -io 'libhidapi[^ ]*' | head -1)" - name: Deploy — copy exe + windeployqt + DLLs shell: msys2 {0} @@ -191,6 +199,8 @@ jobs: echo "=== $DLL_COUNT DLLs present after scan ===" ls -lh "$BIN/QElectroTech.exe" || { echo "ERROR: exe missing from bin/"; exit 1; } [ "$DLL_COUNT" -gt 5 ] || { echo "ERROR: too few DLLs"; exit 1; } + # Without it QElectroTech.exe would not start at all. + [ -f "$BIN/libhidapi-0.dll" ] || { echo "ERROR: libhidapi-0.dll not deployed"; exit 1; } cd "$GITHUB_WORKSPACE" cp /ucrt64/bin/libgcc_s_seh-1.dll "$BIN/"