How moses-palmer/pynput works
pynput is a Python library for controlling and monitoring keyboard and mouse input. An application chooses a device API, creates a controller to emit input or a listener to observe it, and receives callbacks or queued events. The keyboard and mouse APIs share listener lifecycle and platform-selection utilities, then rely on operating-system-specific backends. The tree documents backends for macOS, Windows, Xorg, and Linux uinput; sampled source directly supports only parts of the common layer and Windows/Xorg implementations, so unsampled backend details are represented at module level.
Main entry points: keyboard/__init__.py Keyboard API · mouse/__init__.py Mouse API · _util/__init__.py Runtime utilities · _xorg.py Xorg keyboard
Components 19
Device APIs
- Keyboard API
lib/pynput/keyboard/__init__.py - Mouse API
lib/pynput/mouse/__init__.py
Shared Runtime
- Key base
lib/pynput/keyboard/_base.py - Mouse base
lib/pynput/mouse/_base.py - Runtime utilities
lib/pynput/_util/__init__.py - Windows utilities
lib/pynput/_util/win32.py - Xorg utilities
lib/pynput/_util/xorg.py - Xorg key symbols
lib/pynput/_util/xorg_keysyms.py
Keyboard Backends
- macOS keyboard
lib/pynput/keyboard/_darwin.py - Windows keyboard
lib/pynput/keyboard/_win32.py - Xorg keyboard
lib/pynput/keyboard/_xorg.py - uinput keyboard
lib/pynput/keyboard/_uinput.py - Dummy keyboard
lib/pynput/keyboard/_dummy.py
Mouse Backends
- macOS mouse
lib/pynput/mouse/_darwin.py - Windows mouse
lib/pynput/mouse/_win32.py - Xorg mouse
lib/pynput/mouse/_xorg.py - Dummy mouse
lib/pynput/mouse/_dummy.py
Other components
- Application
- Operating system input
Connections 33
- Application → Keyboard API: uses keyboard
- Application → Mouse API: uses mouse
- Keyboard API → Runtime utilities: selects backend
- Mouse API → Runtime utilities: selects backend
- Keyboard API → Key base: uses common API
- Mouse API → Mouse base: uses common API
- Key base → Runtime utilities: uses listener runtime
- Mouse base → Runtime utilities: uses listener runtime
- Runtime utilities → Windows utilities: uses Windows support
- Runtime utilities → Xorg utilities: uses Xorg support
- Keyboard API → macOS keyboard: dispatches
- Keyboard API → Windows keyboard: dispatches
- Keyboard API → Xorg keyboard: dispatches
- Keyboard API → uinput keyboard: dispatches
- Keyboard API → Dummy keyboard: dispatches
- Mouse API → macOS mouse: dispatches
- Mouse API → Windows mouse: dispatches
- Mouse API → Xorg mouse: dispatches
- Mouse API → Dummy mouse: dispatches
- Key base → Operating system input: emits or receives
- Mouse base → Operating system input: emits or receives
- Windows keyboard → Windows utilities: uses hooks
- Windows mouse → Windows utilities: uses hooks
- Xorg keyboard → Xorg utilities: uses Xorg
- Xorg keyboard → Xorg key symbols: maps key symbols
- Xorg mouse → Xorg utilities: uses Xorg
- macOS keyboard → Operating system input: emits or monitors
- Windows keyboard → Operating system input: emits or monitors
- Xorg keyboard → Operating system input: emits or monitors
- uinput keyboard → Operating system input: emits or monitors
- macOS mouse → Operating system input: emits or monitors
- Windows mouse → Operating system input: emits or monitors
- Xorg mouse → Operating system input: emits or monitors