The cadMousePro is an independent free tool for configuring 3DConnexion CadMouse Pro.
The cadMousePro consists of two parts:
The first one is a command line utility which sends configuration to the mouse as a USB HID message.
This utility can also run in daemon mode and expose a D-Bus interface that could be called by other apllication.
This tool must run under root
or other user who has permissions to access the USB device.
The second part is a simple GUI apllication which shows mouse status (name and battery level) and can configure the mouse. This GUI layer connects to the daemon using the D-Bus interface. Thus the GUI can run under any user (can be restricted using the D-Bus rules, if needed). The information about the battery level is provided by the UPower daemon (also over a D-Bus interface).
Mouse status:
Mouse configuration:
About:
The CadMouse Pro has a feature called „smart“ scrolling (also know as „free wheel“) which is actually not so smart and is rather an anti-feature and most users will probably want to disable it.
This feature simulates the momentum – if you scroll bit faster, the mouse continue to send scroll events even if you have already stopped scrolling the wheel. So you scroll, stop scrolling, move cursor to another window… but the mouse still scrolls and you get angry (especially if that another window was a taskbar and your windows are now fiercely switching).
By default, the wheel when pressed sends the same signal (2) as the middle button. So it behaves like an ordinary mouse. But we can configure it to send a different signal (10).
There is also a small button behind the wheel, so-called „gesture“ button. By default, it sends no (useful) signal. But we can persuade it to send a button signal (11).
It means that we have two more useful buttons and we can assign them some actions (in our desktop environment or particular application).
Which button sends which signal?
This can be examined through the tool xev
– it display a small window with testing area
and prints the captured mouse and keyboard events to the standard output.
We use the CMake build system, so the steps are basically:
mkdir build && cd build && cmake .. && make
Required libraries:
Old version v0.1
requires only hidapi-hidraw
and has no GUI nor D-Bus interface.
The daemon mode requires instalation of the D-Bus policy (in order to expose the service on the system bus and allow others to use it). Template for policy is in file:
config/etc/dbus-1/system.d/info.globalcode.mouse.cadMousePro.conf
If we want to configure the mouse automatically when it is connected, we should install a udev rule. Template for udev rule is in file:
config/etc/udev/rules.d/99-cadMousePro.rules
For ad-hoc configuration we just run:
sudo ./cadMousePro --frequency 250 --smart-scrolling false --lift-off-detection true
The daemon is started in this way:
sudo ./cadMousePro --daemon true
Our software works with this mouse:
The mouse connects using a wireless USB adapter with ID: 256f:c652
and identifies itself as 3Dconnexion Universal Receiver
Product numbers:
3DX-600065
– CadMouse Pro Wireless3DX-600054
– CadMouse Wireless (thanks Paul Guertin for reporting)Mouse utilities are free software © 2019-2020 GlobalCode