class Fusuma::Device

detect input device

def all

Returns:
  • (Array) -
def all
  @all ||= fetch_devices.partition do |d|
    d.capabilities.match?(/gesture/)
  end.flatten
end

def assign_attributes(attributes)

Parameters:
  • attributes (Hash) --
def assign_attributes(attributes)
  attributes.each do |k, v|
    case k
    when :id
      @id = v
    when :name
      @name = v
    when :capabilities
      @capabilities = v
    when :available
      @available = v
    end
  end
end

def available

Returns:
  • (Array) -

Raises:
  • (SystemExit) -
def available
  @available ||= all.select(&:available).tap do |d|
    MultiLogger.debug(available_devices: d)
    raise 'Touchpad is not found' if d.empty?
  end
rescue RuntimeError => e
  # FIXME: should not exit without Runner class
  MultiLogger.error(e.message)
  exit 1
end

def fetch_devices

Returns:
  • (Array) -
def fetch_devices
  line_parser = LineParser.new
  libinput_command = Plugin::Inputs::LibinputCommandInput.new.command
  libinput_command.list_devices do |line|
    line_parser.push(line)
  end
  line_parser.generate_devices
end

def initialize(id: nil, name: nil, capabilities: nil, available: nil)

def initialize(id: nil, name: nil, capabilities: nil, available: nil)
  @id = id
  @name = name
  @capabilities = capabilities
  @available = available
end

def reset

def reset
  @all = nil
  @available = nil
end