UI 이벤트 KeyboardEvent code 값

W3C 권고안,

이 문서에 대한 더 자세한 정보
이 버전:
https://www.w3.org/TR/2025/REC-uievents-code-20250422/
최신 공개 버전:
https://www.w3.org/TR/uievents-code/
에디터 초안:
https://w3c.github.io/uievents-code/
히스토리:
https://www.w3.org/standards/history/uievents-code/
구현 보고서:
https://w3c.github.io/uievents-code/impl-report.html
피드백:
GitHub
에디터:
(Google)
(초대 전문가)
오류 목록:
오류가 존재함.

또한 번역본도 확인하세요.


초록

이 명세서는 UI 이벤트 명세서 [UIEvents]의 일부로 정의된 KeyboardEvent.code 속성 값들을 정의합니다. code 값은 사용자가 실제로 누르는 물리적 키를 식별하는 데 사용할 수 있는 키 이벤트에 대한 정보를 포함합니다.

문서 상태

이 섹션은 문서가 출판된 시점의 상태를 설명합니다. 현재 W3C 발행물 목록과 본 기술 보고서의 최신 개정판은 W3C 기술 보고서 색인(https://www.w3.org/TR/)에서 확인할 수 있습니다.

이 문서는 웹 애플리케이션 워킹 그룹에서 권고안 트랙을 통해 권고안으로 발행되었습니다.

W3C는 본 명세서를 웹 표준으로 널리 배포할 것을 권장합니다.

W3C 권고안은 폭넓은 합의 구축 이후 W3C 및 회원이 승인하고, 워킹 그룹 멤버들이 구현에 대해 로열티 프리 라이선스를 약속한 명세서입니다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹에서 작성되었습니다. W3C공개 특허 고지 목록을 관리하며, 해당 페이지에는 특허 고지 방법 안내도 포함되어 있습니다. 만약 개인이 필수 청구항이 포함된 특허를 인지한 경우, 필수 청구항 정보를 특허 정책 6절에 따라 공개해야 합니다.

이 문서는 2023년 11월 3일 W3C 프로세스 문서에 따라 관리됩니다.

1. 소개

이 문서는 다양한 키보드 레이아웃에 대한 개요를 제공하며 각 키에 사용되어야 하는 code 값을 명시합니다. [UIEvents-key]에서 설명한 key 값과 달리, code 값은 키보드의 물리적 위치만 기준으로 하며 사용자의 현재 로케일에 따라 달라지지 않습니다.

이 명세서의 이전 제목은 DOM Level 3 KeyboardEvent code Values입니다.

1.1. 스타일 관례

이 명세서는 다음과 같은 관례를 사용합니다:

2. 키보드 레이아웃

이 절은 규범적이지 않습니다.

알파뉴메릭 키보드는 사용자가 키보드 이벤트를 생성하는 가장 일반적인 방식입니다. 이 절에서는 표준 키보드와 그 물리적 레이아웃에 대한 개요를 제공합니다.

2.1. 표준 키보드 레이아웃

이 절은 일반적으로 사용 가능한 키보드에서 볼 수 있는 물리적 레이아웃을 설명합니다.

2.1.1. 키보드 섹션

키보드 레이아웃을 논의할 때 표준 키보드를 구분된 여러 섹션으로 나누고 각 행에 레이블을 붙이는 것이 편리합니다.

The five general sections of a standard keyboard
표준 키보드의 다섯 개 일반 섹션

이 키보드 섹션들은 다음과 같습니다:

키를 더 쉽게 식별할 수 있도록 키보드의 행은 아래쪽 "A" 행부터 위쪽 "E" 행까지 이름이 붙여집니다. 펑션 섹션의 행은 "K" 행으로 간주됩니다. 이러한 행 이름은 [ISO9995-1]에서 제공하는 명칭과 일치합니다.

많은 키보드(현대 및 레거시 모두)에는 위의 섹션에 깔끔하게 포함되지 않는 추가 키들이 있습니다. 이러한 키 중 일부는 § 3.6 미디어 키에 포함됩니다.

2.1.2. 표준 "101" 키보드 레이아웃

표준 "101" 키보드(일반적으로 "US 레이아웃"이라 불림)는 "Backslash" 키(\|로 라벨링됨)가 단일 행 Enter 키 위에 위치한다는 특징이 있습니다. 다른 레이아웃은 이 키를 생략하고 Enter 키를 두 행으로 확장합니다.

Standard '101' keyboard layout
표준 "101" 키보드 레이아웃(수정되지 않은 US 키 값 표시)

현대 표준 "101" 레이아웃 키보드는 실제로 104개의 키를 포함합니다: 알파뉴메릭 섹션 61개 키, 숫자패드, 컨트롤 패드, 방향 패드, 펑션 섹션 43개 키. "101"이라는 이름은 본래 해당 표준 키보드가 101개의 키만 가지고 있었던 시절의 명칭입니다. Meta 키 두 개(OS별 라벨이 붙음) 및 Menu 키가 이후에 추가되어 총 104개 키가 되었습니다.

2.1.3. 대체 "101" 키보드 레이아웃

대체 "101" 키보드는 Enter 키가 크게 마련되어 있고 Backspace 키가 "IntlYen" 키(표준 101 레이아웃의 "Backslash" 키 대체)를 위해 작아집니다. "IntlYen"라는 이름은 일본 레이아웃에서 ¥() 키에서 왔습니다. 러시아 레이아웃에서는 \/로 매핑됩니다.

Alternate '101' keyboard layout
대체 "101" 키보드 레이아웃(수정되지 않은 러시아 키 값 표시)

현대 대체 "101" 레이아웃 키보드는 104개의 키(알파뉴메릭 섹션 61, 숫자패드, 컨트롤 패드, 방향 패드, 펑션 섹션 43개)를 포함합니다.

2.1.4. 표준 "102" 키보드 레이아웃

표준 "102" 키보드는 유럽에서 널리 사용되며 "101" 레이아웃에 없는 키("IntlBackslash"; 영국 키보드에서는 \|)가 좌측 Shift 키 옆에 추가됩니다.

두 번째 키(#~; 영국 키보드에 라벨링됨)는 Enter 키 아래 부분에 일부 숨겨져 있으며, 이 키는 "Backslash"로 인코딩 되며, "101" 키보드 레이아웃의 \| 키와 동일한 코드입니다. [USB-HID]에 따르면 US \| 및 UK #~는 실제로 별개의 키입니다(각각 "Keyboard \ and |", "Keyboard Non-US # and ~"), 하지만 두 키가 동일 키보드에 동시에 존재하지 않으므로 대부분의 플랫폼은 동일 스캔 코드를 사용하여 구분이 어렵습니다. 이 때문에 "Backslash" 코드가 두 키 모두에 사용됩니다.

Standard '102' keyboard layout
표준 "102" 키보드 레이아웃(수정되지 않은 UK 키 값 표시)

현대 "102" 레이아웃 키보드는 알파뉴메릭 섹션 62개와 숫자패드, 컨트롤 패드, 방향 패드, 펑션 섹션 43개, 총 105개의 키를 포함합니다.

2.1.5. 한국 "103" 키보드 레이아웃

한국 "103" 키보드는 대체 101 레이아웃을 기반으로 하며, 한글 입력 모드를 다루기 위한 두 개의 추가 키(공백 양쪽에 각각 하나)를 포함합니다. 이 키들은 "Lang2"("한자", 한자 hanja 라벨) 와 "Lang1"("한/영", 한/영 han/yeong 라벨)입니다.

Korean '103' keyboard layout
한국 "103" 키보드 레이아웃(수정되지 않은 한글 키 값 표시)

현대 "103" 레이아웃 키보드는 알파뉴메릭 섹션 63개와 숫자패드, 컨트롤 패드, 방향 패드, 펑션 섹션 43개, 총 106개의 키를 포함합니다.

2.1.6. 브라질 "104" 키보드 레이아웃

브라질에서 사용되는 "104" 레이아웃은 "102" 레이아웃의 두 키("Backslash", "IntlBackslash"), "IntlRo" 키(오른쪽 shift 옆), 숫자패드의 추가 키 등 총 4개의 새로운 키가 포함됩니다. 이 숫자패드 키는 "NumpadComma"라 불리며, 천 단위 구분자 역할을 합니다. 브라질 키보드에서는 이 키가 .로 라벨링되고, "NumpadDecimal" 키는 ,로 라벨링됩니다.

Standard '104' keyboard layout
표준 "104" 키보드 레이아웃(수정되지 않은 브라질 키 값 표시)

현대 "104" 레이아웃 키보드는 알파뉴메릭 섹션 63개와 숫자패드, 컨트롤 패드, 방향 패드, 펑션 섹션 44개, 총 107개의 키를 포함합니다. 일부 브라질 키보드는 추가 숫자패드 키가 없으며 106개 키만 가진 경우도 있습니다.

2.1.7. 일본 "106" 키보드 레이아웃

일본 "106" 키보드 레이아웃에는 "IntlYen"(¥_), "Backslash"(]む), "IntlRo"(\ろ) 등 3개의 새로운 키가 추가됩니다. 또한 스페이스바가 작아지고 입력 모드 키 3개("NonConvert"[무변환 muhenkan], "Convert"[변환 henkan], "KanaMode"[카타카나/히라가나/로마지 katakana/hiragana/romaji]) 공간이 마련됩니다.

Standard '106' keyboard layout
표준 "106" 키보드 레이아웃(수정되지 않은 일본 키 값 표시)

현대 "106" 레이아웃 키보드는 알파뉴메릭 섹션 66개와 숫자패드, 컨트롤 패드, 방향 패드, 펑션 섹션 43개, 총 109개의 키를 포함합니다.

2.1.8. 애플 키보드 레이아웃

일반적으로 애플 키보드는 PC 키보드와 동일한 레이아웃을 따르지만, 아래 그림과 같이 일부 차이점이 있습니다.

Apple extended keyboard layout
애플 확장 키보드 레이아웃(수정되지 않은 영문 키 값 표시)

이 그림에서 초록색 키는 새로운 위치로 이동된 키, 파란색 키는 추가된 키를 나타냅니다.

2.1.9. 노트북 키보드 레이아웃

노트북 키보드의 제한된 공간 때문에 모든 필수 키를 수용하기 위해 물리적 키 레이아웃이 조정되는 경우가 많습니다. 문자 입력 키알파뉴메릭 섹션에서 그대로 유지되지만, 다른 섹션들은 일반적으로 합쳐지거나 아예 제외됩니다.

Apple laptop keyboard layout
애플 노트북 키보드 레이아웃

이 애플 노트북 키보드에서는 오른쪽 컨트롤 키가 제거되어, 반 높이 방향키 공간과 좌측 Fn 키가 추가되었습니다.

Sample PC laptop keyboard layout
PC 노트북 키보드 레이아웃 예시

PC 노트북 키보드는 종류가 다양하지만, 이 예시 키보드는 일반적으로 발견되는 몇 가지 특성을 보여줍니다. 컨트롤 패드 키가 오른쪽에 추가되고 방향키가 아래쪽에 배치됩니다. 우측 Shift 키는 위쪽 방향키 공간 때문에 크기가 작아지며, 우측 Meta 키는 일반적으로 제거됩니다.

2.1.10. 기타 지역 키보드 레이아웃

기타 지역은 기존 레이아웃을 참고해 키캡과 키 매핑만 조정하므로 이 명세서에 별도로 설명하지 않았습니다.

이러한 키보드는 새로운 물리적 키를 도입하지 않기 때문에 별도의 문서화가 필요 없습니다.

이 키보드들은 대개 "101"(표준 또는 대체형), 또는 "102" 레이아웃을 기반으로 합니다. 예를 들어, 아랍어, 키릴, 그리스, 힌디어, 크메르, 태국 키보드는 모두 "101" 또는 "102" 키보드 레이아웃을 기반으로 합니다.

2.2. 모바일 키패드

콘텐츠 작성자가 모바일 키패드의 기계적 레이아웃을 사용하고자 할 경우, 이 명세서는 [ISO9995-8]에서 정의한 키패드 레이아웃(Unicode U+0061 ... U+007A("a" - "z")가 2 ~ 9번 키에 할당됨)을 참고하도록 권장합니다. 이는 일부 국제적 용도에 적합한 보편적 레이아웃입니다.

이 키패드 레이아웃(특히 영문자 분포)은 영문 기기용이며 다수 사용자의 키패드 구성과는 다를 수 있습니다. 콘텐츠 작성자는 특정 구성에 의존하지 말고, 국제화와 지역화가 용이하도록 콘텐츠를 작성해야 합니다.

Mobile keypad layout
일반 모바일 키패드 그래픽 표현

2.3. 미디어 리모컨

많은 키보드에는 미디어 기능을 제어할 수 있는 특수 키가 있습니다. 점점 더 많은 미디어 장치(특히 TV)가 웹에 연결되며, 하이브리드 키보드/리모컨 장치가 증가하고 있습니다. 이러한 하이브리드 웹/미디어 장치의 요구를 반영해, 이 명세서는 전통적인 키보드 키와 함께 리모컨 버튼에 일반적으로 사용되는 키도 정의합니다.

리모컨 버튼은 작은 폼팩터 때문에 종종 모달이며 한 키가 상황에 따라 여러 기능을 수행할 수 있습니다. 또한 많은 키들이 토글(예: Play, Pause, Up, Menu, Exit) 기능을 하며, 대부분의 리모컨 버튼은 수정자 상태 없이 단일 기능에 할당됩니다.

A sample media remote control
미디어 리모컨 그래픽 표현

2.4. 가상 키보드 및 코드 키보드

가상 키보드는 다양한 배열로 구성된 소프트웨어 기반 키셋으로, 터치스크린 장치에서 자주 사용됩니다. 이들은 문자, 숫자, 기호 등의 키셋 사이를 전환할 수 있는 모달 기능을 가지는 경우가 많습니다. 물리적 제약이 없으므로 이 키보드는 감정표현 등 다양한 문자를 표시할 수 있습니다. 그러나 최대한, 가상 키보드도 표준 키보드 이벤트와 값을 생성해 저작과 호환성을 높여야 합니다.

코드 키보드(코드키셋 또는 코드 키보드라고도 함)는 여러 키를 동시에 또는 순차적으로 눌러서 값을 생성하는 입력 장치로, 적은 키로 모든 문자 또는 명령을 구현하기 위해 보통 한 손으로 사용합니다. 코드 키보드는 추가 모드 키가 존재할 수 있으며, 어떤 키 조합이 값을 생성할지는 기기마다 다르지만, 이러한 키보드 역시 본 명세서에서 정의한 키 값을 따르는 것이 좋습니다.

이와 같은 다양한 모달 키보드를 위해서는 key"Alphanumeric", "CapsLock", "NumLock", "SymbolLock" 같은 키들이 모드 전환용으로 추천됩니다.

3. 키보드 이벤트 code 값 테이블

이 절에서는 code 값으로 사용할 수 있는 값들의 목록을 정의합니다.

key code attribute 값은 명세서 이 단락의 "KeyboardEvent.code" 열에 나열된 값 중 하나를 의미합니다.

각 테이블에는 "필수" 열이 있는데, 해당 값이 준수 구현에 반드시 필요한지 여부를 나타냅니다. "필수"가 "No"인 항목은 멀티미디어/레거시 키보드 등 특수 키보드를 지원하기 위한 구현에서 선택적으로 사용할 수 있습니다.

Note: 이 명세서에 "필수"로 나열된 일부 값들은 모든 플랫폼이나 장치에서 사용 가능하지 않을 수 있습니다. 예를 들어, Mac 키보드에는 Insert 키가 없고 표준 PC 키보드에는 Help 키가 없습니다.

이 명세서에 "필수"로 기재된 모든 키에 대해, KeyboardEvent 인터페이스를 준수하는 구현은 해당 키가 그 플랫폼에서 사용 가능한 경우 반드시 올바른 값을 반환해야 합니다.

Note: 가능한 한 완전한 값을 제공하고자 했으나, 새로운 입력 장치가 지속적으로 도입되기 때문에 주기적으로 새로운 값을 정의해야 할 수도 있습니다. 각 브라우저에서 일관적이지 않을 key code attribute 값을 자체적으로 정의하는 것보다는 본 명세서를 업데이트하는 것이 바람직합니다.

3.1. 알파뉴메릭 섹션

알파뉴메릭 섹션은 키보드의 주요 영역으로, 키의 유형은 문자 입력 키(키보드 레이아웃에 따라 의미가 달라짐)와 기능 키(대부분 모든 레이아웃에서 동일) 두 가지로 나뉩니다.

3.1.1. 문자 입력 키

문자 입력 키는 현재 로케일과 키보드 레이아웃에 따라 의미가 달라지는(즉, 서로 다른 key 값을 생성하는) 키입니다.

The writing system keys
문자 입력 키 (알파뉴메릭 섹션 내)

이 그림은 여러 키보드에서 발견되는 모든 문자 입력 키(파란색/초록색 표시)가 결합된 가상의 키보드를 보여줍니다. 파란색 키는 모든 표준 키보드에 존재하며, 초록색 키는 일부 키보드에만 있습니다.

"Digit2""KeyQ" 키는 문자 입력 키이며, US 로케일에서는 "2""q"를, French 로케일에서는 "é", "a"를 생성합니다.

각 키에 표시된 이름은 해당 키에 할당된 code 값입니다. 가능한 경우, code 명칭은 해당 위치의 US 키 이름(즉, US 키보드 레이아웃)을 기반으로 하며, [USB-HID] 명명 규칙을 따릅니다. US 키보드에 없는 키의 경우에는 UK 또는 일본 레이아웃에서 명칭을 차용합니다.

이 도표엔 "Backslash" 키가 두 개 있습니다. 101키 레이아웃의 D행 끝에 큰 키가 하나, 102/104/106키 레이아웃 C행에서 "Quote""Enter" 사이에 작은 키가 하나 있습니다. 키보드 레이아웃에는 "Backslash" 키가 반드시 하나만 있어야 합니다.

알파뉴메릭 섹션의 문자 입력 키 code 값 목록
KeyboardEvent code 필수 비고(비규범)
"Backquote" Yes `~ (US 키보드). 일본 키보드에선 半角/全角/漢字 (hankaku/zenkaku/kanji) 키.
"Backslash" Yes US \|(101키 레이아웃)와 102/104/106키 레이아웃 C행 "Enter 사이 키 모두에 사용됨. 영국(102) 키보드에서는 #~.
"BracketLeft" Yes [{ (US 키보드)
"BracketRight" Yes ]} (US 키보드)
"Comma" Yes ,< (US 키보드)
"Digit0" Yes 0) (US 키보드)
"Digit1" Yes 1! (US 키보드)
"Digit2" Yes 2@ (US 키보드)
"Digit3" Yes 3# (US 키보드)
"Digit4" Yes 4$ (US 키보드)
"Digit5" Yes 5% (US 키보드)
"Digit6" Yes 6^ (US 키보드)
"Digit7" Yes 7& (US 키보드)
"Digit8" Yes 8* (US 키보드)
"Digit9" Yes 9( (US 키보드)
"Equal" Yes =+ (US 키보드)
"IntlBackslash" Yes 좌측 ShiftZ 사이(UK 키보드에선 \|).
"IntlRo" Yes /와 우측 Shift 사이(일본 키보드: \ろ (ro)).
"IntlYen" Yes =Backspace 사이(일본 키보드: ¥ (yen), 러시아 키보드는 \/)
"KeyA" Yes a(US, AZERTY 등 프랑스 키보드에선 q)
"KeyB" Yes b(US 키보드)
"KeyC" Yes c(US 키보드)
"KeyD" Yes d(US 키보드)
"KeyE" Yes e(US 키보드)
"KeyF" Yes f(US 키보드)
"KeyG" Yes g(US 키보드)
"KeyH" Yes h(US 키보드)
"KeyI" Yes i(US 키보드)
"KeyJ" Yes j(US 키보드)
"KeyK" Yes k(US 키보드)
"KeyL" Yes l(US 키보드)
"KeyM" Yes m(US 키보드)
"KeyN" Yes n(US 키보드)
"KeyO" Yes o(US 키보드)
"KeyP" Yes p(US 키보드)
"KeyQ" Yes q(US 키보드, AZERTY에서는 a)
"KeyR" Yes r(US 키보드)
"KeyS" Yes s(US 키보드)
"KeyT" Yes t(US 키보드)
"KeyU" Yes u(US 키보드)
"KeyV" Yes v(US 키보드)
"KeyW" Yes w(US 키보드, AZERTY는 z)
"KeyX" Yes x(US 키보드)
"KeyY" Yes y(US 키보드, QWERTZ 독일 키보드 z)
"KeyZ" Yes z(US 키보드, AZERTY는 w, QWERTZ는 y)
"Minus" Yes -_(US 키보드)
"Period" Yes .>(US 키보드)
"Quote" Yes '"(US 키보드)
"Semicolon" Yes ;:(US 키보드)
"Slash" Yes /?(US 키보드)

3.1.2. 기능 키

기능 키 (이후에 설명할 펑션키와 혼동하지 마세요)는 알파뉴메릭 섹션 내에서 모든 로케일에 항상 제공되는 일반 편집기능(Shift, Tab, Enter, Backspace 등)을 가진 키입니다. 일부 예외를 제외하면, 이 키들은 현재 키보드 레이아웃에 따라 의미가 달라지지 않습니다.

The standard set of functional keys
기능 키 표준 세트 (알파뉴메릭 섹션 내)

"AltRight" 키(초록색 강조)는 기능 키 중 유일하게 모든 로케일에서 동일한 key 값을 생성하지 않습니다. 일부 로케일에서는 "Alt", 다른 로케일에서는 "AltGraph"를 생성합니다.

알파뉴메릭 섹션의 기능 키 code 값 목록
KeyboardEvent code 필수 비고(비규범)
"AltLeft" Yes Alt, Option,
"AltRight" Yes Alt, Option, . 다수 레이아웃에는 AltGr로 라벨링됨
"Backspace" Yes Backspace 또는 . Apple 키보드는 Delete
"CapsLock" Yes CapsLock 또는
"ContextMenu" Yes 애플리케이션 컨텍스트 메뉴 키(일반적으로 우측 MetaControl 사이)
"ControlLeft" Yes Control 또는
"ControlRight" Yes Control 또는
"Enter" Yes Enter 또는 . Apple 키보드에서는 Return
"MetaLeft" Yes Windows, , Command 등 OS 상징키
"MetaRight" Yes Windows, , Command 등 OS 상징키
"ShiftLeft" Yes Shift 또는
"ShiftRight" Yes Shift 또는
"Space" Yes (스페이스)
"Tab" Yes Tab 또는

일부 키보드(특히 일본·한국)는 스페이스바를 작게 줄여 하단(A행)에 추가 키 공간을 만듭니다. 이 키들은 일반적으로 사용자가 입력 모드를 변경하는 기능을 제공합니다. 이처럼 일본·한국 키 중 일부는 키보드에서 물리적으로 동일 위치를 차지하지만, 서로 다른 code 값을 사용합니다.

Comparison of the lower row of functional keys
다양한 키보드의 하단 기능 키 비교
일본·한국 키보드 하단에서 발견되는 기능 키 code 값 목록
KeyboardEvent code 필수 비고(비규범)
"Convert" Yes 일본어: 변환 (henkan)
"KanaMode" Yes 일본어: 카타카나/히라가나/로마자 (katakana/hiragana/romaji)
"Lang1" No 한국어: 한/영 한/영 (han/yeong)
일본어(Mac): かな (kana)
"Lang2" No 한국어: 한자 한자 (hanja)
일본어(Mac): 英数 (eisu)
"Lang3" No 일본어(워드프로세서): 카타카나
"Lang4" No 일본어(워드프로세서): 히라가나
"Lang5" No 일본어(워드프로세서): 전각/반각
"NonConvert" Yes 일본어: 무변환 (muhenkan)

Apple 키보드에서는 하단 행의 일부 키가 생략되거나 순서가 다르게 배치됩니다.

3.2. 컨트롤 패드 섹션

컨트롤 패드 섹션은 키보드에서 탐색 및 편집 작업을 수행하는(일반적으로 6개) 키들로 구성됩니다. 예를 들어, Home, PageUp, Insert 등이 있습니다.

표준 컨트롤 패드 레이아웃
표준 컨트롤 패드 레이아웃
컨트롤패드 섹션의 키 code 값 목록
KeyboardEvent code 필수 비고(비규범)
"Delete" Yes . 앞으로 삭제하는 키. Apple 키보드에서 메인 부분에 Delete라벨링된 키는 "Backspace"로 인코딩해야 합니다.
"End" Yes End 또는
"Help" Yes Help. 표준 PC 키보드에는 없음.
"Home" Yes Home 또는
"Insert" Yes Insert 또는 Ins. Apple 키보드에는 없음.
"PageDown" Yes Page Down, PgDn,
"PageUp" Yes Page Up, PgUp,

일부 Apple 키보드에 있는 Fn 키의 code는 아래 펑션 섹션에서 정의되어 있습니다.

3.3. 방향 패드 섹션

방향 패드에는 네 개의 방향키가 포함되어 있습니다. 키들은 보통 "역 T자" 형태로 배치됩니다.

표준 방향 패드 레이아웃
표준 방향 패드 레이아웃
방향패드 섹션의 키 code 값 목록
KeyboardEvent code 필수 비고(비규범)
"ArrowDown" Yes
"ArrowLeft" Yes
"ArrowRight" Yes
"ArrowUp" Yes

3.4. 숫자패드 섹션

숫자패드 섹션은 계산기 또는 휴대폰과 같은 격자 형태로 배열된 키들입니다. 이 섹션에는 숫자 및 수식 연산자 키가 포함됩니다. 흔히 NumLock 키가 있어 키들이 표준 숫자 기능과 컨트롤 패드, 방향 패드의 동작을 모방하는 기능으로 전환됩니다. 노트북이나 소형 키보드는 공간을 아끼기 위해 이 키들을 생략하는 경우가 많습니다.

키패드숫자패드의 다른 용어입니다.

표준 숫자패드 레이아웃
표준 숫자패드 레이아웃

이 절의 code 값은 번호 키가 격자 배열되는 휴대폰 키패드와 리모컨에도 사용해야 합니다.

표준 모바일 키패드 레이아웃
표준 모바일 키패드 레이아웃

표준 숫자패드에는 괄호, 연산자, 16진수 기호, 계산기 기능(Backspace 등)까지 추가 키들이 있는 경우도 있습니다. 흔히 추가되는 키는 아래 표에 나와 있습니다.

숫자패드 섹션의 키 code 값 목록
KeyboardEvent code 필수 비고(비규범)
"NumLock" Yes Mac에서는 "NumLock" 코드를 숫자패드 Clear 키에 사용합니다.
"Numpad0" Yes 0 Ins (키보드)
0(폰/리모컨)
"Numpad1" Yes 1 End(키보드)
1, 1 QZ(폰/리모컨)
"Numpad2" Yes 2 ↓(키보드)
2 ABC(폰/리모컨)
"Numpad3" Yes 3 PgDn(키보드)
3 DEF(폰/리모컨)
"Numpad4" Yes 4 ←(키보드)
4 GHI(폰/리모컨)
"Numpad5" Yes 5(키보드)
5 JKL(폰/리모컨)
"Numpad6" Yes 6 →(키보드)
6 MNO(폰/리모컨)
"Numpad7" Yes 7 Home(키보드)
7 PQRS 또는 7 PRS(폰/리모컨)
"Numpad8" Yes 8 ↑(키보드)
8 TUV(폰/리모컨)
"Numpad9" Yes 9 PgUp(키보드)
9 WXYZ, 9 WXY(폰/리모컨)
"NumpadAdd" Yes +
"NumpadBackspace" No Microsoft Natural Keyboard에서 사용됨.
"NumpadClear" No C, AC(All Clear). 숫자패드 Clear 키가 NumLock 키와 별도로 있을 때 사용됨. Mac에서는 숫자패드 Clear 키는 항상 "NumLock"로 인코딩함.
"NumpadClearEntry" No CE(Clear Entry)
"NumpadComma" No ,(천 단위 구분자). 브라질처럼 천 단위 구분자가 "."인 로케일에서는 .을 생성할 수도 있음.
"NumpadDecimal" Yes . Del. 소수점 구분자가 ","인 로케일(브라질 등)에서는 ,을 생성함.
"NumpadDivide" Yes /
"NumpadEnter" Yes
"NumpadEqual" No =
"NumpadHash" No #(폰/리모컨). 보통 9 키 아래, 0 키 오른쪽에 위치.
"NumpadMemoryAdd" No M+ 메모리에 저장된 값에 현재 입력값을 더함.
"NumpadMemoryClear" No MC 메모리값 삭제
"NumpadMemoryRecall" No MR 입력값을 메모리값으로 교체
"NumpadMemoryStore" No MS 메모리값을 현재 입력값으로 교체
"NumpadMemorySubtract" No M- 메모리값에서 현재 입력값을 뺌
"NumpadMultiply" Yes *(키보드). 사칙연산(+, -, *, /) 지원하는 숫자패드에서 사용.
폰·리모컨의 * 키는 "NumpadStar" 사용
"NumpadParenLeft" No ( Microsoft Natural Keyboard에서 사용됨
"NumpadParenRight" No ) Microsoft Natural Keyboard에서 사용됨
"NumpadStar" No *(폰/리모컨). 보통 7 키 아래, 0 키 왼쪽에 위치
숫자패드의 * 키는 "NumpadMultiply" 사용
"NumpadSubtract" Yes -

숫자패드에서 여기 명시되지 않은 키가 있을 경우, "Numpad"로 시작해 키 설명을 붙여 code 값 문자열을 생성하면 됩니다.

3.5. 펑션 섹션

펑션 섹션은 키보드 최상단( 알파뉴메릭 섹션 위) 라인에 위치하며, 펑션키들과 몇 가지 특수키(Esc, Print Screen 등)를 포함합니다.

펑션키F1 ~ F12까지, 애플리케이션이나 OS에서 사용자 지정 기능·동작을 매칭할 수 있는 키입니다.

일부 키보드(특히 노트북 등)에서는 펑션키(F1 ~ F12)가 기본적으로 화면 밝기, 음량 등 1차 기능에 할당되어 있고, 이를 펑션키로 쓰려면 Fn 키를 추가로 눌러야 합니다. 각 제조사마다 기본 기능이 달라, code에는 항상 펑션키 이름이 들어갑니다.

펑션 섹션의 키 code 값 목록
KeyboardEvent code 필수 비고(비규범)
"Escape" Yes Esc 또는
"F1" Yes F1
"F2" Yes F2
"F3" Yes F3
"F4" Yes F4
"F5" Yes F5
"F6" Yes F6
"F7" Yes F7
"F8" Yes F8
"F9" Yes F9
"F10" Yes F10
"F11" Yes F11
"F12" Yes F12
"Fn" No Fn 대부분 하드웨어 키로 별도 code 생성 안 함. 많은 키보드에서는 펑션 섹션에 배치되지 않지만 관련 키와 함께 표에 포함함.
"FnLock" No FLock 또는 FnLock. Function Lock 키. Microsoft Natural Keyboard에서 사용됨.
"PrintScreen" Yes PrtScr SysRq, Print Screen
"ScrollLock" Yes Scroll Lock
"Pause" Yes Pause Break

12개를 넘는 펑션키가 있는 키보드라면, 위 패턴대로 "F" 뒤에 펑션키 번호를 붙여( "F13", "F14", "F15" 등) code 값을 사용합니다.

Apple 키보드에는 EjectPower 키가 펑션 섹션에 있을 수 있습니다. 해당 키의 code 값은 § 3.6 미디어 키에서 정의합니다.

3.6. 미디어 키

미디어 키는 키보드에 추가된, 재생·일시정지·음량 조절 등 미디어 관련 기능을 제공하는 추가 키입니다. 이러한 키는 키보드마다 표준 위치가 없어 제조사별로 배열이나 키 종류가 다르거나 완전히 다를 수 있습니다.

미디어 키는 일반 입력 키와 외관상 구별되는 경우가 많으며, 키보드에 들어가 있기도 합니다.

노트북 키보드에서는 이러한 키들이 펑션키와 합쳐져 있고, 미디어 키 기능이 기본 역할이며 펑션키 역할을 하려면 Fn 키를 함께 눌러야 합니다. 이런 경우 code 값은 펑션키와 일치시켜야 하며 ("F1" ... "F12"), 이런 방식으로 합쳐진 키들은 code 값이 펑션키 값을 따릅니다. 미디어 키 값은 키보드마다 일관되지 않기 때문입니다.

미디어 키의 code 값 목록.
KeyboardEvent code 필수 비고(비규범)
"BrowserBack" No 일부 노트북에서는 이 키가 키 왼쪽에 위치합니다.
"BrowserFavorites" No
"BrowserForward" No 일부 노트북에서는 이 키가 키 오른쪽에 위치합니다.
"BrowserHome" No
"BrowserRefresh" No
"BrowserSearch" No
"BrowserStop" No
"Eject" No Eject 또는 . 일부 Apple 키보드에서는 펑션 섹션에 위치합니다.
"LaunchApp1" No 종종 키보드에서 My Computer로 라벨링됨
"LaunchApp2" No 종종 키보드에서 Calculator로 라벨링됨
"LaunchMail" No
"MediaPlayPause" No
"MediaSelect" No
"MediaStop" No
"MediaTrackNext" No
"MediaTrackPrevious" No
"Power" No 일부 Apple 키보드에서는 펑션 섹션에서 Eject 키를 대체합니다.
"Sleep" No
"AudioVolumeDown" No
"AudioVolumeMute" No
"AudioVolumeUp" No
"WakeUp" No

3.7. 레거시·비표준·특수 키

이 키들은 최신 표준 키보드에는 없습니다. 참조용으로 여기에 나열되었습니다.

레거시 수정자 키의 code 값 목록.
KeyboardEvent code 필수 비고(비규범)
"Hyper" No
"Super" No
"Turbo" No

레거시 프로세스 제어 키의 code 값 목록.
KeyboardEvent code 필수 비고(비규범)
"Abort" No
"Resume" No
"Suspend" No

레거시 편집 키의 code 값 목록.
KeyboardEvent code 필수 비고(비규범)
"Again" No Sun USB 키보드에서 발견됨.
"Copy" No Sun USB 키보드에서 발견됨.
"Cut" No Sun USB 키보드에서 발견됨.
"Find" No Sun USB 키보드에서 발견됨.
"Open" No Sun USB 키보드에서 발견됨.
"Paste" No Sun USB 키보드에서 발견됨.
"Props" No Sun USB 키보드에서 발견됨.
"Select" No Sun USB 키보드에서 발견됨.
"Undo" No Sun USB 키보드에서 발견됨.

아래 키들은 비표준 국제 키보드에서 발견될 수 있습니다.

국제 키보드에서 발견되는 키의 code 값 목록.
KeyboardEvent code 필수 비고(비규범)
"Hiragana" No 일본 워드프로세서 키보드에서 독립 ひらがな 키에 사용
"Katakana" No 일본 워드프로세서 키보드에서 독립 カタカナ 키에 사용

마지막으로, 아래 code 값은 해당 키가 명세서 내 다른 code 값과 일치하지 않는 경우에만 사용해야 합니다. 이 값은 물리 키보드 배열과 일치하지 않는 가상 키보드에서 사용하기에 적합합니다.

특수 code 값 목록.
KeyboardEvent code 필수 비고(비규범)
"Unidentified" Yes 명세서 내에 적합한 값이 없을 때 이 code 값을 사용해야 합니다.

준수하는 구현은 "Unidentified"를 키 코드로 사용할 수 없을 때만 사용해야 하며, 이 값만 노출하는 것은 준수 구현을 의미하지 않습니다.

4. 접근성

이 명세서는 code 속성에 사용할 수 있는 값 집합만 정의하므로, 접근성 관련 신규 요소를 도입하지 않습니다.

FAST checklist를 완료하였으며 이 명세서에 적용되는 사항은 없습니다.

FAST checklist 항목 관련 참고:
"기술이 국제화 지원을 제공하는 경우". 이 명세서는 키보드의 code 값을 정의하며 읽기 쉬운 이름("ShiftLeft", "ControlRight", "AltGr", "KeyQ" 등)을 제공합니다.

이러한 특수 키 값은 사람이 읽을 수 있는 문자열로 정의되어, 특수키 감지 코드를 더 쉽게 작성할 수 있습니다. 이 값들이 사용자에게 직접 노출되는 것은 의도되지 않았으나, 방지되는 것도 아닙니다. 값을 노출하는 앱은 표시를 위한 번역 필요성을 판단해야 합니다(예: 프랑스 사용자에게 "Backspace"를 "Suppr. arrière"로 표시).

5. 국제화(I18n)

short I18n checklist를 완료하였으며 다음 항목은 코멘트가 필요합니다:

6. 보안 고려사항

보안 및 개인정보 셀프 리뷰 설문를 완료했으며 다음과 같은 메모가 있습니다:

code 속성과 관련된 보안 문제는 [UIEvents] 명세서에서 다룹니다.

7. 개인정보 보호 고려사항

보안 및 개인정보 셀프 리뷰 설문를 완료했으며 다음을 참고합니다:

code 속성과 관련된 개인정보 문제는 [UIEvents] 명세서에서 다룹니다.

8. 감사와 기여자

이 명세서 개발 과정에 실질적으로 기여해 주신 WebApps Working Group 참가자 여러분께 깊은 감사 드립니다.

Gary Kacmarcik (Google), Masayuki Nakano (Mozilla)

준수성

문서 규약

준수 요구사항은 설명적 명제와 RFC 2119 용어 조합으로 표현됩니다. 주요 용어 “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, “OPTIONAL” 등은 이 문서의 규범적 부분에서 RFC 2119에서 정의한 대로 해석해야 합니다. 다만 가독성을 위해, 이 용어들은 본 명세서에서 모두 대문자로 표시되지 않습니다.

이 명세서의 모든 텍스트는 명시적으로 비규범적, 예제, 또는 주석으로 표시된 부분을 제외하고는 규범적입니다. [RFC2119]

본 명세서의 예시는 “예를 들어(for example)” 용어로 도입되거나, class="example"로 규범적 텍스트와 분리되어 표시됩니다. 예시:

이것은 정보 예시입니다.

정보성 주석은 “Note”로 시작하며, class="note"로 규범적 텍스트와 분리해 표시합니다. 예시:

Note, 이것은 정보성 주석입니다.

준수 알고리즘

알고리즘 부분에서 명령형으로 표현된 요구사항("선행 공백 문자 모두 제거" 또는 "false 반환 후 해당 단계 중단" 등)은 해당 알고리즘 시작부에 사용된 키워드("must", "should", "may" 등)의 의미대로 해석해야 합니다.

알고리즘이나 구체적 단계로 표현된 준수 요구사항은, 최종 결과가 동일한 한, 어떤 방식으로든 구현할 수 있습니다. 특히 본 명세서의 알고리즘은 이해하기 쉬우며 성능에 최적화된 것은 아닙니다. 구현자는 최적화를 권장합니다.

색인

이 명세서에서 정의된 용어

참조로 정의된 용어

참고 문헌

규범적 참고 문헌

[INFRA]
Anne van Kesteren; Domenic Denicola. Infra Standard. Living Standard. URL: https://infra.spec.whatwg.org/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. 1997년 3월. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[UIEvents]
Gary Kacmarcik; Travis Leithead. UI Events. 2024년 9월 7일. WD. URL: https://www.w3.org/TR/uievents/
[UIEvents-key]
Travis Leithead; Gary Kacmarcik. UI Events KeyboardEvent key Values. 2023년 5월 30일. CR. URL: https://www.w3.org/TR/uievents-key/

참고용 참고 문헌

[ISO9995-1]
ISO/IEC 9995-1:2009 정보기술 -- 텍스트 및 오피스 시스템용 키보드 레이아웃 -- Part 1: 키보드 레이아웃을 위한 일반 원칙. URL: http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=51645
[ISO9995-8]
ISO/IEC 9995-8:2009 정보기술 -- 텍스트 및 오피스 시스템용 키보드 레이아웃 -- Part 8: 숫자 키패드에 문자 배정. URL: http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=51641
[USB-HID]
USB HID 사용 표 1.12. URL: https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf