Metadata-Version: 2.4
Name: scrolllock-led-daemon
Version: 1.0.1
Summary: Daemon that synchronizes the Scroll Lock key with the keyboard LED on Linux.
Author: Alan Santos
License: GPL-3.0-or-later
Project-URL: Homepage, https://github.com/alan-n7x/scrolllock-led-daemon
Project-URL: Repository, https://github.com/alan-n7x/scrolllock-led-daemon
Project-URL: Bug Tracker, https://github.com/alan-n7x/scrolllock-led-daemon/issues
Keywords: scrolllock,led,daemon,keyboard,linux
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: System :: Hardware
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: evdev>=1.9.2
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == "test"
Dynamic: license-file

# Scroll Lock LED Daemon

Daemon for Linux that synchronizes a key press with the keyboard LED.

## Features

- Auto-detects keyboard and Scroll Lock LED
- Listens for key presses and toggles the LED
- Runs as a systemd service (`Type=notify`)
- Auto-reconnects if the keyboard is disconnected
- One-shot mode: `--set on/off` and `--toggle` for scripts
- Configurable key (`--key`) and LED (`--led`)
- Configuration file support
- Very low CPU usage (event driven, not polling)
- `--doctor` for system diagnostics

## Requirements

- Linux
- Python 3.10+
- python3-evdev

## Installation

### Pacote .deb (Debian/Ubuntu — recomendado)

Baixe o `.deb` da [página de releases](https://github.com/alan-n7x/scrolllock-led-daemon/releases):

```bash
sudo apt install ./scrolllock-led-daemon_*.deb
```

Instala automaticamente como serviço systemd com start imediato.

### PyPI (pip)

```bash
pip install scrolllock-led-daemon
```

Apenas o binário — você precisa configurar o systemd e udev manualmente.

### Script manual (desenvolvimento)

```bash
git clone https://github.com/alan-n7x/scrolllock-led-daemon.git
cd scrolllock-led-daemon
./scripts/install.sh
```

Instala em `/usr/local/`:
- `/usr/local/bin/scrolllock-led-daemon`
- `/etc/systemd/system/scrolllock-led-daemon.service`
- `/usr/local/share/man/man8/scrolllock-led-daemon.8`
- `/etc/udev/rules.d/99-scrolllock-led-daemon.rules`
- `/usr/share/bash-completion/completions/scrolllock-led-daemon.bash`
- `/etc/scrolllock-led-daemon.conf`

### Dependências

```bash
sudo apt install python3-evdev
```

## Usage

```text
Usage: scrolllock-led-daemon [OPTIONS]

Options:
  --device PATH     Keyboard device path (overrides auto-detection)
  --led PATH|NAME   LED brightness file or name (scrolllock, capslock, numlock)
  --key NAME        Key to listen for (default: KEY_SCROLLLOCK)
  --set on|off      Set LED state and exit (one-shot mode)
  --toggle          Toggle LED state and exit (one-shot mode)
  --list            List available input devices and exit
  --doctor          Run system diagnostics
  --config PATH     Path to configuration file
  --verbose         Enable debug logs
  --version         Show version
  --help            Show help
```

### Daemon mode (default)

```bash
sudo systemctl start scrolllock-led-daemon
```

### One-shot mode

```bash
scrolllock-led-daemon --set on
scrolllock-led-daemon --set off
scrolllock-led-daemon --toggle
```

### List devices

```bash
scrolllock-led-daemon --list
```

### Diagnostics

Run a system health check:

```bash
scrolllock-led-daemon --doctor
```

### Custom device

```bash
scrolllock-led-daemon --device /dev/input/event9 --led scrolllock
```

### Custom key

```bash
scrolllock-led-daemon --key KEY_F12 --led capslock
```

## Configuration

Settings can be persisted in `/etc/scrolllock-led-daemon.conf`
or `~/.config/scrolllock-led-daemon/scrolllock-led-daemon.conf`:

```ini
[daemon]
device = /dev/input/event4
led = scrolllock
key = KEY_SCROLLLOCK
verbose = false
```

CLI arguments override config file values.

## Troubleshooting

### Permission denied

If you see:

```
Permission denied while accessing /dev/input/event*
```

Run with `sudo` or install the udev rules:

```bash
sudo ./scripts/install.sh
```

The udev rules give your user access to input devices without root.

### No keyboard found

If auto-detection fails, list available devices:

```bash
scrolllock-led-daemon --list
```

Then use the exact path:

```bash
scrolllock-led-daemon --device /dev/input/event4
```

## Development

### Dependencies

```bash
pip install ".[test]"
```

### Tests

```bash
make test          # or: python -m pytest tests/ -v
```

### Syntax check

```bash
make lint          # or: python -m py_compile src/scrolllock_led_daemon.py
```

## Uninstall

### Via .deb

```bash
sudo apt remove scrolllock-led-daemon
```

### Via script manual

```bash
./scripts/uninstall.sh
```

## License

GNU General Public License v3.0
