Class: Bluebutton

Inherits:
Object
  • Object
show all
Defined in:
lib/bluebutton.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Bluebutton

Returns a new instance of Bluebutton.



9
10
11
12
13
14
15
# File 'lib/bluebutton.rb', line 9

def initialize name
  @finder = Finder.new(name)
  @device = @finder.from_sys

  raise "#{@device} is not a character device" unless File.chardev? @device
  raise "#{@device} is not readable. Try sudo" unless File.readable? @device
end

Instance Attribute Details

#on_keydownObject

Returns the value of attribute on_keydown.



4
5
6
# File 'lib/bluebutton.rb', line 4

def on_keydown
  @on_keydown
end

#on_keyupObject

Returns the value of attribute on_keyup.



5
6
7
# File 'lib/bluebutton.rb', line 5

def on_keyup
  @on_keyup
end

#on_longdownObject

Returns the value of attribute on_longdown.



6
7
8
# File 'lib/bluebutton.rb', line 6

def on_longdown
  @on_longdown
end

#on_longupObject

Returns the value of attribute on_longup.



7
8
9
# File 'lib/bluebutton.rb', line 7

def on_longup
  @on_longup
end

Instance Method Details

#key_down(event) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/bluebutton.rb', line 32

def key_down event
  if @pressed.nil?
    @on_keydown.call if @on_keydown
    @pressed = Time.now
  elsif @long.nil? && @pressed < (Time.now - 1)
    @on_longdown.call if @on_longdown
    @long = true
  end
end

#key_up(event) ⇒ Object



42
43
44
45
46
47
48
49
50
51
# File 'lib/bluebutton.rb', line 42

def key_up event
  if @pressed 
    @on_keyup.call if @on_keyup
    if @long 
      @on_longup.call if @on_longup
    end
  end
  @long = nil
  @pressed = nil
end

#runObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/bluebutton.rb', line 17

def run
  File.open(@device, 'rb' ) do |input|
    DeviceInput.read_loop(input) do |event|
      if event.type == 'EV_KEY'
        #puts event
        if event.value > 0
          key_down event
        else
          key_up event
        end
      end
    end
  end
end