답변:
키보드에서 키를 누르면 스캔 코드라는 숫자 코드를 컴퓨터로 보냅니다. 스캔 코드는 컴퓨터에 어떤 키를 눌렀는지 알려줍니다. 예를 들어, 일반적인 미국 키보드에서 A키를 누르면 스캔 코드 30을 전송하고 (릴리스를 놓으면 158) 스캔 코드를 전송합니다. 키보드 드라이버는 키보드가 원시 모드 일 때 이러한 코드를 응용 프로그램에 직접보고합니다 ( "raw"는 처리되지 않은 바로 키보드를 의미합니다). 일부 프로그램은 원시 모드를 사용하고 자체 키보드 처리를 수행합니다. X 서버는 가장 눈에 띄는 하나입니다.
대부분의 프로그램은 A키 를 누를 때 프로그램이 문자를 읽으며 a
(ASCII 97) Shift+ 를 누를 때 A프로그램이 읽히고 A
(ASCII 65) Ctrl+ 를 누를 때 A프로그램이 Ctrl+A
문자를 읽습니다 (ASCII 1). 연관된 문자가없는 키는 예 \e[A
를 들어 ESC 문자 (ASCII 27)가있는 Left등의 이스케이프 시퀀스를 보냅니다 \e
. 키보드 드라이버는 키보드가 XLATE 모드 ( "번역"의 줄임말)라고도하는 ASCII 모드에있을 때이 변환을 수행합니다. XLATE 모드를 사용하면 "왼쪽 Shift 키를 눌렀습니다"또는 Ctrl + A와 다른 Ctrl + Shift + A와 같은 뉘앙스에 액세스하지 않고도 응용 프로그램에서 문자를 입력 할 수 있습니다.
는 kbd_mode
당신이 모드 사이를 전환 할 수 있습니다, 그리고 쇼 당신은 어떤 인수없이 현재 모드를 호출합니다.
매직 SysRq 키 조합은 다양한 불쾌한 상황에서 복구하기위한 것입니다. 주요 조합 중 하나는 Alt+SysRq+K
현재 가상 콘솔에서 모든 프로그램을 종료하는 것입니다. 해당 프로그램이 키보드를 원시 모드로 설정하면 로그인 프롬프트에서 입력 할 수 없습니다 (시스템 구성에 따라 종종 표시됨). 를 누르면 Alt+SysRq+R
문자를 입력 할 수있는 일반적인 (X 외부) ASCII 모드가 복원됩니다.
키보드가 보내는 코드 유형을 정의 할 수 있습니다. 이것은 키보드 모드를 통해 이루어집니다. 을 사용하여 키보드 모드를 변경할 수 있습니다 kbd_mode
.
맨 페이지의 옵션은 다음과 같습니다.
-s: scancode mode (RAW),
-k: keycode mode (MEDIUMRAW),
-a: ASCII mode (XLATE),
-u: UTF-8 mode (UNICODE).
눌린 키의 스캔 코드를 간단하게 얻을 수 있다면 개발자가 왼쪽 Shift 키를 누른 것과 같은 키 이벤트를 훨씬 쉽게 잡을 수 있습니다.