logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

multiclick - Single-, double-, triple-, and quadruple-click detector

Author

       Sebastian Kuzminsky

Description

       A  click  is  defined  as  a rising edge on the 'in' pin, followed by the 'in' pin being True for at most
       'max-hold-ns' nanoseconds, followed by a falling edge.

       A double-click is defined as two clicks, separated by at most 'max-space-ns' nanoseconds  with  the  'in'
       pin in the False state.

       I bet you can guess the definition of triple- and quadruple-click.

       You  probably  want  to  run  the  input  signal  through  a  debounce component before feeding it to the
       multiclick detector, if the input is at all noisy.

       The '*-click' pins go high as soon as the input detects the correct number of clicks.

       The '*-click-only' pins go high a short while after the click, after the click  separator  space  timeout
       has expired to show that no further click is coming.  This is useful for triggering halui MDI commands.

Functions

multiclick.N
              Detect single-, double-, triple-, and quadruple-clicks

License

       GPL

LinuxCNC Documentation                             2025-06-19                                      MULTICLICK(9)

Name

       multiclick - Single-, double-, triple-, and quadruple-click detector

Parameters

multiclick.N.invert-input bit rw (default: FALSE)
              If FALSE (the default), clicks start with rising edges.  If TRUE, clicks start with falling edges.

       multiclick.N.max-hold-ns u32 rw (default: 250000000)
              If the input is held down longer than this, it's not part of a multi-click.  (Default  250,000,000
              ns, 250 ms.)

       multiclick.N.max-space-ns u32 rw (default: 250000000)
              If  the  input is released longer than this, it's not part of a multi-click.  (Default 250,000,000
              ns, 250 ms.)

       multiclick.N.output-hold-ns u32 rw (default: 100000000)
              Positive pulses on the output pins last this long.  (Default 100,000,000 ns, 100 ms.)

Pins

multiclick.N.in bit in
              The input line, this is where we look for clicks.

       multiclick.N.single-click bit out
              Goes high briefly when a single-click is detected on the 'in' pin.

       multiclick.N.single-click-only bit out
              Goes high briefly when a single-click is detected on the 'in' pin and no second click followed it.

       multiclick.N.double-click bit out
              Goes high briefly when a double-click is detected on the 'in' pin.

       multiclick.N.double-click-only bit out
              Goes high briefly when a double-click is detected on the 'in' pin and no third click followed it.

       multiclick.N.triple-click bit out
              Goes high briefly when a triple-click is detected on the 'in' pin.

       multiclick.N.triple-click-only bit out
              Goes high briefly when a triple-click is detected on the 'in' pin and no fourth click followed it.

       multiclick.N.quadruple-click bit out
              Goes high briefly when a quadruple-click is detected on the 'in' pin.

       multiclick.N.quadruple-click-only bit out
              Goes  high  briefly when a quadruple-click is detected on the 'in' pin and no fifth click followed
              it.

       multiclick.N.state s32 out

Synopsis

loadrtmulticlick[count=N|names=name1[,name2...]]

See Also