[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