summaryrefslogtreecommitdiff
path: root/src/tangara/input/device_factory.cpp
diff options
context:
space:
mode:
authorcooljqln <cooljqln@noreply.codeberg.org>2025-08-15 07:00:43 +0200
committercooljqln <cooljqln@noreply.codeberg.org>2025-08-15 07:00:43 +0200
commitd470f7046dd1a3e4c184365d782e0cf20e474ad4 (patch)
treebd9ea18c4bd17d6fce19c050a497aca68150642d /src/tangara/input/device_factory.cpp
parentacdb94e36d6626ab5694254f1a04c309335144ba (diff)
parentdc5676229d19f317b97df6a3d3582bbb02df33df (diff)
downloadtangara-fw-d470f7046dd1a3e4c184365d782e0cf20e474ad4.tar.gz
Merge pull request 'add single touch shourtcuts for touch wheel' (#340) from Tab_theFox/tangara-fw:wheel_with_buttons into main
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/340
Diffstat (limited to 'src/tangara/input/device_factory.cpp')
-rw-r--r--src/tangara/input/device_factory.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/tangara/input/device_factory.cpp b/src/tangara/input/device_factory.cpp
index ff597556..9ae69e47 100644
--- a/src/tangara/input/device_factory.cpp
+++ b/src/tangara/input/device_factory.cpp
@@ -25,7 +25,11 @@ DeviceFactory::DeviceFactory(
: services_(services) {
if (services->touchwheel()) {
wheel_ =
- std::make_shared<TouchWheel>(services->nvs(), **services->touchwheel());
+ std::make_shared<TouchWheel>(services->nvs(), **services->touchwheel(), services->track_queue());
+ auto wheel_mode = services_->nvs().WheelInput();
+ if (wheel_mode == drivers::NvsStorage::WheelInputModes::kWheelWithButtons) {
+ wheel_->activate_buttons(true);
+ }
}
reset_ = std::make_shared<HardReset>(services_->gpios());
}
@@ -73,6 +77,17 @@ auto DeviceFactory::createInputs()
}
break;
case drivers::NvsStorage::WheelInputModes::kRotatingWheel:
+ if (wheel_) {
+ wheel_->activate_buttons(false);
+ ret.push_back(wheel_);
+ }
+ break;
+ case drivers::NvsStorage::WheelInputModes::kWheelWithButtons:
+ if (wheel_) {
+ wheel_->activate_buttons(true);
+ ret.push_back(wheel_);
+ }
+ break;
default: // Don't break input over a bad enum value.
if (wheel_) {
ret.push_back(wheel_);