키보드 드라이버가 문자 장치 드라이버입니까?

키보드 드라이버가 문자 장치 드라이버입니까?

장치 드라이버에 대해 배우고 있는데 질문이 있습니다. 키보드 드라이버는 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이를 사용하여 어떤 종류의 이벤트를 생성하는지 확인할 수 있습니다.

(문자 장치와 블록 장치만 있고 블록 장치에서의 작업이 키보드로는 이해되지 않으므로 거의 문자 장치라고 해야 합니다.)

관련 정보