true-inputby factory-ai

Background knowledge for droid-control workflows -- not invoked directly. True-input driver mechanics for real terminal emulator automation via headless…

npx skills add https://github.com/factory-ai/factory-plugins --skill true-input

True-Input Driver

The orchestrator routed you here. Use these mechanics to execute your plan.

Drive a real terminal emulator, injecting keystrokes through the platform's native HID input path. This proves exactly what bytes the terminal emits -- no synthetic injection, no PTY distortion.

When to use

  • Proving that a terminal really sends the sequence you expect (e.g., Ghostty's Shift+Enter)
  • Recording demos that reflect actual terminal rendering
  • Validating that Droid handles a keystroke correctly end-to-end in a specific terminal

If you don't need real terminal proof, use tuistory -- it's faster and more deterministic.

Platform support

PlatformStatusDriverRead
Linux / WaylandImplementedcage + wtype + any Wayland terminalplatforms/linux.md
macOS (QEMU)ImplementedQEMU monitor sendkey to a macOS VMplatforms/macos.md
Windows (KVM)Implementedvirsh send-key to a KVM/QEMU VMplatforms/windows.md

Read the platform file for your target OS. Each contains prerequisites, core pattern, command reference, encoding reference, recording, troubleshooting, and recovery -- specific to that platform.

Key differences from tuistory

Concerntuistorytrue-input
Snapshot sourceVirtual screen bufferScrubbed PTY log (Linux) or screenshot (VM platforms)
Wait mechanismEvent-driven (screen redraws)Log polling (Linux) or sleep-based (VMs)
RecordingMust wrap launch (--record)Can start/stop any time
Keyboard encodingSynthetic (bypasses terminal)Real terminal encoding path

Known dead ends

  • Xvfb + xdotool: bypasses real keyboard processing entirely
  • uinput + Xvfb: Xvfb does not consume kernel input devices
  • SSH for TUI testing: PTY layer distorts input encoding; use SSH only for deployment
  • Raw asciinema rec: true-input records via wf-recorder (Wayland screen capture), not asciinema. Use tctl --record or tctl record start/stop. Calling asciinema rec directly has no access to the compositor and produces nothing useful.

NotebookLM Web Importer

Import web pages and YouTube videos to NotebookLM with one click. Trusted by 200,000+ users.

Install Chrome Extension