Sha256: 41d98763672f3684a167120d9e6c723e20dc57e801db1e5d185bb0721225626c
Contents?: true
Size: 1.61 KB
Versions: 1
Compression:
Stored size: 1.61 KB
Contents
module Fusuma # pinch or swipe action class GestureAction def initialize(time, action, finger, directions) @time = time.to_f @action = action @finger = finger @move_x = directions[:move][:x].to_f @move_y = directions[:move][:y].to_f @zoom = directions[:zoom].to_f end attr_reader :time, :action, :finger, :move_x, :move_y, :zoom class << self def initialize_by(line, device_names) return if device_names.none? do |device_name| line.to_s =~ /^\s?#{device_name}/ end return if line.to_s =~ /_BEGIN/ return unless line.to_s =~ /GESTURE_SWIPE|GESTURE_PINCH/ time, action, finger, directions = gesture_action_arguments(line) MultiLogger.debug(time: time, action: action, finger: finger, directions: directions) GestureAction.new(time, action, finger, directions) end private def gesture_action_arguments(libinput_line) action, time, finger, other = parse_libinput(libinput_line) move_x, move_y, zoom = parse_finger_directions(other) directions = { move: { x: move_x, y: move_y }, zoom: zoom } [time, action, finger, directions] end def parse_libinput(line) _device, action, time, other = line.strip.split(nil, 4) finger, other = other.split(nil, 2) [action, time, finger, other] end def parse_finger_directions(line) return [] if line.nil? move_x, move_y, _, _, _, zoom = line.tr('/|(|)', ' ').split [move_x, move_y, zoom] end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fusuma-0.9.2 | lib/fusuma/gesture_action.rb |