2

Linux マシン (Debian wheezy) で、次のことを行うイベントベースのサーバーを作成しようとしています。

  1. 入力デバイス (特別なキーボード) への排他的な入力を取得して、キーストロークが通常のイベント チェーンに入らないようにします。

  2. ツイスト リアクターのイベントに登録する

  3. イベントの待機から返された deferred にコールバックを登録します。このコールバックは、特別なキー シーケンスを受信した後に HTTP 要求を送信します。

これは、pyevdevパッケージのサンプル コードです。通知を受け取り、それに応じてキーストロークを受け取ることができます。

read_loop()コマンドのソース コードを見ると、selecttwisted に似たステートメントも使用されています。

私の質問

このコードを python Twisted に統合するにはどうすればよいですか? 1 つのアイデアは、基になるキャラクター デバイスを調べて、/dev/input/event0ブロックしない方法で読み取ることです。if が通常のファイルである場合、inotify の行に沿って何かを使用しますが、この場合はわかりません。

evdev パッケージのサンプル コード

from evdev import InputDevice, categorize, ecodes,  list_devices

devices = [InputDevice(fn) for fn in list_devices()]
for dev in devices:
   print(dev.fn, dev.name, dev.phys)

dev = InputDevice('/dev/input/event0')

# get exclusive access to input device
dev.grab()

for event in dev.read_loop():
    if event.type == ecodes.EV_KEY:
            print categorize(event)
4

1 に答える 1