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

Con*_*led 12 linux input barcode

我编写了一个程序,从usb第二个键盘(实际上是条形码扫描仪)获取输入.问题是如果另一个窗口处于活动状态,则在那里输入数据而不是在我的程序中.有人可以就我做错了什么给我建议吗?

#include <stdio.h>
#include <string.h>

int main(int argc, char * argv[]){
   FILE * fp_in;
   char * data;
   fp_in = fopen("/dev/input/by-id/usb-04d9_1400-event-kbd","r");

   if(fp_in == NULL){
      fprintf(stderr,"Failed to open input by id\n");
   }

   fp_in = fopen("/dev/input/by-path/pci-0000:00:1d.1-usb-0:2:1.0-event-kbd","r");

   if(fp_in == NULL){
      fprintf(stderr,"Failed to open input by path\n");
      return 1;
   }

  while(1){
      fscanf(fp_in,data,"%s");
      fprintf(stderr,"%s",data);
  }
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

谢谢


如果我可以如此大胆地代表Confuzzled重新解释这个问题:

如何在Linux下编写一个附加到输入设备的程序,在这种情况下是一个条形码扫描器,这样输入就不会转到具有键盘焦点的程序?

Ken*_*ric 1

我将从围绕您的任务的常见问题列表开始,我没有答案,但我至少可以提供一些有关您遇到问题的原因的说明。

  1. 出于明显的安全原因,键盘设备具有访问控制限制。出于显而易见的原因,如果任意应用程序可以在没有正确许可的情况下嗅探/挂钩键盘,则可能会产生致命的后果,又名:键盘记录器。

  2. 有时,当一个应用程序(在您的例子中为 X )获得了对输入设备的控制时,它会耗尽发送给它的所有字节。因此,即使您设法解决了权限问题,您仍然会遇到一些其他软件在您之前消耗数据流的问题。