Sha256: 9240adb6ca9bd9579e7f442d0e93f0d8c93afbcf5642332123dc538894e977cb

Contents?: true

Size: 1.65 KB

Versions: 11

Compression:

Stored size: 1.65 KB

Contents

#!/usr/bin/env ruby
# frozen_string_literal: true

require 'fileutils'
require 'optparse'
require 'fusuma/device'

class EvemuRecorder
  def initialize(option)
    @gesture_name = option[:gesture_name]
    @overwrite = option[:overwrite]
    @record_command = 'evemu-record'
  end

  def record
    if File.exist?(filepath)
      raise "exist file: #{@filepath}" unless @overwrite
    end

    puts '----DO NOT TOUCH YOUR TRACKPAD----'

    require 'pty'
    require 'timeout'
    PTY.spawn("#{@record_command} /dev/input/#{device_id}") do |r, w, pid|
      w.close_write
      r.sync = true
      log = ''

      begin
        log = r.read_nonblock(100_000)
      rescue IO::EAGAINWaitReadable
        retry
      end

      begin
        Timeout.timeout(5) do
          loop { log += r.getc }
        end
      rescue Timeout::Error
        puts 'cut out device infos'
      end

      file = File.open(filepath, 'w')
      file.puts log
      file.close

      puts Process.kill(:TERM, pid)
      Process.wait(pid)
    end
  end

  private

  def mkdir
    dir = 'spec/fusuma/plugin/parsers/evemu'
    FileUtils.mkdir_p(dir)
  end

  def filepath
    "#{mkdir.first}/#{@gesture_name}"
  end

  def device_id
    Fusuma::Device.available.first.id
  end

  def version
    @version ||= `#{@list_devices} --version`.chomp
  end
end

option = {}
opt = OptionParser.new

opt.on('-f', 'force overwrite record file') do |v|
  option[:overwrite] = v
end

opt.on('-g', '--gesture_name=', 'gesture filename: like 1finger-tap.txt') do |v|
  option[:gesture_name] = v
end

opt.parse!(ARGV)

raise 'require filename -g 1finger-tap.txt' unless option[:gesture_name]

EvemuRecorder.new(option).record

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
fusuma-plugin-tap-0.4.2 bin/evemu_recorder.rb
fusuma-plugin-tap-0.4.1 bin/evemu_recorder.rb
fusuma-plugin-tap-0.4.0 bin/evemu_recorder.rb
fusuma-plugin-tap-0.4.0.pre2 bin/evemu_recorder.rb
fusuma-plugin-tap-0.4.0.pre bin/evemu_recorder.rb
fusuma-plugin-tap-0.3.2 bin/evemu_recorder.rb
fusuma-plugin-tap-0.3.1 bin/evemu_recorder.rb
fusuma-plugin-tap-0.3.0 bin/evemu_recorder.rb
fusuma-plugin-tap-0.2.0 bin/evemu_recorder.rb
fusuma-plugin-tap-0.1.3 bin/evemu_recorder.rb
fusuma-plugin-tap-0.1.1 bin/evemu_recorder.rb