나는 직면하고있다이것마우스에 문제가 있습니다. 내 특별한 경우에는 실제 이벤트가 발생하고 100밀리초도 채 지나지 않아 중복 클릭 이벤트가 발생했습니다. 모든 마우스 이벤트가 내가 작성한 프로그램을 통과하고 특정 이벤트를 삭제할 수 있도록 디스플레이 서버에 대한 이벤트 필터를 작성할 수 있습니까? 저는 X 디스플레이 서버와 멋진 wm을 사용하고 있습니다.
답변1
커널 입력 레이어에서 이 작업을 수행하겠습니다. 이 uinput
장치를 사용하면 입력 계층 이벤트를 생성하는 사용자 공간 프로그램을 작성할 수 있습니다. 해당 옵션을 사용하여 마우스 입력 장치를 켜는 경우(실행 사이에 올바르게 인식되는지 확인) /dev/input/by-id
원시 이벤트는 X가 아닌 프로그램으로 구체적으로 전송됩니다. X evdev 드라이버가 자동으로 새 장치를 선택합니다./dev/input/by-path
grab
여기예제 C 프로그램은 다음과 같습니다.파이썬 라이브러리(삐삐) Python을 선호한다면 다른 프로그래밍 언어용 라이브러리도 좋아할 것입니다. 문서와 더 많은 예제 프로그램은 Google을 통해 쉽게 검색할 수 있습니다.
python-uinput에서 복사한 사용 예:
키보드 클릭 소리 생성
import uinput
with uinput.Device([uinput.KEY_E, uinput.KEY_H,
uinput.KEY_L, uinput.KEY_O]) as device:
device.emit_click(uinput.KEY_H)
device.emit_click(uinput.KEY_E)
device.emit_click(uinput.KEY_L)
device.emit_click(uinput.KEY_L)
device.emit_click(uinput.KEY_O)
마우스 커서 이동
import uinput
with uinput.Device([uinput.REL_X, uinput.REL_Y,
uinput.BTN_LEFT, uinput.BTN_RIGHT]) as device:
for i in range(20):
device.emit(uinput.REL_X, 5)
device.emit(uinput.REL_Y, 5)
키보드 조합 생성
import uinput
with uinput.Device([uinput.KEY_LEFTALT, uinput.KEY_TAB]) as device:
device.emit_combo([uinput.KEY_LEFTALT, uinput.KEY_TAB])