- 最終更新日
- 記事公開日
python-evdevでの十字キー(方向ボタン)取得方法
python-evdevを使って、コントローラーからのコマンドを検知しようとしたところ、ハマったことがあったのでメモ。
使用したのは、2.4GHzワイヤレスコントローラー。
ボタンの検知はすんなりできたのですが、なぜか十字キー(方法ボタン)のコマンドが取得できませんでした。
evdev.ecodes.EV_KEY → evdev.ecodes.EV_ABS と書き換えるだけで、無事に取得できるようになりました。
#!/usr/bin/python
import pigpio
import evdev
import time
import threading
try:
devices = [evdev.InputDevice(fn) for fn in evdev.list_devices()]
for device in devices:
print(device.fn, device.name, device.phys)
device = evdev.InputDevice('/dev/input/event0')
print(device)
for event in device.read_loop():
# Button
if event.type == evdev.ecodes.EV_KEY:
print("{} {} {}".format(event.timestamp(), event.code, event.value))
# Cross Key
if event.type == evdev.ecodes.EV_ABS:
print("{} {} {}".format(event.timestamp(), event.code, event.value))
if event.code == 0:
# LEFT
if event.value == 0:
servo.hardware_PWM(gpio_pin0, 50, 90000)
# RIGHT
if event.value == 255:
servo.hardware_PWM(gpio_pin0, 50, 100000)
except IOError:
print("restart")
subprocess.run(["sudo", "reboot"])
finally:
pass
exit()