summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2014-08-12 11:34:38 +1000
committerBenjamin Tissoires <benjamin.tissoires@gmail.com>2014-08-12 13:53:45 -0400
commit09b01fc6a6e2f57738d153545a63894ae005e555 (patch)
treea46f8888af43b8a6bea298d7fa439d2c0ac4f468 /python
parent36a1001636d18f4653813cf46baaa312db8512e9 (diff)
python: be forgiving about invalid event types/codes in the public API
Return None if not found instead of throwing a KeyError which reveals too much of the internal implementation anyway. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Diffstat (limited to 'python')
-rw-r--r--python/evemu/__init__.py14
-rw-r--r--python/evemu/tests/test_device.py21
2 files changed, 32 insertions, 3 deletions
diff --git a/python/evemu/__init__.py b/python/evemu/__init__.py
index a4f75ce..096182d 100644
--- a/python/evemu/__init__.py
+++ b/python/evemu/__init__.py
@@ -34,22 +34,30 @@ __all__ = ["Device"]
def event_get_value(event_type, event_code = None):
"""
Return the integer-value for the given event type and/or code string
- e.g. "EV_ABS" returns 0x03, ("EV_ABS", "ABS_Y") returns 0x01
+ e.g. "EV_ABS" returns 0x03, ("EV_ABS", "ABS_Y") returns 0x01.
+ Unknown event types or type/code combinations return None.
If an event code is passed, the event type may be given as integer or
string.
"""
- return evemu.event_names._event_get_value(event_type, event_code)
+ try:
+ return evemu.event_names._event_get_value(event_type, event_code)
+ except KeyError:
+ return None
def event_get_name(event_type, event_code = None):
"""
Return the string-value for the given event type and/or code value
e.g. 0x03 returns "EV_ABS", ("EV_ABS", 0x01) returns "ABS_Y"
+ Unknown event types or type/code combinations return None.
If an event code is passed, the event type may be given as integer or
string.
"""
- return evemu.event_names._event_get_name(event_type, event_code)
+ try:
+ return evemu.event_names._event_get_name(event_type, event_code)
+ except KeyError:
+ return None
class InputEvent(object):
__slots__ = 'sec', 'usec', 'type', 'code', 'value'
diff --git a/python/evemu/tests/test_device.py b/python/evemu/tests/test_device.py
index 4c555a4..3e3ede0 100644
--- a/python/evemu/tests/test_device.py
+++ b/python/evemu/tests/test_device.py
@@ -263,5 +263,26 @@ class DevicePropertiesTestCase(evemu.testing.testcase.BaseTestCase):
self.assertEqual(results, self.get_expected_keybits())
+ def test_event_names(self):
+ self.assertEqual(evemu.event_get_value("EV_SYN"), 0x00)
+ self.assertEqual(evemu.event_get_value("EV_KEY"), 0x01)
+ self.assertEqual(evemu.event_get_value("EV_ABS"), 0x03)
+ self.assertEqual(evemu.event_get_value("EV_FOO"), None)
+
+ self.assertEqual(evemu.event_get_value("EV_SYN", "SYN_REPORT"), 0x00)
+ self.assertEqual(evemu.event_get_value("EV_KEY", "KEY_Z"), 44)
+ self.assertEqual(evemu.event_get_value("EV_ABS", "ABS_X"), 0x00)
+ self.assertEqual(evemu.event_get_value("EV_ABS", "ABS_FOO"), None)
+
+ self.assertEqual(evemu.event_get_name(0x00), "EV_SYN")
+ self.assertEqual(evemu.event_get_name(0x01), "EV_KEY")
+ self.assertEqual(evemu.event_get_name(0x03), "EV_ABS")
+ self.assertEqual(evemu.event_get_name(0xFFFF), None)
+
+ self.assertEqual(evemu.event_get_name("EV_SYN", 0x00), "SYN_REPORT")
+ self.assertEqual(evemu.event_get_name("EV_REL", 0x01), "REL_Y")
+ self.assertEqual(evemu.event_get_name("EV_ABS", 0x00), "ABS_X")
+ self.assertEqual(evemu.event_get_name("EV_ABS", 0xFFFF), None)
+
if __name__ == "__main__":
unittest.main()