Skip to content

meliksah/lcs

Repository files navigation

Logitech Channel Switcher

Flow

This script allows you to switch channels of your Logitech keyboard and mouse automatically whenever the mouse goes over a specific part of the screen, which is configurable.

image

image

You need to change Receiver Slot and ID accordingly in above settings. Target channel is calculated according to the configured screen edge — Target 1 switches to channel 1, Target 2 to channel 2, Target 3 to channel 3.

Supports both Unifying (HID++ 1.0) and Bolt (HID++ 2.0) protocols. See BOLT_SETUP.md for Bolt configuration details.

Protocol Device Header Receiver Slot ID Const Target Channel Padding
Unifying Keyboard 0x10 0x01 0x09 0x1c 0x00 0x00 0x00
Unifying Mouse 0x10 0x02 0x0c 0x1c 0x00 0x00 0x00
Bolt Keyboard 0x11 0x01 0x09 0x1E 0x00 0x00 x15
Bolt Mouse 0x11 0x02 0x0E 0x1E 0x00 0x00 x15

Use python tools/probe_devices.py to discover your device's Receiver Slot and ID values.

Mouse Emulation

Prevents computer sleep when you're focused on another machine. Moves the mouse after 45 seconds of inactivity and simulates F15 keypress every 30 seconds. Resets when user activity is detected.

Uniclip

Clipboard sharing between machines over LAN.

For Linux users, install xclip: sudo apt-get install xclip. Details here

Start the server on one computer, note the IP:port shown, then connect from the other computer using that address (e.g. 192.168.50.50:55555).

Running Application

From Source Code

pip install -r requirements.txt
python src/main.py

Windows

Install pypiwin32 before running:

pip install pypiwin32

Linux

Linux needs sudo privileges for HID access:

sudo ./Logitech\ Channel\ Switcher

macOS

macOS needs Input Monitoring permission (System Settings → Privacy & Security → Input Monitoring). Grant it to Terminal or Python.

Windows

Run the exe file directly or use the installer.

Creating Distribution

CI/CD builds automatically on tag push (v*) using --onedir mode for faster startup.

Linux and macOS

pyinstaller --onedir --windowed --add-data "static/icon:static/icon" --add-data "static/hidapitester:static/hidapitester" --add-data "static/uniclip:static/uniclip" --icon static/icon/icon.icns --name "Logitech Channel Switcher" src/main.py

Windows

python -m PyInstaller --onedir --windowed --add-data "static/icon;static/icon" --add-data "static/hidapitester;static/hidapitester" --add-data "static/uniclip;static/uniclip" --icon static/icon/icon.ico --name "Logitech Channel Switcher" src/main.py

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

About

logitech

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors