키보드 키 및 결과 문자. (운영 체제에서) 책임자 [복제]

키보드 키 및 결과 문자. (운영 체제에서) 책임자 [복제]

키보드의 키를 누르면 다양한 운영 체제에서 다양한 유형의 문자가 생성됩니다. 예를 들어 Windows에서 위쪽 화살표를 누르면 Linux에서 동일한 키를 누르는 것과 다른 문자 순서가 생성됩니다.

운영 체제의 어느 "부분"이 담당합니까? 특히 GNU/Linux 운영 체제를 살펴보면 "Linux"는 단지 커널일 뿐이기 때문입니다.

답변1

여기에는 많은 레이어가 관련되어 있으며 결과는 상황에 따라 크게 달라집니다. 하지만 몇 가지 일반적인 정보는 다음과 같습니다.

먼저 커널입니다. 실제 키보드 하드웨어를 처리하고 특정 키(보통 무언가)를 명시적으로 표현하는 일부 메커니즘(보통 맨 아래에 있는 인터럽트 핸들러)을 통해 키를 등록하는 일을 담당합니다.

둘째, 소비자입니다. Linux에서는 기본적으로 두 가지 옵션이 있습니다. 키보드 키를 TTY 하위 시스템에 입력하고 이를 터미널 장치의 수신 바이트로 변환하거나(VT를 사용하는 경우) Xorg에 입력하고 전달된 메서드를 통해 전달하는 것입니다. 응용 프로그램: X 프로토콜(GUI를 사용하는 경우) 전자가 여전히 잘 지원되고 있지만 오늘날에는 후자가 표준입니다. Xorg 및 Xorg에 의미를 부여하는 것은 책임입니다. 여기에는 일반적으로 바이트를 생성 a하지만 AShift 키를 누르고 있을 때 "A"라고 표시된 키와 같은 기본적이고 거의 보편적인 항목도 포함됩니다 . 말할 필요도 없이 대부분의 작업을 수행하는 라이브러리가 많으며 새 애플리케이션은 일반적으로 이에 대해 신경 쓸 필요가 없습니다. 그러나 이는 여전히 애플리케이션 수준에서 수행되는 작업입니다.

작업은 애플리케이션 수준에서 수행되므로 추가 처리는 거의 전적으로 애플리케이션에 달려 있습니다. 터미널 에뮬레이터 프로그램은 X 프로토콜 키 입력을 받아들이고 TTY 하위 시스템에 의한 처리를 복제하여 이를 한 줄의 바이트로 변환하므로 사용자가 셸에 액세스할 수 있습니다. 일반 GUI 프로그램은 한 종류 또는 다른 종류의 툴킷을 사용하며 이러한 툴킷은 모두 키보드 처리를 기본 기능으로 제공하여 텍스트 상자, 선택한 요소 등에 대한 공통 의미를 활성화합니다. 더 크고 복잡한 프로그램(예: 브라우저 또는 전체 화면 게임)은 유연성을 높이기 위해 X 수준에서 자체 키보드 처리를 수행할 수 있습니다. 그러나 이 모든 작업은 단일 애플리케이션으로 수행되며 전적으로 애플리케이션의 결정에 따라 달라집니다.

관련 정보