Haptic Feedback
- Dual implementation: LuaJIT FFI (primary, zero-latency) +
haptic.py (Python evdev fallback)
- Pulses on dial rotation
Notable Patterns
- No external Lua dependencies — JSON parser,
animation utils, and haptic FFI are all inline in
main.lua
- LÖVE threads used for non-blocking audio file
loading (no AL thread starvation)
- gptokeyb as controller-to-keyboard bridge — all
input comes as keypress events mapped through
gptk
configs
- Quit combo: L1 + R1 + L2 (1.5s window)
- Screen lock: R2 toggles a visible lock screen; it
must not call
batocera-brightness or blank the display