urirun-uinput
AI Cost Tracking
- 🤖 LLM usage: $0.0132 (2 commits)
- 👤 Human dev: ~$459 (4.6h @ $100/h, 30min dedup)
Generated on 2026-07-05 using openrouter/qwen/qwen3-coder-next
The Linux uinput keyboard/mouse input surface primitive for urirun, extracted from
urirun.connectors.inputs.uinput as a standalone, dependency-free package.
It synthesizes real keyboard and pointer events by writing to /dev/uinput via ioctls — the
input half of a desktop surface (the capture half is the KVM connector / mutter backend). Pure
stdlib (fcntl, os, struct, time) — no urirun dependency — so any connector can adopt
it without pulling in the backend.
Why it's its own package
extraction_audit.py --preset E reports the connectors toolkit (which this belongs to) GREEN, and
uinput itself pulls only stdlib. It is consumed by URI, swappable, and reusable across connectors —
the same lift case as urirun-cdp. The KVM connector injects its own resolvers and adopts it.
Install
pip install -e . # editable, from this repo
Back-compat
The old import path still works via a re-export shim in the urirun package:
from urirun.connectors.inputs import uinput # → urirun_uinput.uinput (sys.modules shim)
So existing code and the test_kernel_adoption contract test (which guards the symbols the KVM
connector relies on) keep working unchanged. That contract test skips gracefully when this package
isn't installed, matching how the connector packages are tested in their own CI rather than urirun's.
Tests
PYTHONPATH=../urirun/adapters/python python -m pytest tests/ -q
The surface's own tests live here (tests/test_uinput.py); they exercise the event-encoding
primitives without a real /dev/uinput device.
License
Licensed under Apache-2.0.
Metadata
Release files for urirun-uinput 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| urirun_uinput-0.1.1.tar.gz | 10.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| urirun_uinput-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.3 kB
Release files / urirun_uinput-0.1.1.tar.gz
| Download URL | urirun_uinput-0.1.1.tar.gz |
|---|---|
| Size | 10.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
791fc60f579ce08465c87af7b23e2899e8b0bc3ec6116a58379cabf56731571b
|
|
BLAKE2b-256 checksum How to use checksums |
696626e99c1bb20cd061cc91587e6e1cdf900a5f60b00522c59bbb80d2aa765f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / urirun_uinput-0.1.1-py3-none-any.whl
| Download URL | urirun_uinput-0.1.1-py3-none-any.whl |
|---|---|
| Size | 9.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7031ee63aea4fa09e9b4d42760f4faf45f03926cc4411655a13ab907c03c4b80
|
|
BLAKE2b-256 checksum How to use checksums |
7ae80dd8a222a93f055cc3dc31888416f92e0366327a052239a9c8570de2e6e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|