스캔코드
Scancode이 글은 검증을 위해 인용구가 추가로 필요하다. – · · 책 · · (2011년 10월) (이 템플릿 하는 |
스캔 코드(또는 스캔 코드)는 대부분의 컴퓨터 키보드가 어떤 키를 눌렀는지 보고하기 위해 컴퓨터에 보내는 데이터다.숫자 또는 숫자의 순서는 키보드의 각 키에 할당된다.
변형
행과 기둥별로 주요 위치를 매핑하는 것은 덜 복잡한 컴퓨터 하드웨어를 필요로 하기 때문에 과거에는 소프트웨어나 펌웨어를 사용하여 스캔코드를 텍스트 문자로 변환하는 것이 텍스트 문자로 키보드를 배선하는 것보다 비용이 덜 들었다.[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에서 스캔코드를 전송하라는 지시를 받을 수 있다.
핵심을 | 세트 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]
참고 항목
참조
- ^ 예를 들어 기존의 12키 숫자 키패드는 가로 3열, 세로 4열로 스캔되어 총 7개의 연결이 필요하다.각 키를 개별적으로 스캔하려면 12개의 연결이 필요하다.
- ^ "Torvalds/Linux". GitHub. 18 February 2022.
- ^ 키보드 스캔 코드(섹션 10, "키보드 내부 스캔 코드"), Andries Brower.버전 1.2e, 2004-05-20, 2006-11-15에 액세스.
- ^ 키보드 스캔 코드(섹션 11, "AT 키보드 컨트롤러"), Andries Brower.버전 1.2g, 2009-07-07, 2010-07-18에 액세스.
- ^ Microsoft 키보드 스캔 코드 사양(부록 C, "USB 키보드/키패드 페이지(0x07))" Microsoft개정판 1.3a, 2000-03-16은 2018-10-13에 접근했다.
외부 링크
- 키보드 스캔 코드: Andries Brouwer에 의해 작성됨
- AT 키보드 인터페이스:beyondlogic.org의 키보드 스캔 코드에 대한 자세한 정보