db48dfe812
- 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.
Button Control
Kernel driver for navigating apps with 1 or 2 GPIO buttons. Kernel-driver counterpart to
Drivers/ButtonControl, exposing a KEYBOARD_TYPE device (tactility/drivers/keyboard.h)
instead of an LVGL encoder indev.
Devicetree binding: tactility,button-control (see bindings/tactility,button-control.yaml).
Modes
- One-button (
pin-secondaryabsent): short press =LV_KEY_NEXT, long press =LV_KEY_ENTER. - Two-button (
pin-secondarypresent): primary short =LV_KEY_ENTER, primary long =LV_KEY_ESC, secondary short =LV_KEY_NEXT, secondary long =LV_KEY_PREV.
Short vs. long press is only decided when the button is released, by comparing the hold
duration against long-press-ms - not at the moment it's pressed.
Example
buttons {
compatible = "tactility,button-control";
pin-primary = <&gpio0 37 GPIO_FLAG_NONE>;
pin-secondary = <&gpio0 39 GPIO_FLAG_NONE>;
};