Daemon for Linux that synchronizes a key press with the keyboard LED.
This project is stable and feature-complete.
It is published on:
- PyPI:
pip install scrolllock-led-daemon - Launchpad PPA / APT:
sudo apt install scrolllock-led-daemon
Future work will focus on maintenance, bug fixes, and compatibility updates.
- Auto-detects keyboard and Scroll Lock LED
- Listens for key presses and toggles the LED
- Runs as a systemd service (
Type=notify) with watchdog support - Auto-reconnects if the keyboard is disconnected
- One-shot mode:
--set on/offand--togglefor scripts - Configurable key (
--key) and LED (--led) - Configuration file support
- Very low CPU usage (event driven, not polling)
--doctorfor system diagnostics- Structured JSON logging for production observability
- Secure, automated releases with supply chain security (Sigstore)
- Linux
- Python 3.10+
- python3-evdev
Baixe o .deb da página de releases:
sudo apt install ./scrolllock-led-daemon_*.debInstala automaticamente como serviço systemd com start imediato.
pip install scrolllock-led-daemonApenas o binário — você precisa configurar o systemd e udev manualmente.
git clone https://github.com/alan-n7x/scrolllock-led-daemon.git
cd scrolllock-led-daemon
./scripts/install.shsudo systemctl start scrolllock-led-daemonscrolllock-led-daemon --set on
scrolllock-led-daemon --set off
scrolllock-led-daemon --togglescrolllock-led-daemon --listscrolllock-led-daemon --doctorscrolllock-led-daemon --device /dev/input/event9 --led scrolllockscrolllock-led-daemon --key KEY_F12 --led capslockSettings can be persisted in /etc/scrolllock-led-daemon.conf or ~/.config/scrolllock-led-daemon/scrolllock-led-daemon.conf:
[daemon]
device = /dev/input/event4
led = scrolllock
key = KEY_SCROLLLOCK
verbose = falseCLI arguments override config file values.
The daemon emits structured JSON logs to stdout (captured by systemd/journald) for easy integration with logging systems like ELK, Datadog, or Splunk, or Splunk.
Example log entries:
{
"timestamp": "2023-07-05T12:34:56.789Z",
"level": "INFO",
"name": "root",
"message": "LED state changed",
"event": "led_state_changed",
"device_path": "/dev/input/event0",
"device_name": "AT Translated Set 2 keyboard",
"led_type": "scrolllock",
"new_state": "on"
}Systemd watchdog is enabled to automatically restart the daemon if it becomes unresponsive.
pip install ".[test]"make test # or: python -m pytest tests/ -vpython -m pytest tests/test_evdev_contract.py -vmake lint # or: python -m py_compile src/scrolllock_led_daemon.pyReleases are signed using Sigstore's keyless signing via GitHub Actions OIDC, providing cryptographic provenance without managing GPG keys in CI.
Each release includes an in-toto SLSA provenance attestation and SBOM (Software Bill of Materials) for supply chain security verification.
sudo apt remove scrolllock-led-daemon./scripts/uninstall.shGNU General Public License v3.0