키보드 입력 코드

키보드 입력 코드

저는 유니코드와 UTF-8의 기본을 배우려고 노력하고 있는데 지금까지는 정말 잘 진행되고 있습니다. 파일을 열 때 인코딩을 선택할 수 있다는 것을 알고 있습니다.

텍스트 편집기(편집자또는) 또는 명령 프롬프트에서 키보드는 응용 프로그램에 어떤 인코딩을 전송합니까? Windows 컴퓨터에서는 다른가요? 구성할 수 있나요?

답변1

바라보다키보드 입력과 텍스트 출력은 어떻게 작동합니까?이 주제에 대한 개요를 살펴보세요. 이는 애플리케이션이 터미널에서 실행 중인지 아니면 GUI 환경과 직접 통신하는지에 따라 달라집니다.

터미널에서는 터미널 소프트웨어(일반적으로 금세기 터미널 에뮬레이터)가 문자 인코딩을 결정합니다. 설정을 통해 문자 인코딩을 전달합니다. (입력 및 출력 동일)로케일환경 변수 LC_CTYPE. 이 변수가 설정되지 않거나 설정되면 C터미널은 정보를 제공하지 않으므로 애플리케이션은 인코딩이 무엇인지 알 수 없습니다. 터미널에서 문자는 문자로 애플리케이션에 전송됩니다. 문자가 아닌 입력(기능 키, 커서 키, 수정자가 있는 키 Alt등)은 다음과 같이 전송됩니다.이스케이프 시퀀스(몇몇은 비슷해요제어 문자대신에).

X11애플리케이션은 다음과 같은 형식으로 입력을 받습니다.주요 이벤트. KeyPresss 이벤트에는 keycode대략 키의 물리적 위치에 해당하고 state활성 수정자를 인코딩하는 하위 수준 표시가 포함되어 있습니다. 애플리케이션은 다음과 같은 것을 호출할 수 있습니다.XLookupString(레거시 기능, Latin-1만 해당) 또는XmbLookupString(다른 단일 바이트 인코딩을 지원하는 함수) 또는XwcLookupString(멀티바이트 인코딩을 지원하는 기능) 또는Xutf8LookupString(최신 UTF-8 함수) 이 원시 정보를 문자열로 변환합니다.

키에서 문자로의 매핑은 다양한 수준에서 변경될 수 있습니다.키보드 입력과 텍스트 출력은 어떻게 작동합니까?개요를 살펴보세요.

답변2

키보드는 문자를 보내지 않고 스캔 코드를 보냅니다. 예를 들어 일반적인 미국식 키보드에서 "e"라고 표시된 키를 누르면 본질적으로 "메인 그룹의 영숫자 키 두 번째 행 왼쪽에 있는 세 번째 키"인 스캔 코드가 전송됩니다. 이 스캔 코드는 커널(또는 운영 체제의 다른 구성 요소)에 의해 문자(또는 종종 "Print Screen"과 같은 키와 같은 주요 기호)로 변환됩니다. 특히 Linux에서는 그래픽 하위 시스템을 통해 가능합니다.

일반적으로 운영 체제 또는 그래픽 하위 시스템은 변환 테이블을 제어하는 ​​하나 이상의 유틸리티를 제공합니다. 예를 들어 Windows와 Linux 모두에서 원하는 수의 키보드 레이아웃을 설치하고 쉽게 전환할 수 있습니다.

응용 프로그램이 얻는 내용은 운영 체제의 규칙에 따라 다릅니다. Windows에서 콘솔 응용 프로그램은 명령으로 설정된 현재 콘솔 코드 페이지를 기반으로 인코딩된 문자를 가져옵니다 chcp. 그래픽 응용 프로그램은 일반적으로 UTF-16 인코딩 문자로 변환되는 키 기호를 가져옵니다. Linux에서 애플리케이션은 일반적으로 UTF-8로 인코딩된 문자를 얻습니다. 예를 들어, ă키보드 레이아웃이 올바르게 설정된 상태에서 (LATIN SMALL LETTER A WITH BREVE, U+0103)이라고 표시된 키를 누르면,

  • Windows의 콘솔 애플리케이션은 1바이트 (십진수 227) chcp 1250를 얻습니다 .'\xE3'
  • Windows의 콘솔 애플리케이션은 chcp 8521바이트(10진수 199)를 얻습니다 '\xC7'.
  • '\x03' '\x01'Windows의 그래픽 애플리케이션은 일반적으로 2바이트 (또는 짧은 정수 )로 0x103저장/처리되는 적절한 키 기호를 얻습니다 .
  • '\xC4' '\x83'Linux의 터미널 애플리케이션은 2바이트 (UTF-8 인코딩의 <U+0103>) 를 가져옵니다 .
  • '\xC4' '\x83'Linux의 그래픽 응용 프로그램은 일반적으로 2바이트(UTF-8 인코딩의 <U+0103>)로 저장/처리되는 적절한 키 기호를 가져옵니다 .

(Windows란 Windows NT와 Windows XP, Windows Vista, 7 또는 10과 같은 후속 제품을 의미합니다. Windows 95 등은 다행히 더 이상 사용되지 않는 완전히 다른 운영 체제 제품군이었습니다.)

Vim에는 두 개의 새로운 번역 레이어가 있습니다:

  • 다음 명령 을 사용하여 키보드 번역 매핑을 설치할 수 있습니다 set keymap. 이는 운영 체제 수준에서 키보드 레이아웃을 설치할 수 없는 시스템에서 원하는 언어로 텍스트를 입력하는 데 도움이 됩니다.:help 'keymap':help mbyte-keymap

  • 이 명령을 사용하여 매핑을 정의할 수 있습니다 :map. 바라보다 :help :map.

관련 정보