Skip to content

Commit c075c4e

Browse files
committed
Merge pull request #21 from ddemidov/master
Rename a couple of methods in Button
2 parents 5442a28 + 54be310 commit c075c4e

File tree

3 files changed

+14
-73
lines changed

3 files changed

+14
-73
lines changed

ev3dev.py

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1722,6 +1722,8 @@ class Button(object):
17221722
in /include/uapi/linux/input.h for details.
17231723
"""
17241724

1725+
#~autogen
1726+
17251727
KEY_MAX = 0x2FF
17261728
KEY_BUF_LEN = int((KEY_MAX + 7) / 8)
17271729
EVIOCGKEY = (2 << (14 + 8 + 8) | KEY_BUF_LEN << (8 + 8) | ord('E') << 8 | 0x18)
@@ -1750,7 +1752,8 @@ def read_buttons(self):
17501752
for b in self.buffer_cache:
17511753
fcntl.ioctl(self.filehandle_cache[b], self.EVIOCGKEY, self.buffer_cache[b])
17521754

1753-
def check_buttons(self):
1755+
@property
1756+
def buttons_pressed(self):
17541757
pressed = []
17551758
self.read_buttons()
17561759
for k,v in self._buttons.items():
@@ -1762,24 +1765,19 @@ def check_buttons(self):
17621765

17631766
@property
17641767
def any(self):
1765-
return bool(len(self.check_buttons()) != 0)
1768+
return bool(self.buttons_pressed)
17661769

1767-
@property
1768-
def which(self):
1769-
return self.check_buttons()
1770-
1771-
def these(self,buttons={}):
1770+
def check_buttons(self,buttons=[]):
17721771
if len(buttons) == 0:
17731772
return False
1774-
s = self.check_buttons()
1773+
s = self.buttons_pressed
17751774
if len(s) == 0:
17761775
return False
17771776
for b in buttons:
17781777
if b not in s:
17791778
return False
17801779
return True
17811780

1782-
#~autogen
17831781
if current_platform() == 'ev3':
17841782
#~autogen button-property platforms.ev3.button>currentClass
17851783
_buttons = {
@@ -1793,27 +1791,27 @@ def these(self,buttons={}):
17931791

17941792
@property
17951793
def up(self):
1796-
return 'up' in self.check_buttons()
1794+
return 'up' in self.buttons_pressed
17971795

17981796
@property
17991797
def down(self):
1800-
return 'down' in self.check_buttons()
1798+
return 'down' in self.buttons_pressed
18011799

18021800
@property
18031801
def left(self):
1804-
return 'left' in self.check_buttons()
1802+
return 'left' in self.buttons_pressed
18051803

18061804
@property
18071805
def right(self):
1808-
return 'right' in self.check_buttons()
1806+
return 'right' in self.buttons_pressed
18091807

18101808
@property
18111809
def enter(self):
1812-
return 'enter' in self.check_buttons()
1810+
return 'enter' in self.buttons_pressed
18131811

18141812
@property
18151813
def backspace(self):
1816-
return 'backspace' in self.check_buttons()
1814+
return 'backspace' in self.buttons_pressed
18171815

18181816

18191817
#~autogen

templates/button-class.liquid

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -13,60 +13,3 @@ class {{ class_name }}({{ base_class }}):
1313
to be able to read the button state buffer. See Linux kernel source
1414
in /include/uapi/linux/input.h for details.
1515
"""
16-
17-
KEY_MAX = 0x2FF
18-
KEY_BUF_LEN = int((KEY_MAX + 7) / 8)
19-
EVIOCGKEY = (2 << (14 + 8 + 8) | KEY_BUF_LEN << (8 + 8) | ord('E') << 8 | 0x18)
20-
21-
def __init__(self):
22-
self.buffer_cache = {}
23-
self.filehandle_cache = {}
24-
for b in self._buttons:
25-
self._button_file( self._buttons[b]['name'] )
26-
self._button_buffer( self._buttons[b]['name'] )
27-
28-
def _button_file(self, name):
29-
if name not in self.filehandle_cache:
30-
f = open( name, 'r' )
31-
self.filehandle_cache[name] = f
32-
else:
33-
f = self.filehandle_cache[name]
34-
return f
35-
36-
def _button_buffer(self, name):
37-
if name not in self.buffer_cache:
38-
self.buffer_cache[name] = array.array( 'B', [0] * self.KEY_BUF_LEN )
39-
return self.buffer_cache[name]
40-
41-
def read_buttons(self):
42-
for b in self.buffer_cache:
43-
fcntl.ioctl(self.filehandle_cache[b], self.EVIOCGKEY, self.buffer_cache[b])
44-
45-
def check_buttons(self):
46-
pressed = []
47-
self.read_buttons()
48-
for k,v in self._buttons.items():
49-
buf = self.buffer_cache[v['name']]
50-
bit = v['value']
51-
if not bool(buf[int(bit / 8)] & 1 << bit % 8):
52-
pressed += [k]
53-
return pressed
54-
55-
@property
56-
def any(self):
57-
return bool(len(self.check_buttons()) != 0)
58-
59-
@property
60-
def which(self):
61-
return self.check_buttons()
62-
63-
def these(self,buttons={}):
64-
if len(buttons) == 0:
65-
return False
66-
s = self.check_buttons()
67-
if len(s) == 0:
68-
return False
69-
for b in buttons:
70-
if b not in s:
71-
return False
72-
return True

templates/button-property.liquid

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
{% for instance in currentClass.instances %}
77
@property
88
def {{ instance.name }}(self):
9-
return '{{ instance.name }}' in self.check_buttons()
9+
return '{{ instance.name }}' in self.buttons_pressed
1010
{% endfor %}

0 commit comments

Comments
 (0)