キーボード入力がUIに伝播するのを防ぎます

キーボード入力がUIに伝播するのを防ぎます

キオスクをインストールしようとしています。このコンピュータにはタッチスクリーンがあり、通常の操作中は実際のマウスやキーボードが接続されていません。現在私はDebian 12を使用していますが、より適切なディストリビューションを探す予定です。これはまだ確定していません。

キオスクには、NFCカードスキャナーとQRコード/バーコード/MRZスキャナーなど、2つのUSB周辺機器があります。オペレーティングシステムではUSBキーボードのように動作します。何かをスキャンすると、キーストロークを送信し、テキストボックス/エディタウィンドウ/コンソールウィンドウにフォーカスのあるデータを書き込みます。

次のファイルを読み取ることで、プログラムでこれらのデバイスの入力を読み取ることができます。

/dev/input/by-id/usb-HOUSESMart_PROTOCOL-if01-event-kbd
/dev/input/by-id/usb-Newtologic_NT7730_XXXXXX-event-kbd

ただし、これにより、キーストロークがUIに到達し、テキストボックスにフォーカスがあるときに入力されるのを防ぐことはできません。キオスクアプリケーションにはほとんどの画面にテキスト入力がないため、これは私たちにとって大きな問題ではありません。ただし、ユーザーがテキスト入力フィールドに入力すると同時に何かをスキャンする場合(別の手で携帯電話を持ち、誤ってNFCスキャナに近づけてスキャンする場合)、一部の画面ではこれが発生します。テキストボックスに記録されます。これを止める必要があります。

これら2つの「キーボード」のイベントがUIに到達するのを防ぐ方法が必要ですが、これらの入力ファイルを読み取ってデータを取得し続けるために完全に無効にしない方法が必要です。これを行う方法はありますか?

ソリューションは、アプリケーションが起動するたびに実行されるいくつかのコード(C#で実行できる操作が望ましい)であるか、コンピュータのセットアップ中に一度実行されるシステム設定です。誰でもそうだろう。

また、これら2つのキーボードのみを制限する必要があります。仮想でも物理でもキーボードが使用される状況があるため、すべてのキーボードを包括的に制限したくありません。デバイスIDは何度も接続して切断しても変更されないように見えるため、このIDを使用してデバイスを識別できます。

完全性のために、キオスクアプリケーションは、Chromeなどのブラウザからアクセスする可能性が最も高い.NET8 Blazorウェブアプリケーションです。または、.NET MAUIコンテナでホストすることもできます(Linuxでサポートされている場合)。要点は、特定のアプリケーションになり、どのアプリケーションであるかを制御できることです。したがって、「このキーボードからこのアプリケーションにキーストロークを送信しないでください」と言う方法がある場合は、そうすることもできます。

関連情報