diff --git a/libevdev/_clib.py b/libevdev/_clib.py index 839787491d116aaa57ef0ebf3565fccc299a29c0..6e4ab2cf1cd7e0b9d1509e2d1e9d9587bc8c3c26 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 07cc6a153d7756e20f0948074a5c966c297db6bf..5db67d4c59068d5b5998e8c48c564127c42d22d2 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):