추가 키가 있는 키보드가 어떻게 작동하는지 보고 싶습니다. 예를 들어 다음과 같은 키보드가 있다고 가정해 보겠습니다.
추가 키가 있는 것을 볼 수 있습니다. 이제 내가 눌렀다고 해봐조용한결정적으로, 이 상황에서는 무슨 일이 일어나는가?
내 생각에 이런 일이 일어나고 있다고 생각합니다.
- 신호가 컴퓨터로 전송됩니다.
- 키보드 장치 드라이버는 이 신호를 받습니다.
- 키보드 장치 드라이버는 신호가 음소거 신호임을 확인하므로 이를 운영 체제에 전달하는 대신 운영 체제 기능/시스템 호출을 호출하여 컴퓨터의 사운드를 음소거합니다.
내가 맞나요?
답변1
입력 레이어에 대한 매우 간략한 개요:
키보드 장치는 USB 또는 PS/2 포트 등을 통해 PC에 연결됩니다. 이 메커니즘의 커널 드라이버는 키보드의 키를 누를 때 통신을 처리하는 방법을 알고 있습니다.
USB 키보드에는 다음과 같은 표준이 있습니다.고압 가스 방전관(휴먼 인터페이스 장치)가 존재합니다. 이는 키보드뿐만 아니라 마우스, 조이스틱 및 기타 입력 장치에도 적용됩니다. 따라서 장치에는설명자커널이 내보낼 수 있는 신호와 다음을 포함한 다양한 키 입력에 대한 코드를 알려줍니다.조용한표준화되어 있습니다.
그러나 일부 키보드의 키는 표준화되어 있지 않으며(예: Fn일부 키보드의 키) 해당 키에 신호를 보내는 방법은 제조업체에 따라 다릅니다.
커널에는 HID 장치를 처리하기 위한 특수 계층이 있습니다. 이 계층은 원시 HID 통신을 가능하게 한 /dev/hidrawX
다음 HID 이벤트를 커널 입력 이벤트로 변환합니다.
커널 입력 계층은 다음을 사용합니다.스캔 코드(장치에 고유한 물리적 키에 해당하는 숫자)를 다음과 같이 변환합니다.키 코드(모든 장치에 걸쳐 표준화된 논리 키에 해당하는 숫자) 둘 다 이벤트 로 제공 됩니다 /dev/input/eventX
. 변환표를 보려면 , 등을 evdev
사용하여 이러한 이벤트를 볼 수 있습니다 .showkey
dumpkeys
X 서버(또는 Wayland)는 이러한 모든 이벤트를 읽고 이를주요 기호(예: , 등 a
또는 á
특수, 예: AudioMute
). X 응용프로그램은 이 기호를 수신하고 그에 따라 작동할 수 있습니다. 애플리케이션 보기를 사용하여 이 레이어를 보고 xev
.xmodmap
xkbd
xorg.conf
대응하려면 AudioMute
몇 가지 애플리케이션이 필요합니다. 일반적으로 이는 창 관리자이지만 창 관리자가 이 작업을 수행하지 않는 경우 별도의 응용 프로그램도 작동합니다.
따라서 단일 "키보드 드라이버"는 없으며 훨씬 더 복잡하고 특별히 "자동"이 필요하지 않습니다.
답변2
일반적으로 말하면 귀하의 이해가 정확합니다. 키를 누르면 키보드는 기본적으로 각 키를 식별하는 일련의 숫자인 스캔 코드를 보냅니다. 스캔 코드는 키 코드에 매핑됩니다. 각 키코드는 프로그램이 특정 키 누르기에 어떻게 반응해야 하는지를 정의하는 기능에 해당합니다. Xorg와 콘솔은 서로 다른 키코드 세트를 사용합니다. 저는 Wayland에 대해 잘 모르지만 자체 키코드 세트를 사용할 수도 있습니다. 키 코드는 키 기호에 매핑됩니다. 키 기호를 사용하면 개발자가 더 높은 추상화 수준에서 키보드를 사용하여 작업할 수 있습니다.
showkey --scancode
콘솔에서 및 각각 실행하여 스캔코드와 키코드를 확인할 수 있습니다 showkey --keycode
. Xorg에서는 xev
후자를 사용해야 합니다 .
이러한 추상화 수준을 사용하면 Linux 환경의 다양한 부분에 영향을 미치는 유연하고 복잡한 매핑 체계를 만들 수 있습니다. 이것ArchWiki 기사그리기 기술에 대한 많은 정보가 포함되어 있습니다. 더 배우고 싶다면 읽어보세요.
더 많은 것이 있습니다기사인터넷에서는 키보드가 내부에서 어떻게 작동하는지 설명합니다. 기사가 1999년에 작성되었는지 2010년에 작성되었는지는 중요하지 않습니다. 그 이후로 키보드 측면에서는 많은 변화가 없었지만 USB HID 장치는 "클래식" PS/2 키보드와 동일한 방식으로 작동하지 않는다는 점을 명심하세요.