他のキーボードの入力を区別する方法は?

他のキーボードの入力を区別する方法は?

私は基本的なキーボードとそのアプリケーション用に特別に設計されたキーボードを使用できるアプリケーションをPythonで作成したいと思います。さまざまなキーの動作を提供するために、ステッカー付きの小さな数字パッドを使用して簡単に設計します。どちらのキーボードもUSB経由で接続されています。

ただし、これらのキーを押すと、通常の信号(数字、演算子、入力)のみがPythonに送信され、基本キーボードと特殊キーボードの信号を区別できません。

(私が知っている限り)Pythonではこれらの区別を行う方法がないので、オペレーティングシステム自体で区別を作成したいと思います。私はRaspberry Pi用にプログラムするので、Linuxになります。

したがって、主な質問は、特定のキーボードのキーを別のキーコードに再マッピングする方法です。私はFキーを使用することを検討しましたが、他の目的には使用しないか、キーボードに存在しない一部の文字(そのような文字があると仮定)にのみ使用しました。

Linux/Unixでこれは可能ですか?では、どうすればよいですか?

ベストアンサー1

Linuxを使用している場合、入力デバイスを区別する最良の方法は次のようにすることです。Linuxイベントインターフェース。デバイスのハードウェア関連入力がデコードされた後、中間のLinux関連イベント構造に変換され、デバイスが1つ以上の文字を読み取って使用できるようになります/dev/input/。ちなみに、これは使用するプログラミング言語とは全く独立しています。

各ハードウェアデバイスには独自のデバイスが/dev/input/eventXあり、集計もあります(たとえば、/dev/input/miceシステム内のすべてのマウスの動きを表します)。システムには、/dev/input/by-pathおよびがあります/dev/input/by-id

人間が読める文字列としてデバイス名を返すioctl呼び出しがあるか、または。EVIOCGNAME/dev/input/by-id/usb-Logitech_USB_Gaming_Mouse-mouse

デバイスの電源を入れ、入力ハードウェアからイベントが到着するたびにパケットを受信します。 Cを読むことができれば、/usr/include/linux/input.hこの文書がどのように機能するかを正確に示すこの文書を勉強できます。そうでなければできますこの質問を読んでください必要なすべての情報を提供します。

イベントインタフェースの良いことは、必要なデバイスが何であるかを調べるだけで、その入力デバイスから入力を読み取ることができることです。ただ、他のすべての項目は無視されます。また、端末で「調理済み」文字ストリームを読み取るだけでは、一般的に得られないキー、ボタン、およびコントロールについての通知も受け取ることができます。デッドキーなども受けられますShift

悪いことは、イベントインタフェースが「調理済み」文字を返さずに数値コードをキーとして使用することです(各キーに対応するコードは、前述のヘッダファイルにあり、Pythonソースコードにあります) 。events.py。入力デバイスに異常なキー/ボタンがある場合は、正しい数字が得られるまで少し実験が必要になることがあります。

おすすめ記事