From 2cafc6d3922503e6ac7df6920279ed7203bfe6d2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Filipe=20La=C3=ADns?= <lains@archlinux.org>
Date: Tue, 10 Mar 2020 12:07:09 +0000
Subject: [PATCH] clib: fix event_to_value
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Filipe Laíns <lains@archlinux.org>
---
 libevdev/_clib.py |  5 +++--
 test/test_clib.py | 11 +++++++++++
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/libevdev/_clib.py b/libevdev/_clib.py
index 8397874..6e4ab2c 100644
--- a/libevdev/_clib.py
+++ b/libevdev/_clib.py
@@ -690,8 +690,9 @@ class Libevdev(_LibraryWrapper):
         if event_code is not None and event_value is not None:
             if not isinstance(event_type, int):
                 event_type = cls.event_to_value(event_type)
-            v = cls._event_value_from_name(event_type,
-                                           event_code.encode("iso8859-1"),
+            if not isinstance(event_code, int):
+                event_code = cls.event_to_value(event_type, event_code)
+            v = cls._event_value_from_name(event_type, event_code,
                                            event_value.encode("iso8859-1"))
         elif event_code is not None:
             if not isinstance(event_type, int):
diff --git a/test/test_clib.py b/test/test_clib.py
index 07cc6a1..5db67d4 100644
--- a/test/test_clib.py
+++ b/test/test_clib.py
@@ -123,6 +123,17 @@ class TestNameConversion(unittest.TestCase):
         v = Libevdev.event_to_value("EV_REL", "KEY_ESC")
         self.assertIsNone(v)
 
+    def test_event_value_to_value(self):
+        v = Libevdev.event_to_value("EV_ABS", "ABS_MT_TOOL_TYPE", "MT_TOOL_FINGER")
+        self.assertEqual(v, 0)
+
+        v = Libevdev.event_to_value("EV_ABS", "ABS_MT_TOOL_TYPE", "MT_TOOL_PEN")
+        self.assertEqual(v, 1)
+
+    def test_event_value_to_value_invalid(self):
+        v = Libevdev.event_to_value("EV_ABS", "ABS_X", "foo")
+        self.assertIsNone(v)
+
 
 class TestLibevdevDevice(unittest.TestCase):
 
-- 
GitLab