如何读取并使用/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;        
}

这当然是非常简化的。我有不同的序列来触发不同的操作。这部分工作得很好。我的问题是,不仅我的程序获得输入,而且焦点用户界面也获得输入。我想使用该设备的输入,因此它不会在其他地方显示。我习惯了 Java 的“高级”事件,您可以简单地使用事件或传递事件。所以我很好奇是否可以在这个非常低的水平上做一些事情来“消耗”它。我尝试已经读取并覆盖内容并更改 /dev/input/event 文件的组,我想如果它不在输入组中,它可能不会使用它,但显然它并不那么容易。期待想法或任何能让我更好理解的事情。

答案1

你可能应该使用利维德夫读取事件,然后使用抓住这可以阻止事件分发给其他人。

相关内容