最終更新日
記事公開日

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()
この記事のURLをコピー

メールアドレスは公開されませんのでご安心ください。また、* が付いている欄は必須項目となります。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

関連情報

運営者プロフィール
コダマ

職業はIT系フリーランス。過去、電子配線業務の経験が10年ある為、はんだづけも得意です。宮崎県在住、30代・2児の父親。

プロが教える!イチからわかるハンダ付けのコツ(工学社)の著者です。

カテゴリー