在(ubuntu)linux中捕获第二个键盘输入

前端之家收集整理的这篇文章主要介绍了在(ubuntu)linux中捕获第二个键盘输入前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我写了一个程序,从usb第二个键盘(实际上是一个条码扫描器)获取输入.问题是,如果另一个窗口处于活动状态,则数据将输入到那里,而不是在我的程序中.有人可以给我建议我做错了什么吗?
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(int argc,char * argv[]){
  5. FILE * fp_in;
  6. char * data;
  7. fp_in = fopen("/dev/input/by-id/usb-04d9_1400-event-kbd","r");
  8.  
  9. if(fp_in == NULL){
  10. fprintf(stderr,"Failed to open input by id\n");
  11. }
  12.  
  13. fp_in = fopen("/dev/input/by-path/pci-0000:00:1d.1-usb-0:2:1.0-event-kbd","Failed to open input by path\n");
  14. return 1;
  15. }
  16.  
  17. while(1){
  18. fscanf(fp_in,data,"%s");
  19. fprintf(stderr,"%s",data);
  20. }
  21. return 0;
  22. }

谢谢

如果我可以如此大胆地代表Confusedly的问题重新表述:

如何在Linux下编写一个程序,将其附加到输入设备(在这种情况下是条形码扫描器),以便输入不到具有键盘焦点的程序?

我试图做同样的事情,我做的是使用xinput“浮动”该设备.在我的情况下,xinput列表显示(除其他外)

HID键盘设备HID键盘设备id = 13 [从机键盘(3)]

这是对应于条码扫描器的设备.然后可以简单地输入

xinput float 13

进入终端来自扫描仪的按键将不再被输入到关注的窗口中,但仍可以从设备文件中读取.但是,您需要解码从文件中读取的事件,以获取所需的信息(条形码).有关如何执行此操作的信息,请参阅format of /dev/input/event*?.

最后,要读取没有root权限的设备文件,只需为扫描器添加一个udev规则.对我来说,这是这样的:

SUBSYSTEM ==“input”,ATTRS {idVendor} ==“1d57”,ATTRS {idProduct} ==“001c”MODE =“0644”

扫描仪的idVendor和idProduct可以在插入扫描仪后检查dmesg的输出.

猜你在找的Ubuntu相关文章