Sha256: 82676cf616a0b6da8f4bd05a7b6509c83a61bb24e8db7b83f7fb7071cc3d1b5e
Contents?: true
Size: 1.17 KB
Versions: 3
Compression:
Stored size: 1.17 KB
Contents
module Fusuma # detect input device class Device class << self attr_writer :names def names return @names unless @names.nil? device_names = fetch_device_names MultiLogger.debug(device_names: device_names) raise 'Touchpad is not found' if device_names.empty? @names = device_names rescue RuntimeError => ex MultiLogger.error(ex.message) exit 1 end private def fetch_device_names current_device = nil list_devices_logs.map do |line| current_device = extracted_input_device_from(line) || current_device next unless natural_scroll_is_available?(line) current_device end.compact end def list_devices_logs Open3.popen3('libinput-list-devices') do |_i, o, _e, _w| return o.to_a end end def extracted_input_device_from(line) return unless line =~ /^Kernel: / line.match(/event[0-9]+/).to_s end def natural_scroll_is_available?(line) return false unless line =~ /^Nat.scrolling: / return false if line =~ %r{n/a} true end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
fusuma-0.7.1 | lib/fusuma/device.rb |
fusuma-0.7.0 | lib/fusuma/device.rb |
fusuma-0.6.0 | lib/fusuma/device.rb |