스캔코드

Scancode

스캔 코드(또는 스캔 코드)는 대부분의 컴퓨터 키보드가 어떤 키를 눌렀는지 보고하기 위해 컴퓨터에 보내는 데이터다.숫자 또는 숫자의 순서는 키보드의 각 키에 할당된다.

변형

행과 기둥별로 주요 위치를 매핑하는 것은 덜 복잡한 컴퓨터 하드웨어를 필요로 하기 때문에 과거에는 소프트웨어펌웨어를 사용하여 스캔코드를 텍스트 문자로 변환하는 것이 텍스트 문자로 키보드를 배선하는 것보다 비용이 덜 들었다.[1]이 비용 차이는 예전처럼 심하지 않다.그러나, 많은 종류의 컴퓨터들은 역호환성을 유지하기 위해 여전히 전통적인 스캔코드를 사용한다.

일부 키보드 표준에는 누르는 각 키에 대한 스캔 코드와 릴리스되는 각 키에 대한 다른 스캔 코드가 포함된다.또한 많은 키보드 표준(예: IBM PC 호환 표준)을 통해 키보드가 키를 누른 상태에서 반복적으로 누름 키 스캔 코드를 생성하도록 하여 키보드 자체가 "유형적인" 반복 키를 생성할 수 있으며, 키가 풀리면 릴리스 스캔 코드가 전송된다.

스캔코드 세트

일부 운영 체제에서는 컴퓨터가 부팅되는 동안 키를 누른 상태로 키의 다운프레스 스캔 코드를 발견할 수 있다.운이 좋으면 스캔 코드(또는 스캔 코드 일부)가 결과적인 "고착된 키" 오류 메시지에 지정될 것이다.[참고: Windows 7에서는 스캔 코드의 1바이트만 나타난다.]

PC 호환성

IBM PC 호환 컴퓨터 키보드의 스캔코드는 키보드로 전송되는 1~3바이트의 세트다.대부분의 문자 키에는 단일 바이트 스캔 코드가 있다. 특수 기능을 수행하는 키에는 보통 바이트로 시작하는 2바이트 또는 3바이트 스캔 코드가 있다(16진수).E0,E1또는E2게다가, 몇몇 키들은 더 긴 스캔코드를 보내서 효과적으로 일련의 키를 모방하여 다른 종류의 소프트웨어들이 더 쉽게 처리할 수 있게 한다.

PS/2 키보드는 최대 3개의 스캔코드 세트를 지원하므로 PC 키보드가장 흔히 접하는 것은 IBM PC XT 및 이전 버전에서 사용하는 83키 키보드에 기초한 "XT"("set 1") 스캔 코드다.이것들은 대부분 단일 바이트로 구성된다; 낮은 7비트는 키를 식별하고, 가장 중요한 비트는 키를 누르거나 키 릴리스용으로 설정된 것이 분명하다.일부 추가 키에는E0(혹은 드물게,E1또는E2) 접두사.이것들은 처음에 할당되어졌다. 그래서E0접두사(키업 범위에 있으므로 이를 이해하지 못한 운영 체제에 영향을 미치지 않음)는 합리적인 결과를 산출할 수 있을 것이다.예를 들어 숫자 키패드의 Enter 키를 누르면E0 1C의 반환 키의 스캔 코드에 해당하는1C.

IBM 3270 PC는 키 번호 지정이 다른 자체 스캔 코드 세트("셋 3")를 도입했으며, 키 릴리스는 다음과 같이 표시되었다.F0접두사를 붙이다역호환성을 위해 3270 PC는 이를 추가 카드와 BIOS 확장을 이용해 XT(set 1) 스캔코드로 변환했다. 세트는 리눅스가 스캔 코드 세트 3을 적절히 지원할 수 있는 PS/2 키보드를 감지할 때 기본적으로 사용된다.[2]

IBM PC AT는 "AT" ("set 2") 스캔코드를 도입했다.84키 AT 키보드에서 이것들은 대부분 세트 3의 하위 집합이었으며, 수정된 레이아웃에 의해 야기된 일부 차이점들(예: 기능 키의 위치 및 스캔 코드 변경)이었다.PC AT는 세트 2와 세트 3에서 서로 다른 스캔코드를 가지고 있고 세트 2에서는 종종 다음 스캔코드를 가지고 있기 때문에 추가된 키E0또는E1접두사를 붙이다다시, 키 릴리즈는 다음과 같이 표시된다.F0접두사를 붙이다

IBM PC AT 이후 컴퓨터의 경우, 마더보드의 키보드 컨트롤러가 AT (set 2) 스캔코드를 XT (set 1) 스캔코드로 변환하는 이른바 번역 모드.[3]이 번역은 패스스루 모드에서는 비활성화할 수 있어 원시 스캔코드를 볼 수 있다.[4]따라서 소프트웨어 개발자가 현대의 PC 호환에서 AT 스캔코드와 마주칠지 XT 스캔코드를 접하게 될지는 키보드가 어떻게 접속되고 있는가에 달려 있다.

호환 PS/2 키보드는 세트 1, 2 또는 3에서 스캔코드를 전송하라는 지시를 받을 수 있다.

PC 호환(IBM PS/2) 스캔 코드 예
핵심을 세트 1(IBM PC XT) 세트 2(IBM PC AT) 세트 3(IBM 3270 PC)
누르다 석방하다 누르다 석방하다 누르다 석방하다
A(정상 문자) 1E 9E 1C F0 1C 1C F0 1C
Return / Enter (기본 키보드) 1C 9C 5A F0 5A 5A F0 5A
입력(숫자 키패드) E0 1C E0 9C E0 5A E0 F0 5A 79 F0 79
왼쪽 Windows E0 5B E0 DB E0 1F E0 F0 1F 8B F0 8B
오른쪽 Windows 키 E0 5C E0 DC E0 27 E0 F0 27 8C F0 8C

유에스비

USB 키보드는 대부분 USB 표준에 지정된 새로운 스캔 코드 세트를 사용한다.USB 키보드를 인식하는 모든 컴퓨터는 이러한 새로운 스캔코드를 인식한다.[5]

참고 항목

참조

  1. ^ 예를 들어 기존의 12키 숫자 키패드는 가로 3열, 세로 4열로 스캔되어 총 7개의 연결이 필요하다.각 키를 개별적으로 스캔하려면 12개의 연결이 필요하다.
  2. ^ "Torvalds/Linux". GitHub. 18 February 2022.
  3. ^ 키보드 스캔 코드(섹션 10, "키보드 내부 스캔 코드"), Andries Brower.버전 1.2e, 2004-05-20, 2006-11-15에 액세스.
  4. ^ 키보드 스캔 코드(섹션 11, "AT 키보드 컨트롤러"), Andries Brower.버전 1.2g, 2009-07-07, 2010-07-18에 액세스.
  5. ^ Microsoft 키보드 스캔 코드 사양(부록 C, "USB 키보드/키패드 페이지(0x07))" Microsoft개정판 1.3a, 2000-03-16은 2018-10-13에 접근했다.

외부 링크