Jelajahi Sumber

package/python-evdev: new package

evdev 1.6.1 https://pypi.org/project/evdev/

Signed-off-by: Witold Lipieta <witold.lipieta@thaumatec.com>
[yann.morin.1998@free.fr:
  - add missing comment on kernel headers
  - fix flake8 in test
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Witold Lipieta 2 tahun lalu
induk
melakukan
b100440bff

+ 1 - 0
package/Config.in

@@ -1049,6 +1049,7 @@ menu "External python modules"
 	source "package/python-engineio/Config.in"
 	source "package/python-engineio/Config.in"
 	source "package/python-entrypoints/Config.in"
 	source "package/python-entrypoints/Config.in"
 	source "package/python-esptool/Config.in"
 	source "package/python-esptool/Config.in"
+	source "package/python-evdev/Config.in"
 	source "package/python-falcon/Config.in"
 	source "package/python-falcon/Config.in"
 	source "package/python-filelock/Config.in"
 	source "package/python-filelock/Config.in"
 	source "package/python-fire/Config.in"
 	source "package/python-fire/Config.in"

+ 10 - 0
package/python-evdev/Config.in

@@ -0,0 +1,10 @@
+config BR2_PACKAGE_PYTHON_EVDEV
+	bool "python-evdev"
+	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
+	help
+	  Bindings to the Linux input handling subsystem.
+
+	  https://github.com/gvalkov/python-evdev
+
+comment "python-evdev needs a toolchain w/ headers >= 4.4"
+	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4

+ 5 - 0
package/python-evdev/python-evdev.hash

@@ -0,0 +1,5 @@
+# md5, sha256 from https://pypi.org/pypi/evdev/json
+md5  905b12ef6136b518ddf418d8d5b053e4  evdev-1.6.1.tar.gz
+sha256  299db8628cc73b237fc1cc57d3c2948faa0756e2a58b6194b5bf81dc2081f1e3  evdev-1.6.1.tar.gz
+# Locally computed sha256 checksums
+sha256  55fd76d7b3f90d312f161d318631b93c58a0e69d662d07c4f5aca2c6c9ecc85e  LICENSE

+ 18 - 0
package/python-evdev/python-evdev.mk

@@ -0,0 +1,18 @@
+################################################################################
+#
+# python-evdev
+#
+################################################################################
+
+PYTHON_EVDEV_VERSION = 1.6.1
+PYTHON_EVDEV_SOURCE = evdev-$(PYTHON_EVDEV_VERSION).tar.gz
+PYTHON_EVDEV_SITE = https://files.pythonhosted.org/packages/05/50/629b011a7f61cb2fca754ea8631575784bf8605a1ec4d6970a010bc54e2b
+PYTHON_EVDEV_SETUP_TYPE = setuptools
+PYTHON_EVDEV_LICENSE = Revised BSD License
+PYTHON_EVDEV_LICENSE_FILES = LICENSE
+
+PYTHON_EVDEV_BUILD_OPTS = \
+	build_ecodes \
+	--evdev-headers $(STAGING_DIR)/usr/include/linux/input.h:$(STAGING_DIR)/usr/include/linux/input-event-codes.h:$(STAGING_DIR)/usr/include/linux/uinput.h
+
+$(eval $(python-package))

+ 11 - 0
support/testing/tests/package/sample_python_evdev.py

@@ -0,0 +1,11 @@
+import evdev
+
+devices = [evdev.InputDevice(path) for path in evdev.list_devices()]
+e = evdev.events.InputEvent(1036996631, 984417, evdev.ecodes.EV_KEY, evdev.ecodes.KEY_A, 2)
+k = evdev.events.KeyEvent(e)
+
+assert(k.keystate == evdev.events.KeyEvent.key_hold)
+assert(k.event == e)
+assert(k.scancode == evdev.ecodes.KEY_A)
+assert(k.keycode == 'KEY_A')
+assert(len(devices) > 0)

+ 11 - 0
support/testing/tests/package/test_python_evdev.py

@@ -0,0 +1,11 @@
+from tests.package.test_python import TestPythonPackageBase
+
+
+class TestPythonPy3Evdev(TestPythonPackageBase):
+    __test__ = True
+    config = TestPythonPackageBase.config + \
+        """
+        BR2_PACKAGE_PYTHON3=y
+        BR2_PACKAGE_PYTHON_EVDEV=y
+        """
+    sample_scripts = ["tests/package/sample_python_evdev.py"]