장치 드라이버에 대해 배우고 있는데 질문이 있습니다. 키보드 드라이버는 Linux의 문자 장치 드라이버입니까?
답변1
예, 키보드 드라이버는 문자 장치입니다. 이렇게 하면:
$ cat /proc/bus/input/devices
그러면 키보드를 포함해야 하는 장치 목록이 표시됩니다. 여기에는 다음과 같은 내용이 포함됩니다.
H: Handlers=sysrq kbd event18
거기에서 다음을 참조하십시오 /dev/input/event18
.
$ ls -l /dev/input/event18
crw-rw---- 1 root input 13, 82 Jul 9 15:44 /dev/input/event18
이것은 문자 장치라는 점에 유의하십시오.
장치를 캡처한 다음 무언가를 입력하면 활동이 표시됩니다.
$ sudo cat /dev/input/event18
... type something, see the byte stream as characters
바라보다이 링크간단한 Python 스크립트는 이러한 바이트를 사용하고 해석할 수 있습니다. 여기서 스크립트를 재현하겠습니다.
#!/usr/bin/env python3
import struct
f = open("/dev/input/event18", "rb"); # Open the file in the read-binary mode
while True:
data = f.read(24):
print(struct.unpack('4IHHI', data))
내가 참조하는 웹사이트에 따르면 필드는 왼쪽에서 오른쪽으로 나타납니다.
- 타임스탬프_INT
- 0
- 타임스탬프_DEC
- 0
- 유형
- 코드(키 누름)
- 값(누르거나 놓음)
답변2
Linux의 키보드 드라이버는 커널 입력 하위 시스템에 나타나며 사용자 공간에서는 이를 다음과 같이 인식합니다.캐릭터 드라이버존재하다 /dev/input
.
evtest
이를 사용하여 어떤 종류의 이벤트를 생성하는지 확인할 수 있습니다.
(문자 장치와 블록 장치만 있고 블록 장치에서의 작업이 키보드로는 이해되지 않으므로 거의 문자 장치라고 해야 합니다.)