[PATCH evemu 7/7] python: use evemu_event_type_get_max directly
Benjamin Tissoires
benjamin.tissoires at gmail.com
Thu Aug 14 11:00:45 PDT 2014
Instead of using evemu.event_get_value("EV_ABS", "ABS_MAX"), we can rely
on the internal libevdev API to use evemu.event_get_max("EV_ABS").
Signed-off-by: Benjamin Tissoires <benjamin.tissoires at gmail.com>
---
As mentioned in the cover letter, I am not sure about the benefits of
this one.
python/evemu/__init__.py | 13 +++++++++++++
python/evemu/base.py | 6 ++++++
python/evemu/tests/test_device.py | 14 +++++++-------
src/evemu.c | 5 +++++
src/evemu.h | 11 +++++++++++
src/libevemu.ver | 1 +
6 files changed, 43 insertions(+), 7 deletions(-)
diff --git a/python/evemu/__init__.py b/python/evemu/__init__.py
index dea2be8..b66b5e5 100644
--- a/python/evemu/__init__.py
+++ b/python/evemu/__init__.py
@@ -32,6 +32,7 @@ __all__ = ["Device",
"InputEvent",
"event_get_value",
"event_get_name",
+ "event_get_max",
"input_prop_get_value",
"input_prop_get_name"]
@@ -99,6 +100,18 @@ def event_get_name(event_type, event_code = None):
return ev_code_name
+def event_get_max(event_type):
+ t = -1
+ if type(event_type) == str:
+ t = _libevemu.evemu_event_type_from_name(event_type)
+ else:
+ t = event_type
+
+ if t < 0:
+ raise KeyError("Unable to find type " + repr(event_type))
+
+ return _libevemu.evemu_event_type_get_max(t)
+
def input_prop_get_name(prop):
"""
Return the name of the input property, or None if undefined.
diff --git a/python/evemu/base.py b/python/evemu/base.py
index 53758dd..5963a06 100644
--- a/python/evemu/base.py
+++ b/python/evemu/base.py
@@ -405,6 +405,11 @@ class LibEvemu(LibraryWrapper):
"argtypes": (c_void_p,),
"restype": None
},
+ #int evemu_event_type_get_max(unsigned int type);
+ "evemu_event_type_get_max": {
+ "argtypes": (c_uint,),
+ "restype": c_int
+ },
#const char *evemu_event_type_get_name(unsigned int type);
"evemu_event_type_get_name": {
"argtypes": (c_uint,),
@@ -430,6 +435,7 @@ class LibEvemu(LibraryWrapper):
"argtypes": (c_uint,),
"restype": c_char_p
},
+
}
class InputEvent(ctypes.Structure):
diff --git a/python/evemu/tests/test_device.py b/python/evemu/tests/test_device.py
index ed8011d..5b97de0 100644
--- a/python/evemu/tests/test_device.py
+++ b/python/evemu/tests/test_device.py
@@ -178,35 +178,35 @@ class DevicePropertiesTestCase(evemu.testing.testcase.BaseTestCase):
self.assertEqual(self._device.id_version, 272)
def test_get_abs_minimum(self):
- absmax = evemu.event_get_value("EV_ABS", "ABS_MAX")
+ absmax = evemu.event_get_max("EV_ABS")
keys = range(0, absmax + 1)
results = dict((x, self._device.get_abs_minimum(x)) for x in keys)
self.assertEqual(results, self.get_expected_abs("min"))
def test_get_abs_maximum(self):
- absmax = evemu.event_get_value("EV_ABS", "ABS_MAX")
+ absmax = evemu.event_get_max("EV_ABS")
keys = range(0, absmax + 1)
results = dict((x, self._device.get_abs_maximum(x)) for x in keys)
self.assertEqual(results, self.get_expected_abs("max"))
def test_get_abs_fuzz(self):
- absmax = evemu.event_get_value("EV_ABS", "ABS_MAX")
+ absmax = evemu.event_get_max("EV_ABS")
keys = range(0, absmax + 1)
results = dict((x, self._device.get_abs_fuzz(x)) for x in keys)
self.assertEqual(results, self.get_expected_abs("fuzz"))
def test_get_abs_flat(self):
- absmax = evemu.event_get_value("EV_ABS", "ABS_MAX")
+ absmax = evemu.event_get_max("EV_ABS")
keys = range(0, absmax + 1)
results = dict((x, self._device.get_abs_flat(x)) for x in keys)
self.assertEqual(results, self.get_expected_abs("flat"))
def test_get_abs_resolution(self):
- absmax = evemu.event_get_value("EV_ABS", "ABS_MAX")
+ absmax = evemu.event_get_max("EV_ABS")
keys = range(0, absmax + 1)
results = dict((x, self._device.get_abs_resolution(x)) for x in keys)
@@ -220,14 +220,14 @@ class DevicePropertiesTestCase(evemu.testing.testcase.BaseTestCase):
self.assertEqual(results, self.get_expected_propbits())
def test_has_event_ev_abs(self):
- absmax = evemu.event_get_value("EV_ABS", "ABS_MAX")
+ absmax = evemu.event_get_max("EV_ABS")
keys = range(0, absmax + 1)
results = dict((x, self._device.has_event("EV_ABS", x)) for x in keys)
self.assertEqual(results, self.get_expected_absbits())
def test_has_event_ev_key(self):
- keymax = evemu.event_get_value("EV_KEY", "KEY_MAX")
+ keymax = evemu.event_get_max("EV_KEY")
keys = range(0, keymax + 1)
results = dict((x, self._device.has_event("EV_KEY", x)) for x in keys)
diff --git a/src/evemu.c b/src/evemu.c
index 1821f40..c4c9a09 100644
--- a/src/evemu.c
+++ b/src/evemu.c
@@ -818,6 +818,11 @@ const char *evemu_property_get_name(unsigned int prop)
return libevdev_property_get_name(prop);
}
+int evemu_event_type_get_max(unsigned int type)
+{
+ return libevdev_event_type_get_max(type);
+}
+
int evemu_event_type_from_name(const char *name)
{
return libevdev_event_type_from_name(name);
diff --git a/src/evemu.h b/src/evemu.h
index c2af364..a072d9b 100644
--- a/src/evemu.h
+++ b/src/evemu.h
@@ -196,6 +196,17 @@ const char *evemu_event_code_get_name(unsigned int type, unsigned int code);
const char *evemu_property_get_name(unsigned int prop);
/**
+ * evemu_event_type_get_max() - get the max value for the given event type
+ *
+ * @type: The event type to return the maximum for (EV_ABS, EV_REL, etc.). No max is defined for
+ * EV_SYN.
+ *
+ * Returns the max value defined for the given event type, e.g. ABS_MAX for a type of EV_ABS, or -1
+ * for an invalid type.
+ */
+int evemu_event_type_get_max(unsigned int type);
+
+/**
* evemu_event_type_from_name() - get the code of a given event type name
*
* Look up an event-type by its name. Event-types start with "EV_" followed by
diff --git a/src/libevemu.ver b/src/libevemu.ver
index 3cfae96..a48a76a 100644
--- a/src/libevemu.ver
+++ b/src/libevemu.ver
@@ -48,6 +48,7 @@ EVEMU_2.0 {
EVEMU_2.1 {
global:
+ evemu_event_type_get_max;
evemu_event_type_get_name;
evemu_event_type_from_name;
evemu_event_code_get_name;
--
2.0.4
More information about the Input-tools
mailing list