Detta behöver jag skriva ner…
Till min dator har jag en 3Dconnexion SpaceMouse Compact ansluten. Den fungerar klockrent i både Blender, CloudCompare och FreeCAD, men tyvärr inte i QGIS.
Som ett första steg så ville jag prova om jag med Python kunde läsa input från enheten och få in data i QGIS python tolk.
För linux finns det inga drivrutiner för SpaceMouse från 3Dconnexion, men med sudo apt install spacenavd så hämtas och installeras allt som krävs för normal användning.
Att lägga till ”pyspacemouse” med pip install för att också lägga till stöd i python var inte så svårt, men att få rättigheter för vanliga användare att öppna enheten, det var värre.
Jag hittade lösningen i ett forum, och tänkte att det var lika bra att skriva ner det som en artikel på bloggen till nästa gång.
sudo nano /etc/udev/rules.d/99-spacemouse.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="256f", ATTRS{idProduct}=="c635", MODE="0666", SYMLINK+="spacemouse"
I koden som skrivs in i udev regeln så står det idVendor med ett hexvärde som är 3Dconnexion och idProduct med ett hexvärde som i mitt fall är SpaceMouse Compact. Korrekta hex-värden hittar man om man skriver in lsusb i en terminal. Det går att kontrollera att allt fungerade genom att koppla ur och i enheten och lista vad som finns i katalogen /dev/. Om där finns en ”spacemouse” så har det fungerat.

I QGIS kan jag skriva in några enkla kommandon för att se att det verkar fungera också.
Konsolen är inte gjord för att köra program i. Det finns exempelvis ingen ”stop” knapp. Är man lite oförsiktig så kan man låsa hela QGIS om man kör för mycket loopar (jag lyckades flera gånger). Men detta bådar gott för att exempelvis skapa ett plugin som kan läsa data och koppla dessa till exempelvis canvasrörelser i kartan. Panorera, zooma och rotera i 2D. Pan, tilt och jaw i 3D.
Om och när jag lyckas få till det blir en senare fråga, men det kanske finns andra som tycker att detta skulle vara en intressant utmaning?
Om man vill, så kan man även lägga in att när spacemouse kopplas in, så ändras gruppen för enhets-filen till en för distributionen lämplig grupp, som gruppen ”mouse”, ”input” eller liknande. Då kan bara den användare som sitter vid skärmen använda den. Sedan sätter man då rättigheten för enheten till 0660 istället, för ökad säkerhet.
För att se lämplig rättighet och grupp, gör kommandot ls -l /dev/input/ och se vilka grupper och rättigheter som används i den distribution du använder. Ubuntu säger 0660 och ”input” på min dator. Det går även att titta i de andra rules-filerna för udev hur de gör.
Man kan även starta ett program när musen kopplas in i datorn och avsluta programmet när musen kopplas ifrån. Det kan vara lämpligt om det behövs ett speciellt program för detta.
Men intressant. Några frågor.
– Finns det stöd för någon 3D-mus i QGis?
– Har du tittat i katalogen /dev/input/by-name för att se om 3d-råttan finns nämnd där?
– Har du tittar på om det kommer upp någon ny enhetsfil i /dev/input/ när musen kopplas in? Du kan använda följande kommando i en terminal för att se detta: watch ls -l /dev/input/*
– Har du provat att titta vad som kommer ut ur /dev/input/mice med hjälp av kommandot cat(1) när du använder råttan? Exempelvis: cat /dev/input/mice.
– Du kan även använda udevadm(8) för att kolla vad som händer med enheter hanterade av udev(7). Exempelvis: sudo udevadm monitor -p -u -s usb
– Du kan även hitta mer information om en enhet med udevadm(8) som du kan använda i din rules-file för udev. Exempelvis: sudo udevadm info /dev/input/mouse0
– 3D mus i QGIS: Nej, men det finns plugin som använder gamepad för att kontrollera kartan.
– 3D musen finns i /dev/input/by-id (by-name har jag inte)
– Ny enhet vid inkoppling: Japp, ”event9” i mitt fall.
– cat /dev/input/mice påverkas inte av space mouse.
OT: Går det inte att formatera inmatningen av kommentarerna?
Hi,
i try to do that !
Windows version work fine !
i can’t test on other platform
https://github.com/pYpA62/SpaceMouse3Dconnexion-Plugin-QGIS
pYpA62