노트북 키보드 드라이버, Linux의 이벤트 핸들러

노트북 키보드 드라이버, Linux의 이벤트 핸들러

키보드 드라이버와 해당 핸들러의 위치를 ​​설명해 주세요.

운전사:

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/keyboardlsmod 목록에 아무것도 없나요?

매니저:

전달 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 추상화를 사용하십시오.

(순수한 호기심이 아닌 이상) 실제로 달성하려는 것을 기반으로 질문을 편집할 수 있다면 더 나은 제안을 제공할 수 있습니다.

관련 정보