These is a system service to enhance the compatibility of the Logitech Trackball Marble, Logitech MX Anywhere 2S, and other devices I may have with the Linux OS. It contains scripts that start during system boot and map the device inputs into special commands, like Back, Forward, Scrolling, Alt+Tab, macros, and so on. If a device is not present/detected it simply ignores the enhancements. It is also aware of the current focused window. For instance, "Switch Tabs" will map to different shortcuts deppending on your app.
| Shortcut | Action | 
|---|---|
| A | Left Click | 
| B | Go to Declaration / Open in new Tab | 
| C | Right Click | 
| D | Middle Click | 
| E | Move Cursor | 
| Shortcut | Action | 
|---|---|
| B + A | Show All Windows | 
| B + C | Back | 
| B + D | Forward | 
| B + E | Vertical and Horizontal Scrolling | 
| Shortcut | Action | 
|---|---|
| C + A | Search Selection | 
| C + B | Reopen Tab | 
| C + D | New Tab or Document | 
| C + E | Change Volume (Vertical) or Undo / Redo (Horizontal) | 
| Shortcut | Action | 
|---|---|
| D + A | Close Tab or Terminal | 
| D + B | Close Window | 
| D + C | Advanced Search: Tabs, Files, Content, Symbols, so on | 
| D + E | Switch Tabs (Vertical) or Switch Windows (Horizontal) | 
| Shortcut | Action | 
|---|---|
| A | Left Click | 
| B | Middle Click | 
| C | Right Click | 
| D | Horizontal Scroll | 
| E | Vertical Scroll | 
| F | Horizontal Scroll | 
| H | Back | 
| G | Forward | 
| G + H | Show All Windows | 
| Shortcut | Action | 
|---|---|
| H + A | Go to Declaration | 
| H + B | Close Tab | 
| H + C | Reopen Tab | 
| H + D | Zoom In | 
| H + E | Switch Tabs | 
| H + F | Zoom Out | 
| Shortcut | Action | 
|---|---|
| G + A | Undo | 
| G + B | Close Window | 
| G + C | Redo | 
| G + E | Switch Window | 
| Shortcut | Action | 
|---|---|
| G + H + A | Play / Pause | 
| G + H + B | Stop | 
| G + H + C | Mute / Unmute | 
| G + H + D | Next Track | 
| G + H + E | Volume Up / Down | 
| G + H + F | Previous Track | 
| Shortcut | Action | 
|---|---|
| REC + MACRO_N | Start recording / reset recording keyboard input sequence in buffer N (activates blue led) | 
| MACRO_N (blue led on) | Finish recording the macro (deactivates led) | 
| MACRO_N (blue led off) | Play the recorded sequence of keys | 
| TOGGLE_N | Toggle macro MACRO_N between two sets, MACRO_1 to MACRO_6 (left) or MACRO_7 to MACRO_12 (right) | 
| Yellow led | Indicates a key is being pressed | 
| Key | Mode | Can draw? | Show drawing | Background | 
|---|---|---|---|---|
| A | Transparent | Yes | Yes | None | 
| B | Opaque | Yes | Yes | Opaque | 
| C | Passthrough | No | Yes | None | 
| D | Disabled | No | No | None | 
| Key | Action | 
|---|---|
| E | Previous page | 
| F | Next page | 
| G | Undo | 
| H | Redo | 
| I | Change brush size | 
| J | Move paper | 
| K | Touch the tablet to draw | 
| L | Eraser mode | 
| M | Open Menu (Planned) | 
| Key | Action | 
|---|---|
| E | Planning | 
| F | Planning | 
| G | Planning | 
| H | Planning | 
| I | Planning | 
| J | Planning | 
| K | Left mouse click | 
| L | Middle mouse click | 
| M | Right mouse click | 
This daemon requires python3, pip, evdev, inotifywait, xclip and edid-decode. It has only been tested in Ubuntu 22.04 LTS, you can install its dependencies with the following commands.
sudo apt update
sudo apt install -yq libpython3-dev inotify-tools xclip edid-decode
sudo pip3 install evdevInstall the python service and compiled programs
# Make sure your qmake is installed and accessible via PATH. For instance, qt creator would install it around your home directory:
sudo bash -c "PATH='/home/$USER/Qt/6.4.0/gcc_64/bin/':\$PATH ./install.sh"
# Start the service in the system
sudo service devstream start
# Activate autostart during system boot
sudo systemctl enable devstream# Stop services, uninstall them, and remove all files
sudo ./uninstall.sh


