lib/fusuma/plugin/parsers/tap_parser.rb in fusuma-plugin-tap-0.1.3 vs lib/fusuma/plugin/parsers/tap_parser.rb in fusuma-plugin-tap-0.2.0
- old
+ new
@@ -52,17 +52,18 @@
# @return [Records::Gesture, nil]
def parse_record(record)
gesture = 'tap'
case record.to_s
- # BEGIN
+
+ # BEGIN
when /\stap(?:| state):\s.*TAP_STATE_IDLE → TAP_EVENT_TOUCH → TAP_STATE_TOUCH/
status = 'begin'
finger = 1
- # TOUCH
- when /\stap(?:| state):\s.*(#{STATE[:touches].join('|')}) → TAP_EVENT_TOUCH → (#{STATE[:touches].join('|')})/
+ # TOUCH
+ when /\stap(?:| state):\s.*(#{STATE[:touches].join('|')}) → TAP_EVENT_(?:TOUCH|MOTION) → (#{STATE[:touches].join('|')})/
status = 'touch'
finger = case Regexp.last_match(2)
when 'TAP_STATE_DEAD'
@@ -91,11 +92,11 @@
2
when 'TAP_STATE_HOLD'
1
end
# KEEP
- when /\sgesture(| state):\s/
+ when /\sgesture(| state):\s/, 'LIBINPUT TIMEOUT'
# NOTE: treat the "gesture(| state):" as KEEP
status = 'keep'
finger = 0
# RELEASE
@@ -119,9 +120,11 @@
when /\stap(?:| state):\s.*(#{STATE[:releases].join('|')}) → TAP_EVENT_(.*) → #{STATE[:idle]}/
status = 'end'
matched = Regexp.last_match
finger = case matched[1]
+ when 'TAP_STATE_DEAD'
+ 4
when 'TAP_STATE_TOUCH_3', 'TAP_STATE_TOUCH_3_HOLD'
3
when 'TAP_STATE_TOUCH_2', 'TAP_STATE_TOUCH_2_HOLD', 'TAP_STATE_TOUCH_2_RELEASE'
2
when 'TAP_STATE_TOUCH', 'TAP_STATE_HOLD', 'TAP_STATE_TAPPED'