Linux マシン (Debian wheezy) で、次のことを行うイベントベースのサーバーを作成しようとしています。
入力デバイス (特別なキーボード) への排他的な入力を取得して、キーストロークが通常のイベント チェーンに入らないようにします。
ツイスト リアクターのイベントに登録する
イベントの待機から返された deferred にコールバックを登録します。このコールバックは、特別なキー シーケンスを受信した後に HTTP 要求を送信します。
これは、pyevdev
パッケージのサンプル コードです。通知を受け取り、それに応じてキーストロークを受け取ることができます。
read_loop()
コマンドのソース コードを見ると、select
twisted に似たステートメントも使用されています。
私の質問
このコードを 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)