From c077f5fa0863796ce7e76772408306bcea90cde3 Mon Sep 17 00:00:00 2001 From: Mike Erwin Date: Sat, 6 Dec 2014 02:48:51 -0500 Subject: Fix T42789: support 3Dconnexion wireless devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SpaceMouse Wireless SpaceMouse Pro Wireless Device info is from user reports. I don’t yet have the new devices, so these are untested but likely to work :D --- intern/ghost/intern/GHOST_NDOFManager.cpp | 25 ++++++++++++++++++++++++- intern/ghost/intern/GHOST_NDOFManager.h | 2 ++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/intern/ghost/intern/GHOST_NDOFManager.cpp b/intern/ghost/intern/GHOST_NDOFManager.cpp index 9bd6226d5c2..86020e18082 100644 --- a/intern/ghost/intern/GHOST_NDOFManager.cpp +++ b/intern/ghost/intern/GHOST_NDOFManager.cpp @@ -228,7 +228,7 @@ bool GHOST_NDOFManager::setDevice(unsigned short vendor_id, unsigned short produ // that I don't have access to. Thanks! switch (vendor_id) { - case 0x046D: // Logitech (3Dconnexion) + case 0x046D: // Logitech (3Dconnexion was a subsidiary) switch (product_id) { // -- current devices -- case 0xC626: // full-size SpaceNavigator @@ -281,6 +281,29 @@ bool GHOST_NDOFManager::setDevice(unsigned short vendor_id, unsigned short produ printf("ndof: unknown Logitech product %04hx\n", product_id); } break; + case 0x256F: // 3Dconnexion + switch (product_id) { + case 0xC62E: // plugged in + case 0xC62F: // wireless + puts("ndof: using SpaceMouse Wireless"); + m_deviceType = NDOF_SpaceMouseWireless; + m_buttonCount = 2; + m_hidMap = Modern3Dx_HID_map; + break; + case 0xC631: // plugged in + case 0xC632: // wireless + puts("ndof: using SpaceMouse Pro Wireless"); + m_deviceType = NDOF_SpaceMouseProWireless; + m_buttonCount = 27; + // ^^ actually has 15 buttons, but their HID codes range from 0 to 26 + m_buttonMask = 0x07C0F137; + m_hidMap = Modern3Dx_HID_map; + break; + + default: + printf("ndof: unknown 3Dconnexion product %04hx\n", product_id); + } + break; default: printf("ndof: unknown device %04hx:%04hx\n", vendor_id, product_id); } diff --git a/intern/ghost/intern/GHOST_NDOFManager.h b/intern/ghost/intern/GHOST_NDOFManager.h index 0b2080e36a9..8d6edf38473 100644 --- a/intern/ghost/intern/GHOST_NDOFManager.h +++ b/intern/ghost/intern/GHOST_NDOFManager.h @@ -38,6 +38,8 @@ typedef enum { NDOF_SpaceExplorer, NDOF_SpacePilotPro, NDOF_SpaceMousePro, + NDOF_SpaceMouseWireless, + NDOF_SpaceMouseProWireless, // older devices NDOF_SpacePilot, -- cgit v1.2.3