私はキーを押したときに別の音を出すためにRubyプログラムを作成しています。 AキーはSキーとは異なる音をします。 Rubyを使用する代わりに、生の入力を取得したいと思います。
たとえば、/dev/input/mice を読むと、すべてのマウスイベントを取得できます。私のコードでは、これを使用してマウスの動きに基づいていくつかの操作を実行できます。
どのファイルを開くと、すべてのキーボードのイベントを取得できますか?
答え1
これには2つのレイヤーが含まれています。input
さまざまなキーボード、マウス、ジョイスティックなどを共通のフレームワークに変換し、デバイスファイル/dev/input/*
(デバイスごとに1つのファイル)で使用できるようにするカーネルレイヤーとX(またはユーザーに応じて)配布Waylandレイヤーはこれらのファイルを読み取り、理解できるXイベントに変換します。後者は入力デバイスを組み合わせて、「すべてのデバイスのキーボードイベント」および「すべてのデバイスのマウスイベント」として使用できるようにします。単純化されていますが、最初の近似になることができます)。
アプリケーションが対話する自然な方法は、Xレイヤーを使用することです(Rubyがこれを抽象化すると確信しています)。これは、アプリケーションがサウンドを再生するだけでなく、何かを表示する場合(何も表示しなくても)、特にお勧めします。
もちろん、必要に応じてすべてのファイルを開いて/dev/input/*
そのファイルのイベントを解釈することもできますが、新しいキーボードとマウスが接続されていると失敗するので、これらのイベントにも反応しようとしています。
この/dev/input/mice
抽象化はマウスにのみ存在し、人々が単一のPS / 2キーボードを使用するときに設計された従来のソリューションですが、さまざまなマウスデバイスがありました。このファイルは、X レイヤーがアクティブなマウス入力デバイスと見なすものと一致しない可能性があり、キーボードに対する同等の抽象化はありません。