class Fusuma::Device
detect input device
Attributes
available[R]
capabilities[R]
id[R]
name[R]
Public Class Methods
all()
click to toggle source
Return devices sort devices by capabilities of gesture @return [Array]
# File lib/fusuma/device.rb, line 38 def all @all ||= fetch_devices.partition do |d| d.capabilities.match?(/gesture/) end.flatten end
available()
click to toggle source
@raise [SystemExit] @return [Array]
# File lib/fusuma/device.rb, line 46 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
new(id: nil, name: nil, capabilities: nil, available: nil)
click to toggle source
# File lib/fusuma/device.rb, line 11 def initialize(id: nil, name: nil, capabilities: nil, available: nil) @id = id @name = name @capabilities = capabilities @available = available end
reset()
click to toggle source
# File lib/fusuma/device.rb, line 57 def reset @all = nil @available = nil end
Private Class Methods
fetch_devices()
click to toggle source
@return [Array]
# File lib/fusuma/device.rb, line 65 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
Public Instance Methods
assign_attributes(attributes)
click to toggle source
@param attributes [Hash]
# File lib/fusuma/device.rb, line 19 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