バーコード スキャナ入力を Linux の特定のウィジェットにリダイレクトする

StackOverflow https://stackoverflow.com/questions/868853

  •  22-08-2019
  •  | 
  •  

質問

私は Symbol LS2208 バーコード スキャナを持っており、Linux ボックス (Kubuntu 8.10 Intrepid Ibex) で正常に動作します。バーコードをスキャンするたびに、スキャナ (USB ポートに接続されている) が読み取り値をテキスト キャレットのある場所に送信します。スキャナーからのすべての読み取り値をアプリケーションの特定のウィジェットにリダイレクトしたいと考えています(つまり、テキスト編集コントロール)。どうすればいいでしょうか?私は Qt GUI ライブラリで C++ を使用していますが、サンプル コードはどの言語または GUI ライブラリでも歓迎されます。

役に立ちましたか?

解決

答えはわかりませんが、選択肢を見つけるためのいくつかの提案を以下に示します。

  1. QCoreApplication::instance() にイベントフィルターをインストールします (または QCoreApplication::notify() を再実装します)。
  2. イベント フィルター ハンドラーで、有用なものを探して各イベントを出力します。

    void eventFilter(QObject *obj, QEvent *evt) {
        qDebug() << obj << evt;
    }
    
  3. デバッグ出力を調べて、スキャナによってどのイベントがトリガーされたかを判断します。

qDebug() は事実上すべての型を理解し、それがキーボード イベントとして入ってきたのか、それとも他のものとして入ってきたのかを判断できる適切な出力を提供します。

他のヒント

その最もバーコードスキャナでトリッキーされてもよいことは、キーボードウェッジとしても知られています。彼らは、キーボードとして機能し、可能な限り、キーボードなどから区別できないようにイベント・ストリームにキーを押し込みます。これが最大の互換性のためになります。

多くのUSBバーコードスキャナは、HIDエンドポイントとして自分自身を公開して、すべての意図や目的のために、彼らはキーボードがあります。

あなたがやろうとすることができるものがいくつかあります - 多くのスキャナは、彼らがバーコードデータの周りの接頭辞と接尾辞に吐き出すためにできるように設定可能です。あなたはそれをテストすることができた場合、あなただけの適切な場所に文字列を送信します。あなたがスキャナをメタプログラミングする必要があるという点で、これはまずいです。通常、これは、バーコードの特別なセットで行われます。 ここにあなたのスキャナのマニュアルのへのリンクです。 249ページ、接頭辞と接尾辞をメタプログラミングのためのバーコードがあります。

あなたはHIDイベントのクライアントであることをどのように把握し、あなたがそれらをしたいスキャナのイベントをリダイレクトすることがあります。私はLinux上でこれを実行しようとしたことがありません。これは、両方のWindowsとOS 9時代のMac上での痛みです(私はUSBと遊んだ最後の時間広範囲)。

受け入れ答えに問題があるように

それはそうです。入力がアクティブなアプリケーションであると考えられているものは何でもによって処理されようとしています。誰かがウェブブラウザを立ち上げると、その後のバーコードをスキャンを開始したがって、もし、入力がWebブラウザではなく、アプリケーションになります。目的のアプリケーションでも、イベントは表示されません。

アプリケーションがアクティブである場合は、

は、あなたがトラップイベント、最終的にはどれがバーコードスキャナから来ているかを把握することができます。適切なウィジェットが入力を受信するように活性化することができる。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top