키 누르기 신호를 백그라운드 프로세스로 보내기

키 누르기 신호를 백그라운드 프로세스로 보내기

저는 데몬에 대해 배우고 C로 작성해 왔습니다. 데몬이 Ubuntu에서 전역 키 누르기 신호를 수신하고 수신된 키 누르기 신호를 별도의 파일에 쓰길 원합니다.

이것을 달성할 수 있는 방법이 있나요? 그렇다면 어떻게 해야 할까요?

답변1

가장 간단한 방법은 노출된 이벤트 장치를 읽는 것입니다 /dev/input/.커널 문서C에서 이러한 장치를 작동하는 방법을 배울 수 있는 Linux 입력 하위 시스템.

입력 장치를 신속하게 테스트하는 데 사용할 수 있는 여러 소프트웨어 패키지가 있습니다. 예를 들어 apt-get install input-utilsUbuntu에서는 다음 도구를 사용할 수 있습니다.

lsinput: 시스템에 연결된 입력 장치를 열거합니다.

$ sudo lsinput
/dev/input/event0
   bustype : BUS_HOST
   vendor  : 0x0
   product : 0x3
   version : 0
   name    : "Sleep Button"
   phys    : "PNP0C0E/button/input0"
   bits ev : EV_SYN EV_KEY

/dev/input/event1
   bustype : BUS_HOST
   vendor  : 0x0
   product : 0x5
   version : 0
   name    : "Lid Switch"
   phys    : "PNP0C0D/button/input0"
   bits ev : EV_SYN EV_SW

/dev/input/event2
   bustype : BUS_HOST
   vendor  : 0x0
   product : 0x1
   version : 0
   name    : "Power Button"
   phys    : "LNXPWRBN/button/input0"
   bits ev : EV_SYN EV_KEY

/dev/input/event3
   bustype : BUS_I8042
   vendor  : 0x1
   product : 0x1
   version : 43841
   name    : "AT Translated Set 2 keyboard"
   phys    : "isa0060/serio0/input0"
   bits ev : EV_SYN EV_KEY EV_MSC EV_LED EV_REP

/dev/input/event3시청하고 싶은 키보드 장치는 다음 과 같습니다.

input-events: 입력 장치에서 이벤트를 읽고 표시합니다. 3for 와 같은 장치 번호 매개변수가 필요합니다 /dev/input/event3.

$ sudo input-events 3
/dev/input/event3
   bustype : BUS_I8042
   vendor  : 0x1
   product : 0x1
   version : 43841
   name    : "AT Translated Set 2 keyboard"
   phys    : "isa0060/serio0/input0"
   bits ev : EV_SYN EV_KEY EV_MSC EV_LED EV_REP

waiting for events
09:27:02.961576: EV_MSC MSC_SCAN 50
09:27:02.961576: EV_KEY KEY_M (0x32) released
09:27:02.961576: EV_SYN code=0 value=0
09:27:03.833925: EV_MSC MSC_SCAN 58
09:27:03.833925: EV_KEY KEY_CAPSLOCK (0x3a) released
09:27:03.833925: EV_SYN code=0 value=0
09:27:09.344765: EV_MSC MSC_SCAN 30
09:27:09.344765: EV_KEY KEY_A (0x1e) pressed
09:27:09.344765: EV_SYN code=0 value=0
09:27:09.446881: EV_MSC MSC_SCAN 30
09:27:09.446881: EV_KEY KEY_A (0x1e) released
09:27:09.446881: EV_SYN code=0 value=0
09:27:09.548389: EV_MSC MSC_SCAN 48
09:27:09.548389: EV_KEY KEY_B (0x30) pressed
09:27:09.548389: EV_SYN code=0 value=0
09:27:09.640385: EV_MSC MSC_SCAN 48
09:27:09.640385: EV_KEY KEY_B (0x30) released
09:27:09.640385: EV_SYN code=0 value=0
09:27:09.781365: EV_MSC MSC_SCAN 46
09:27:09.781365: EV_KEY KEY_C (0x2e) pressed
09:27:09.781365: EV_SYN code=0 value=0
09:27:09.853143: EV_MSC MSC_SCAN 46
09:27:09.853143: EV_KEY KEY_C (0x2e) released
09:27:09.853143: EV_SYN code=0 value=0
...

관련 정보