키보드에 결함이 있어서 하나의 키를 누르면 다른 키가 실행됩니다. 예를 들어, 키보드에서 문자 "D"를 클릭하면 "D5"가 전송됩니다.
$xev -event keyboard
KeyPress event, serial 28, synthetic NO, window 0x3c00001,
root 0x929, subw 0x0, time 7185644, (351,334), root:(2087,693),
state 0x10, keycode 40 (keysym 0x64, d), same_screen YES,
XLookupString gives 1 bytes: (64) "d"
XmbLookupString gives 1 bytes: (64) "d"
XFilterEvent returns: False
KeyPress event, serial 28, synthetic NO, window 0x3c00001,
root 0x929, subw 0x0, time 7185644, (351,334), root:(2087,693),
state 0x10, keycode 84 (keysym 0xffb5, KP_5), same_screen YES,
XLookupString gives 1 bytes: (35) "5"
XmbLookupString gives 1 bytes: (35) "5"
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x3c00001,
root 0x929, subw 0x0, time 7185716, (351,334), root:(2087,693),
state 0x10, keycode 40 (keysym 0x64, d), same_screen YES,
XLookupString gives 1 bytes: (64) "d"
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x3c00001,
root 0x929, subw 0x0, time 7185716, (351,334), root:(2087,693),
state 0x10, keycode 84 (keysym 0xffb5, KP_5), same_screen YES,
XLookupString gives 1 bytes: (35) "5"
XFilterEvent returns: False
두 키 누르기 이벤트 모두 동일한 타임스탬프를 가집니다. 내 질문은 두 번째 keyPress 이벤트가 이전 keyPress 이벤트와 동일한 타임스탬프를 갖는 경우 이를 방지할 수 있는 방법이 있습니까?입니다.
아니면 2차 입력을 방지할 수 있는 다른 방법이 있나요?
답변1
일부 Python 코딩이 필요한 솔루션이 작동해야 합니다.evdev라이브러리는 키보드에서 이벤트를 읽고 이를 필터링하여 동일한 타임스탬프를 가진 두 번째 이벤트를 억제한 다음 새로운 uinput 키보드 장치에 주입합니다.
코드의 필수 부분에 대한 예는 Python evdev 튜토리얼에 제공되어 있습니다.다른 장치의 기능을 사용하여 입력 없는 장치 만들기, 그리고 같은 페이지에서 접근 가능한 이벤트 장치 나열, 장치 기능 나열키보드를 찾아보세요, 독서 활동타임스탬프가 있는 입력 주입.
또한보십시오잡다X11 서버에서 원시 키보드 이벤트가 발생하지 않도록 하는 기능입니다.
또는 고도로 구성 가능한 유틸리티가 있습니다.효과적인입력 키보드와 생성된 uinput 출력 키보드 장치 사이에 다양한 필터링을 허용합니다. 나는 이 프로그램에 익숙하지 않고 Rust로 작성되었지만 동일한 타임스탬프를 가진 이벤트를 식별하고 억제하려면 해당 언어로 일부 코드를 추가해야 할 수도 있습니다.