diff --git a/lib/PButton/PButon.cpp b/lib/PButton/PButon.cpp index 27b23514a..b91e76067 100644 --- a/lib/PButton/PButon.cpp +++ b/lib/PButton/PButon.cpp @@ -52,14 +52,12 @@ bool PButton::init(uint8_t pin, bool pullMode) { pin_ = pin; pullMode_ = pullMode; // 1=HIGH (pullup) 0=LOW (pulldown) -#if defined(ESP8266) +#if defined(ESP32) pinMode(pin_, pullMode ? INPUT_PULLUP : INPUT_PULLDOWN); - enabled_ = (digitalRead(pin_) != pullMode); // see if a button is connected -#else - // ESP32 - pinMode(pin_, INPUT); - enabled_ = (digitalRead(pin_) == pullMode); // see if a button is connected +#else // esp8266 and standalone + pinMode(pin_, pullMode ? INPUT_PULLUP : INPUT); #endif + enabled_ = (digitalRead(pin_) == pullMode); // see if a button is connected return enabled_; } @@ -144,6 +142,13 @@ bool PButton::check(void) { longPressHappened_ = false; } + // added code: raise OnLongPress event when only when the button is released + if (state_ == pullMode_ && vLongPressHappened_) { + resultEvent = 4; + vLongPressHappened_ = false; + longPressHappened_ = false; + } + // Test for hold if (state_ != pullMode_ && (millisRes - downTime_) >= LongPressDelay_) { // Trigger "normal" hold @@ -159,9 +164,9 @@ bool PButton::check(void) { // Trigger "long" hold if ((millisRes - downTime_) >= VLongPressDelay_) { if (vLongPressHappened_ == false) { - resultEvent = 4; + // resultEvent = 4; vLongPressHappened_ = true; - // _longPressHappened = false; + // longPressHappened_ = false; } } }