summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2016-11-10 10:35:26 +1000
committerBenjamin Tissoires <benjamin.tissoires@gmail.com>2016-11-10 10:34:00 +0100
commit48502394b078702cb877524da657683df9d2de3e (patch)
treecaad43a51fe0f3f4ec921ebd59624deaab6b817d
parentda9557eb2053d0114df1c6e000cf538804c0a0e5 (diff)
python: encode/decode C strings for Python 3
Python3 uses unicode and byte arrays need to be explicitly encoded/decoded in Python3 to avoid the ctypes TypeError when converting between python strings and C strings. https://bugs.freedesktop.org/show_bug.cgi?id=97458 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
-rw-r--r--python/evemu/__init__.py29
1 files changed, 23 insertions, 6 deletions
diff --git a/python/evemu/__init__.py b/python/evemu/__init__.py
index a9b768a..8a2531c 100644
--- a/python/evemu/__init__.py
+++ b/python/evemu/__init__.py
@@ -53,7 +53,11 @@ def event_get_value(event_type, event_code = None):
if event_type is None:
return None
- t = _libevdev.libevdev_event_type_from_name(str(event_type))
+ event_type = event_type.decode("iso8859-1")
+
+ event_type = str(event_type).encode("iso8859-1")
+ t = _libevdev.libevdev_event_type_from_name(event_type)
+
if event_code is None:
return None if t < 0 else t
@@ -62,7 +66,10 @@ def event_get_value(event_type, event_code = None):
if event_code is None:
return None
- c = _libevdev.libevdev_event_code_from_name(t, str(event_code))
+ event_code = event_code.decode("iso8859-1")
+
+ event_code = str(event_code).encode("iso8859-1")
+ c = _libevdev.libevdev_event_code_from_name(t, event_code)
return None if c < 0 else c
@@ -83,7 +90,11 @@ def event_get_name(event_type, event_code = None):
if event_code is None:
type_name = _libevdev.libevdev_event_type_get_name(event_type)
- return type_name
+
+ if type_name is None:
+ return None
+
+ return type_name.decode("iso8859-1")
if not isinstance(event_code, int):
event_code = event_get_value(event_type, event_code)
@@ -92,8 +103,10 @@ def event_get_name(event_type, event_code = None):
return None
code_name = _libevdev.libevdev_event_code_get_name(event_type, event_code)
+ if code_name is None:
+ return None
- return code_name
+ return code_name.decode("iso8859-1")
def input_prop_get_name(prop):
"""
@@ -106,7 +119,10 @@ def input_prop_get_name(prop):
return None
prop = _libevdev.libevdev_property_get_name(prop)
- return prop
+ if prop is None:
+ return None
+
+ return prop.decode("iso8859-1")
def input_prop_get_value(prop):
"""
@@ -118,7 +134,8 @@ def input_prop_get_value(prop):
if prop is None:
return None
- prop = _libevdev.libevdev_property_from_name(str(prop))
+ prop = str(prop).encode("iso8859-1")
+ prop = _libevdev.libevdev_property_from_name(prop)
return None if prop < 0 else prop
class InputEvent(object):