/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

아마 사용해야 할 것입니다레비데프이벤트를 읽어본 후 사용하세요.잡다이렇게 하면 이벤트가 다른 사람에게 배포되는 것을 방지할 수 있습니다.

관련 정보