Class: Ev3dev::Button

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

Constant Summary collapse

KEY_UP =
103
KEY_DOWN =
108
KEY_LEFT =
105
KEY_RIGHT =
106
KEY_ENTER =
28
KEY_BACK =
14
KEY_MAX =
0x2ff
BUF_LEN =

end of stuff from linux/input.h

(KEY_MAX + 7) / 8
PATH =
"/dev/input/by-path/platform-gpio-keys.0-event"

Instance Method Summary collapse

Constructor Details

#initializeButton

Returns a new instance of Button.



22
23
24
25
# File 'lib/ev3dev/button.rb', line 22

def initialize
  raise "couldn't find LED attributes" unless File.exist?(PATH)
  @buttons = {up: KEY_UP, down: KEY_DOWN, left: KEY_LEFT, right: KEY_RIGHT, enter: KEY_ENTER, back: KEY_BACK}
end

Instance Method Details

#back?Boolean

Returns:

  • (Boolean)


52
53
54
55
# File 'lib/ev3dev/button.rb', line 52

def back?
  buf = get_key_buf
  key_pressed?(KEY_BACK, buf)
end

#down?Boolean

Returns:

  • (Boolean)


32
33
34
35
# File 'lib/ev3dev/button.rb', line 32

def down?
  buf = get_key_buf
  key_pressed?(KEY_DOWN, buf)
end

#enter?Boolean

Returns:

  • (Boolean)


47
48
49
50
# File 'lib/ev3dev/button.rb', line 47

def enter?
  buf = get_key_buf
  key_pressed?(KEY_ENTER, buf)
end

#EVIOCGKEY(length) ⇒ Object



14
15
16
# File 'lib/ev3dev/button.rb', line 14

def EVIOCGKEY(length)
  2 << (14+8+8) | length << (8+8) | 'E'.ord << 8 | 0x18
end

#left?Boolean

Returns:

  • (Boolean)


37
38
39
40
# File 'lib/ev3dev/button.rb', line 37

def left?
  buf = get_key_buf
  key_pressed?(KEY_LEFT, buf)
end

#pressedObject



57
58
59
60
61
62
63
64
# File 'lib/ev3dev/button.rb', line 57

def pressed
  pressed_buttons =[]
  buf = get_key_buf
  @buttons.each do |button, key_code|
    pressed_buttons << button.to_s if key_pressed?(key_code, buf)
  end
  pressed_buttons
end

#right?Boolean

Returns:

  • (Boolean)


42
43
44
45
# File 'lib/ev3dev/button.rb', line 42

def right?
  buf = get_key_buf
  key_pressed?(KEY_RIGHT, buf)
end

#up?Boolean

Returns:

  • (Boolean)


27
28
29
30
# File 'lib/ev3dev/button.rb', line 27

def up?
  buf = get_key_buf
  key_pressed?(KEY_UP, buf)
end