키보드에서 추가 키를 누르면 어떻게 되나요?

키보드에서 추가 키를 누르면 어떻게 되나요?

추가 키가 있는 키보드가 어떻게 작동하는지 알고 싶습니다. 예를 들어 다음과 같은 키보드가 있다고 가정해 보겠습니다.

여기에 이미지 설명을 입력하세요

추가 키가 있음을 알 수 있습니다. 이제 내가무음키, 이 경우에는 어떻게 되나요?

내 생각엔 이런 일이 일어난다고 생각한다:

  • 신호가 컴퓨터로 전송됩니다.
  • 키보드 장치 드라이버는 이 신호를 받습니다.
  • 키보드 장치 드라이버는 이 신호가 음소거 신호임을 ​​확인하므로 이를 OS에 전달하지 않고 오히려 컴퓨터의 사운드를 음소거하는 OS 함수/시스템 호출을 호출합니다.

나 맞아?

답변1

입력 레이어에 대한 매우 간략한 개요:

키보드 장치는 USB나 PS/2 포트 등을 통해 어떤 방식으로든 PC에 연결되어 있습니다. 이 메커니즘의 커널 드라이버는 키보드에서 키를 누를 때 통신을 처리하는 방법을 알고 있습니다.

USB 키보드의 경우 표준은 다음과 같습니다.HID(휴먼 인터페이스 장치)가 존재합니다. 이는 키보드뿐만 아니라 마우스, 조이스틱 및 기타 입력 장치에도 적용됩니다. 따라서 장치에는설명자커널이 방출할 수 있는 신호의 종류와 키에 대한 많은 코드를 알려줍니다.무음표준화되어 있습니다.

그럼에도 불구하고 일부 키보드에는 표준화되지 않은 키(예: Fn일부 키보드)가 있으며 이러한 키에 신호를 보내는 방법은 제조업체에 달려 있습니다.

커널에는 HID 장치를 처리하기 위한 특수 계층이 있습니다. 이 계층은 원시 HID 통신을 에서 사용할 수 있게 만든 /dev/hidrawX다음 계속해서 HID 이벤트를 커널 입력 이벤트로 변환합니다.

커널 입력 레이어는스캔 코드(장치에 고유한 물리적 키에 해당하는 숫자)를 다음으로 변환합니다.키 코드(모든 장치에 표준화된 논리 키에 해당하는 숫자) 둘 다 에서 이벤트로 제공됩니다 /dev/input/eventX. 를 사용 evdev하여 이러한 이벤트를 볼 수 있으며 showkey, dumpkeys등을 사용하여 번역 테이블을 볼 수 있습니다.

X 서버(또는 Wayland)는 모든 이벤트를 읽고 이를 다음으로 변환합니다.주요 기호( a, á등 또는 와 같은 특별한 것 AudioMute). X 응용프로그램은 이 기호를 수신하고 그에 따라 작동할 수 있습니다. 애플리케이션 보기를 사용하여 xev이 레이어를 확인하고 에서 사양을 xmodmap구성 할 수 있습니다 .xkbdxorg.conf

에 대응하려면 AudioMute일부 애플리케이션이 필요합니다. 이는 창 관리자인 경우가 많지만 창 관리자가 이를 수행하지 않는 경우 별도의 응용 프로그램도 작동합니다.

따라서 단일 "키보드 드라이버"가 없고 훨씬 더 복잡하며 "음소거"에 대한 특별한 호출이 없습니다.

답변2

일반적으로 이해하면 당신 말이 맞습니다. 키를 누르면 키보드는 기본적으로 각 키를 식별하는 일련의 숫자인 스캔코드를 보냅니다. 스캔코드는 키코드에 매핑됩니다. 각 키코드는 특정 키를 누를 때 프로그램이 어떻게 반응해야 하는지를 정의하는 기능에 해당합니다. Xorg와 콘솔은 서로 다른 키코드 세트를 사용합니다. 저는 Wayland에 대해 잘 모르지만 자체 키코드 세트를 사용할 수도 있습니다. 키코드는 키 기호에 매핑됩니다. 키 기호를 사용하면 개발자가 더 높은 수준의 추상화에서 키보드를 사용하여 작업할 수 있습니다.

showkey --scancode및 각각을 실행하여 콘솔에서 스캔코드와 키코드를 볼 수 있습니다 showkey --keycode. Xorg에서는 xev후자를 사용해야 합니다 .

이러한 추상화 수준을 사용하면 Linux 환경의 다양한 부분에 영향을 미치는 유연하고 복잡한 매핑 체계를 만들 수 있습니다. 이것ArchWiki 기사매핑 기술에 대한 많은 정보가 포함되어 있으며 더 알고 싶다면 읽어야 합니다.

또한 많은조항키보드가 낮은 수준에서 작동하는 방식을 설명하는 인터넷상의 정보입니다. 기사가 1999년에 작성되었는지 2010년에 작성되었는지는 중요하지 않습니다. 그 이후로 키보드에 많은 변화가 있지는 않지만 USB HID 장치는 '클래식' PS/2 키보드와 다르게 작동한다는 점을 명심하세요.

관련 정보