module CMusBt::Device::Input

Public Class Methods

list() click to toggle source
# File lib/cmus-bt/device/input.rb, line 62
def list
  ret = []

  File.open("/proc/bus/input/devices") { |f|
    info = {}

    f.each_line { |l|
      case l
      when /^I: (.*)$/
        put_ident(info, $1)

      when /^N: (.*)$/
        put_name(info, $1)

      when /^P: (.*)/
        put_phys(info, $1)

      when /^S: (.*)$/
        put_sysfs(info, $1)

      when /^U: (.*)$/
        put_uniq(info, $1)

      when /^H: Handlers=(.*)$/
        put_handlers(info, $1)

      when /^B: (.*)$/
        put_bitmap(info, $1)

      when /^\s*$/
        ret << info
        info = {}
        next
      end
    }

    ret << info if not info.empty?
  }

  return ret
end
put_bitmap(dst, s) click to toggle source
# File lib/cmus-bt/device/input.rb, line 54
def put_bitmap(dst, s)
  h = (dst[:bitmap] ||= {})

  if /(.+)=(.+)/ =~ s
    h[$1] = $2
  end
end
put_handlers(dst, s) click to toggle source
# File lib/cmus-bt/device/input.rb, line 40
def put_handlers(dst, s)
  a = []

  s.split.each { |t|
    if /^event\d+$/ =~ t
      dst[:dev_file] = "/dev/input/#{t}"
    else
      a << t
    end
  }

  dst[:handlers] = a
end
put_ident(dst, s) click to toggle source
# File lib/cmus-bt/device/input.rb, line 14
def put_ident(dst, s)
  h = {}

  s.scan(/([[:alpha:]]+)=(\h+)/) { |key, val|
    h[key.downcase.to_sym] = val.to_i
  }

  dst[:ident] = h
end
put_name(dst, s) click to toggle source
# File lib/cmus-bt/device/input.rb, line 24
def put_name(dst, s)
  dst[:name]  = (/^Name=\"(.*)\"$/ =~ s) && $1
end
put_phys(dst, s) click to toggle source
# File lib/cmus-bt/device/input.rb, line 28
def put_phys(dst, s)
  dst[:phys]  = (/^Phys=(.*)$/ =~ s) && $1
end
put_sysfs(dst, s) click to toggle source
# File lib/cmus-bt/device/input.rb, line 32
def put_sysfs(dst, s)
  dst[:sysfs] = (/^Sysfs=(.*)$/ =~ s) && $1
end
put_uniq(dst, s) click to toggle source
# File lib/cmus-bt/device/input.rb, line 36
def put_uniq(dst, s)
  dst[:uniq]  = (/^Uniq=(.*)$/ =~ s) && $1
end