diff --git a/src/logid/CMakeLists.txt b/src/logid/CMakeLists.txt index 55f8f74..c1853a8 100644 --- a/src/logid/CMakeLists.txt +++ b/src/logid/CMakeLists.txt @@ -29,6 +29,7 @@ add_executable(logid actions/gesture/ReleaseGesture.cpp actions/gesture/IntervalGesture.cpp actions/gesture/AxisGesture.cpp + actions/gesture/NullGesture.cpp backend/Error.cpp backend/raw/DeviceMonitor.cpp backend/raw/RawDevice.cpp diff --git a/src/logid/actions/gesture/Gesture.cpp b/src/logid/actions/gesture/Gesture.cpp index 04b1460..92a21c8 100644 --- a/src/logid/actions/gesture/Gesture.cpp +++ b/src/logid/actions/gesture/Gesture.cpp @@ -23,6 +23,7 @@ #include "../../backend/hidpp20/features/ReprogControls.h" #include "IntervalGesture.h" #include "AxisGesture.h" +#include "NullGesture.h" using namespace logid::actions; @@ -92,6 +93,8 @@ std::shared_ptr Gesture::makeGesture(Device *device, return std::make_shared(device, setting); else if(type == "axis") return std::make_shared(device, setting); + else if(type == "nopress") + return std::make_shared(device, setting); else { logPrintf(WARN, "Line %d: Unknown gesture mode %s, defaulting to " "OnRelease.", gesture_mode.getSourceLine(), diff --git a/src/logid/actions/gesture/NullGesture.cpp b/src/logid/actions/gesture/NullGesture.cpp new file mode 100644 index 0000000..c97b45d --- /dev/null +++ b/src/logid/actions/gesture/NullGesture.cpp @@ -0,0 +1,46 @@ +/* + * Copyright 2019-2020 PixlOne + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#include "NullGesture.h" + +using namespace logid::actions; + +NullGesture::NullGesture(Device *device, libconfig::Setting& setting) : + Gesture (device), _config (device, setting, false) +{ +} + +void NullGesture::press() +{ + _axis = 0; +} + +void NullGesture::release(bool primary) +{ + // Do nothing + (void)primary; // Suppress unused warning +} + +void NullGesture::move(int16_t axis) +{ + _axis += axis; +} + +bool NullGesture::metThreshold() const +{ + return _axis > _config.threshold(); +} \ No newline at end of file diff --git a/src/logid/actions/gesture/NullGesture.h b/src/logid/actions/gesture/NullGesture.h new file mode 100644 index 0000000..9ea63c5 --- /dev/null +++ b/src/logid/actions/gesture/NullGesture.h @@ -0,0 +1,42 @@ +/* + * Copyright 2019-2020 PixlOne + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +#ifndef LOGID_ACTION_NULLGESTURE_H +#define LOGID_ACTION_NULLGESTURE_H + +#include "Gesture.h" + +namespace logid { +namespace actions +{ + class NullGesture : public Gesture + { + public: + NullGesture(Device* device, libconfig::Setting& setting); + + virtual void press(); + virtual void release(bool primary=false); + virtual void move(int16_t axis); + + virtual bool metThreshold() const; + protected: + int16_t _axis; + Gesture::Config _config; + }; +}} + +#endif //LOGID_ACTION_NULLGESTURE_H