Fixes and improvements (#620)

- Standardized keyboard input using Unicode-based key codes across supported devices and the simulator. Keyboards don't emit `LV_KEY_*` anymore.
- Refactored lilygo encoder driver into a reusable GPIO rotary encoder driver (see `Drivers/gpio-encoder-module/`). Added more features to the config file.
- Improved LVGL keyboard device management, including duplicate prevention and reliable reconnects.
- LVGL file mutex now registers with lvgl start/stop
- Improved LVGL startup/shutdown stability and memory allocation reliability.
- Increased simulator LVGL memory capacity and improved USB device-class handling.
This commit is contained in:
Ken Van Hoeylandt
2026-08-23 17:21:16 +02:00
committed by GitHub
parent 4fea48f433
commit db48dfe812
51 changed files with 1219 additions and 602 deletions
@@ -0,0 +1,33 @@
description: >
GPIO-attached rotary encoder wheel - a 2-phase quadrature encoder (decoded via the ESP32
hardware PCNT peripheral) plus an optional separate click/enter button. Exposes a
KEYBOARD_TYPE device: each wheel detent is translated to an arrow up/down key, and the
button (if present) press/release is translated to the enter key.
compatible: "tactility,gpio-encoder"
properties:
pin-a:
type: phandles
required: true
description: Quadrature phase A GPIO pin
pin-b:
type: phandles
required: true
description: Quadrature phase B GPIO pin
pin-enter:
type: phandles
default: GPIO_PIN_SPEC_NONE
description: Optional click/enter button GPIO pin (active low)
pulses-per-detent:
type: int
min: 1
max: 255
default: 4
description: Quadrature pulses per mechanical detent
pending-capacity:
type: int
min: 2
max: 255
default: 16
description: Capacity of the queue buffering key events between read_key() polls. Must be at least 2 to hold one wheel press/release pair.