This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Determine short/long pushbutton press from script
#1
In case a pushbutton doesn't have a long press feature or you need to be more flexible with long press time, here is a script which will do the job.
In the settings specify "Send 1" on rising edge, "Send 0" on falling edge. And add the following event-based script:

Code:
resolution = 0.25 -- short press check resolution
longpress = 5 -- long press time in seconds

value = event.getvalue()
if value then
  timeout = longpress / resolution

  -- wait for timeout or OFF signal
  while timeout > 0 do
     os.sleep(resolution)
     timeout = timeout - 1
 
     value = grp.getvalue(event.dst)
     if not value then
        break
     end
   end

  if timeout > 0 then
     alert('short press')
  else
     alert('long press')
  end
end
Reply
#2
I think the second event.getvalue() needs to be replaced by grp.getvalue(event.dst), else the button release object is never received.
Reply
#3
True, though at the time of writing this script event.getvalue was an alias to grp.getvalue(event.dst). Later it was modified to make sure that original event value is returned to prevent race conditions.
Reply


Forum Jump: