Replies: 19 comments 15 replies
|
Started on the Linux/libspnav phase: #635 Opened as a draft on purpose. It builds, is off by default with zero cost to the normal build (verified from clean configures both ways), links correctly against libspnav when the option is enabled, and I confirmed for real — this sandbox genuinely has no spacenavd running — that a build with the feature compiled in stays completely silent and doesn't crash when no daemon or device is present, which is the state almost every user of an opt-in build will actually be in. What I cannot verify without a device: which physical axis is which, sign, and sensitivity. I picked X/Y → pan, Z → zoom per the scope above, but that's untested against real hardware. Flagged clearly on the PR, with the constants isolated so fixing any of it is a one-line change. If anyone here owns a SpaceMouse/SpacePilot and is willing to build this and try it, that's exactly the missing piece before it's ready to come out of draft. |
|
Quick update: #635 now has a That's in preparation for phase 2 (Windows/macOS via 3DxWare), not phase 2 itself — I don't have the SDK or a Windows/macOS toolchain in this environment, so I couldn't compile, link, or run a single line of that code, and didn't want to ship platform code that's never been built as if it were verified. The seam means whoever does have that SDK can add a backend without touching the Linux path or the (already-tested) view-navigation logic. Details on the PR. |
|
Button-mappable actions are now in #635 too — generic across backends (any Unlike the pan/zoom motion path, the parts downstream of "a button was pressed" don't need real hardware to verify, and I tested them properly this time: the settings-backed button→action map, The one part that's still unverified is the same one as before: detecting an actual button press needs a real device or daemon I don't have. |
|
Topic related https://qelectrotech.org/forum/viewtopic.php?pid=15911#p15911 |
|
Extend 3D mouse (SpaceMouse/SpacePilot) support to Windows and macOS Goal Technical findings Platform Mechanism License / Driver FreeCAD: integrates NavLib for a full 3D viewport (camera matrix, frustum) — less transferable, designed for pure 3D. |
|
I don't have a mac or a 3D mouse. I do have windows but not in my build enviroment I'm building you a solution now, |
|
If you own a SpaceMouse/SpacePilot and can spare a few minutes: |
|
|
Hum, not working on macOS with 3DxWare software installed.. |
|
macOS build with hidapi backend enabled on script 9883570 |
|
The 3D mouse should not be detected on macOS; in QET it has no effect, but it does work in the 3DxWare software. |
|
Tested on macOS arm64 (with the hidapi build + brew install hidapi): the SpacePilot Pro is not detected by QET, but it is detected fine by 3DxWare. Additional diagnostics:
So the device is clearly visible at both the OS and hidapi levels — the problem isn't a macOS permission issue or a conflict with 3DxWare, but very likely a vendor ID filter in QET's backend. The SpacePilot Pro still uses the old Logitech VID (0x046D), a holdover from when 3Dconnexion belonged to Logitech — not the current 3Dconnexion VID (0x256F). In fact, the VENDORS = {0x046D: 'Logitech (older 3Dconnexion)', 0x256F: '3Dconnexion'}If QET's hidapi backend only filters on 0x256F, that would exactly explain this behavior: newer devices (VID 0x256F) would get detected, while older models like the SpacePilot Pro (VID 0x046D) would be silently skipped. |
|
The 3D mouse works on Windows 11 Edit: (3DxWare not installed ) |
|
We need you run the test again, see comments in this thread above. The logging was too short, i've increased the logging time |
|
Please Shane merge you new version of spacemouse-capture.py. |
Record your 3D mouse for QElectroTech (Linux, macOS, Windows)If you own a 3Dconnexion 3D mouse (SpaceMouse, SpacePilot, SpaceNavigator…), a two-minute recording helps QElectroTech read that model correctly. A script guides you through a few movements and button presses, then saves one Each step says what to do: press Enter, make the movement, and hold it until the next prompt. Push firmly. LinuxOpen a terminal: If macOSOpen Terminal (Applications → Utilities): No sudo. If
Rather not use Terminal? The double-click SpaceMouse Check app does the same in a window (instructions on that page). Windows
No administrator rights needed, and 3DxWare can keep running. Every systemThe file is saved in the folder you ran the script from, named |
Uh oh!
There was an error while loading. Please reload this page.
Forum thread: https://qelectrotech.org/forum/viewtopic.php?id=2480
Problem
Users with 3Dconnexion 6-DOF input devices (SpaceMouse, SpacePilot / SpacePilot Pro, Navigator) have no way to use them for panning/zooming QET's diagram view — the natural mapping for a primarily-2D schematic editor. This came up in the forum's zooming thread: a maintainer owns a SpacePilot Pro and confirmed device support "need[s] a lot of work and coding" and isn't something there's currently bandwidth for, so it's stalled as an idea rather than a concretely scoped task.
What exists today
DiagramView::zoom(qreal zoom_factor)(diagramview.cpp:335-350) and the view's ownhorizontalScrollBar()/verticalScrollBar()(driven directly inDiagramView::wheelEvent,diagramview.cpp:661-687). Whatever feeds a 3D mouse's motion into QET only needs to call these two things — not reimplement navigation.DiagramView::wheelEventalready branches on input-source characteristics: it has agestures()check to treat trackpad wheel deltas differently from a physical mouse wheel (diagramview.cpp:665-680) — precedent for handling a different navigation-input source distinctly. A background 6-DOF device is continuous/ambient rather than tick-driven like a wheel event though, so it's better implemented as its own listener object callingzoom()/the scrollbars directly, rather than folded intowheelEventitself.option(...)(e.g.option(PACKAGE_TESTS "Build the tests" ON),CMakeLists.txt:52) — the same pattern would let 3D-mouse support be compiled in only when wanted, with zero effect on default builds or users without the device.Proposed scope (staged, Linux-first)
libspnav: integrate withspacenavd/libspnav(BSD-licensed, already the de facto standard other open-source CAD/3D tools — Blender, FreeCAD — use for this class of device, and vendor-neutral rather than requiring 3Dconnexion's proprietary SDK). A small listener polls translation/rotation deltas and maps them onto the existing primitives: X/Y translation →horizontalScrollBar()/verticalScrollBar()(pan), Z-axis push/pull →DiagramView::zoom()(zoom in/out) — the same two calls the wheel handler already uses, so no new navigation logic is needed, only a new input source feeding it.3DxWare) rather than a portable open library, a materially bigger lift (vendor driver dependency, separate integration code per platform). Flagging this explicitly as future work rather than bundling it into an initial PR, in line with the maintainer's own assessment in the thread that full device support is a large undertaking.Related, not proposed here
Button-mappable actions on the device (dedicated buttons for rotate/mirror/undo, etc.) are a natural follow-up once basic pan/zoom motion works, but out of scope for a first cut.
Happy to build the Linux/libspnav phase if the scope above sounds right.
All reactions