/dev/input/で入力を読み取って使用する方法

/dev/input/で入力を読み取って使用する方法

私はUbuntu / Linuxを使い始めたので、知識は限られています。私の考えは、私のC ++プログラムでバーコードスキャナを入力デバイスとして使用することです。これは読むときに有効です。バーコードスキャナーを表すファイルを開いて使用します。入力イベントstruct 次のループから入力を読み取ることができます。

int connection = open("dev/input/by-id/my-barcode-scanner", O_RDONLY);

スキャナーはキーボードのように動作します

struct input_event ie[64];
int rd, value, size = sizeof(struct input_event);

while ((rd = read(serialPort, ie, size * 64)) > size) {
    std::cout << "The entered code is: " << ie[1].code << std::endl;        
}

もちろん、これは非常に単純化されました。さまざまなタスクを実行するさまざまなシーケンスがあります。この部分はうまくいきます。私の問題は、私のプログラムが入力を受け取るだけでなく、フォーカスUIも入力を受け取ることです。そのデバイスの入力を使用して他の場所に表示されないようにしたいと思います。私は単にイベントを消費したり渡したりできるJavaの「高度な」イベントに精通しています。だから、この非常に低いレベルでそれを「消費する」ためにできることがあるのだろうか。すでに内容を読んで上書きして、/dev/input/eventファイルのグループを変更してみましたが、入力グループになければ使用しないかもしれないと思っていましたが、容易ではないようです。私がよりよく理解するのに役立つことができるアイデアや何でも期待しています。

答え1

おそらく使用する必要がありますレヴィデフイベントを読んでから使用してください。捕まえるこれにより、イベントが他人に配布されるのを防ぎます。

関連情報