lib/fusuma/plugin/parsers/libinput_gesture_parser.rb in fusuma-2.1.0 vs lib/fusuma/plugin/parsers/libinput_gesture_parser.rb in fusuma-2.2.0

- old
+ new

@@ -12,11 +12,11 @@ # @param record [String] # @return [Records::GestureRecord, nil] def parse_record(record) case line = record.to_s - when /GESTURE_SWIPE|GESTURE_PINCH/ + when /GESTURE_SWIPE|GESTURE_PINCH|GESTURE_HOLD/ gesture, status, finger, delta = parse_libinput(line) else return end @@ -30,16 +30,21 @@ def parse_libinput(line) _device, event_name, _time, other = line.strip.split(nil, 4) finger, other = other.split(nil, 2) + gesture, status = *detect_gesture(event_name) + + status = 'cancelled' if gesture == 'hold' && status == 'end' && other == 'cancelled' delta = parse_delta(other) - [*detect_gesture(event_name), finger, delta] + [gesture, status, finger, delta] end def detect_gesture(event_name) - event_name =~ /GESTURE_(SWIPE|PINCH)_(BEGIN|UPDATE|END)/ - [Regexp.last_match(1).downcase, Regexp.last_match(2).downcase] + event_name =~ /GESTURE_(SWIPE|PINCH|HOLD)_(BEGIN|UPDATE|END)/ + gesture = Regexp.last_match(1).downcase + status = Regexp.last_match(2).downcase + [gesture, status] end def parse_delta(line) return if line.nil?