키보드 드라이버와 해당 핸들러의 위치를 설명해 주세요.
운전사:
ls /lib/modules/4.10.0-28-generic/kernel/drivers/input/mouse
디스플레이 마우스용 모든 장치 드라이버( psmouse.ko
내 컴퓨터에서 사용됨) 는 -----> 로 제공됩니다. 저에게도 sudo rmmod psmouse
터치패드는 아직 작동하지 않지만 usbmouse
작동하고 있습니다. (사용하고 있기 때문에 usbmouse/usbhid
)
그렇다면 내 키보드 드라이버는 어디에 있습니까 lsmod
? ls /lib/modules/4.10.0-28-generic/kernel/drivers/input/keyboard
lsmod 목록에 아무것도 없나요?
매니저:
전달 cat /proc/bus/input/devices
-----> 다음을 제공합니다.
SynPS/2 Synatics Touchpad (Handlers : mouse0 event6)
AT Translated Set 2 Keyboard (Handlers : sysrq,kbd,event4,leds)
전달 cat /proc/bus/input/handlers
-----> 다음을 제공합니다.
rfkill,kbd,sysrq,mousedev,evdev,joydev,leds
그러나 mousedev
핸들러를 사용하는 대신 mouse0
. 왜 이런 일이 발생합니까? mouse0
에서 사용할 수 있습니다 /dev/input/mouse0
. 왜 비슷한 것을 사용할 수 없나요 kbd
?
참고: 활동은 에서 사용할 수 있지만 /dev/input
왜 안 됩니까 kbd
?
답변1
빠른 개요: 마우스 및 키보드 처리는 계층화되어 있습니다. 커널 수준에서 가장 추상적인 계층은 입력 이벤트 계층(devices /dev/input/event*
)입니다. 를 사용하여 이벤트를 읽을 수 있습니다 evtest
. 위의 드라이버는 X( evdev
또는 하위 레벨 드라이버) 또는 Wayland( ) libinput
용 드라이버 입니다. 다음은 USB HID 장치( usbmouse
/ usbhid
), PS/2 키보드( kbd
) 및 PS/2 마우스( ) mousedev
용 드라이버 입니다. 마우스 장치는 다양한 프로토콜과 마우스 연결 방법을 갖춘 현재는 사용되지 않는 직렬 포트 마우스 드라이버도 포함하고 있기 때문에 다소 복잡한 동물원입니다.
/dev/input/mouse0
~이다장비PS/2 레벨 마우스 이벤트의 경우 mousedev
대신커널 모듈처리하세요, AFAIK. 장치 이름이 "Handler" 아래에 나열되는 이유를 모르겠습니다 cat /proc/bus/input/devices
. 약간 일관성이 없습니다.
기본적으로 PS/2 레벨 키보드 이벤트를 위한 장치는 없지만 올바른 모듈 및/또는 옵션을 사용하여 장치를 만들 수 있습니다(일반적으로 필요하지 않기 때문에 찾아보아야 했습니다).
결론: 어떤 이유로든 낮은 수준의 프로토콜(PS/2, 직렬, USB, HID...)을 다룰 필요가 없다면 그대로 두십시오. 장치를 사용 /dev/input/event*
하거나 X 또는 Wayland 추상화를 사용하십시오.
(순수한 호기심이 아닌 이상) 실제로 달성하려는 것을 기반으로 질문을 편집할 수 있다면 더 나은 제안을 제공할 수 있습니다.