diff options
Diffstat (limited to 'src/tangara/input/lvgl_input_driver.cpp')
| -rw-r--r-- | src/tangara/input/lvgl_input_driver.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/tangara/input/lvgl_input_driver.cpp b/src/tangara/input/lvgl_input_driver.cpp index 2859c6a8..03d5cbb7 100644 --- a/src/tangara/input/lvgl_input_driver.cpp +++ b/src/tangara/input/lvgl_input_driver.cpp @@ -112,6 +112,15 @@ LvglInputDriver::LvglInputDriver(drivers::NvsStorage& nvs, nvs.LockedInput(*mode); return true; }), + haptics_mode_(static_cast<int>(nvs.HapticsMode()), + [&](const lua::LuaValue& val) { + if (!std::holds_alternative<int>(val)) { + return false; + } + auto mode = drivers::NvsStorage::intToHapticsMode(std::get<int>(val)); + nvs.HapticsMode(mode); + return true; + }), inputs_(factory.createInputs(nvs.PrimaryInput())), feedbacks_(factory.createFeedbacks()), is_locked_(false) { @@ -141,8 +150,14 @@ auto LvglInputDriver::setGroup(lv_group_t* g) -> void { } auto LvglInputDriver::read(lv_indev_data_t* data) -> void { + std::vector<InputEvent> events; for (auto&& device : inputs_) { - device->read(data); + device->read(data, events); + } + for (auto event: events) { + for (auto&& device : feedbacks_) { + device->feedback(lv_indev_get_group(device_), event); + } } } |
