1. 소개
이 문서는 다양한 키보드 레이아웃에 대한 개요를 제공하며
각 키에 사용되어야 하는 code
값을 명시합니다. [UIEvents-key]에서 설명한 key
값과 달리, code
값은
키보드의 물리적 위치만 기준으로 하며 사용자의 현재 로케일에 따라 달라지지 않습니다.
이 명세서의 이전 제목은 DOM Level 3 KeyboardEvent code
Values입니다.
1.1. 스타일 관례
이 명세서는 다음과 같은 관례를 사용합니다:
-
키에 인쇄된 키캡 또는 라벨은
↓,=,Q와 같이 표시됩니다. 이는key및code값과 관계없이 사용자의 관점에서 키를 지칭할 때 사용합니다. 생성된KeyboardEvent에서 참조됩니다. -
문자를 나타내는 글리프는:
"𣧂"로 표시됩니다. -
유니코드 코드 포인트는
U+003D와 같이 표시됩니다. -
유효한 key attribute 값(즉,
keyattribute의 값)은"ArrowDown","=","q","Q"와 같이 표시됩니다. -
유효한 key code attribute 값(즉,
codeattribute의 값)은"ArrowDown","Equal","KeyQ"와 같이 표시됩니다.
2. 키보드 레이아웃
이 절은 규범적이지 않습니다.
알파뉴메릭 키보드는 사용자가 키보드 이벤트를 생성하는 가장 일반적인 방식입니다. 이 절에서는 표준 키보드와 그 물리적 레이아웃에 대한 개요를 제공합니다.
2.1. 표준 키보드 레이아웃
이 절은 일반적으로 사용 가능한 키보드에서 볼 수 있는 물리적 레이아웃을 설명합니다.
2.1.1. 키보드 섹션
키보드 레이아웃을 논의할 때 표준 키보드를 구분된 여러 섹션으로 나누고 각 행에 레이블을 붙이는 것이 편리합니다.
이 키보드 섹션들은 다음과 같습니다:
-
알파뉴메릭 섹션은 키보드의 주요 부분이며 가장 많은 키 레이아웃 차이가 발생하는 영역입니다. 사용자가 키보드 레이아웃을 선택할 때 이 섹션의 키가 가장 많이 영향을 받습니다.
-
숫자패드("키패드" 또는 "넘버패드"라고도 함)는 숫자와 수식 키를 포함하여 숫자 데이터를 더 쉽게 입력할 수 있도록 합니다.
키를 더 쉽게 식별할 수 있도록 키보드의 행은 아래쪽 "A" 행부터 위쪽 "E" 행까지 이름이 붙여집니다. 펑션 섹션의 행은 "K" 행으로 간주됩니다. 이러한 행 이름은 [ISO9995-1]에서 제공하는 명칭과 일치합니다.
많은 키보드(현대 및 레거시 모두)에는 위의 섹션에 깔끔하게 포함되지 않는 추가 키들이 있습니다. 이러한 키 중 일부는 § 3.6 미디어 키에 포함됩니다.
2.1.2. 표준 "101" 키보드 레이아웃
표준 "101" 키보드(일반적으로 "US 레이아웃"이라 불림)는 "Backslash"
키(\|로 라벨링됨)가 단일 행 Enter 키 위에 위치한다는 특징이 있습니다.
다른 레이아웃은 이 키를 생략하고 Enter 키를 두 행으로 확장합니다.
현대 표준 "101" 레이아웃 키보드는 실제로 104개의 키를 포함합니다: 알파뉴메릭 섹션 61개 키, 숫자패드, 컨트롤
패드, 방향 패드, 펑션 섹션 43개 키. "101"이라는
이름은 본래 해당 표준 키보드가 101개의 키만 가지고 있었던 시절의 명칭입니다.
Meta 키 두 개(OS별 라벨이 붙음) 및 Menu 키가 이후에 추가되어 총 104개 키가
되었습니다.
2.1.3. 대체 "101" 키보드 레이아웃
대체 "101" 키보드는 Enter 키가 크게 마련되어 있고 Backspace 키가
"IntlYen" 키(표준 101 레이아웃의 "Backslash" 키 대체)를 위해 작아집니다.
"IntlYen"라는 이름은 일본 레이아웃에서 ¥(엔) 키에서 왔습니다. 러시아 레이아웃에서는 \/로 매핑됩니다.
현대 대체 "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" 코드가 두 키 모두에 사용됩니다.
현대 "102" 레이아웃 키보드는 알파뉴메릭 섹션 62개와 숫자패드, 컨트롤 패드, 방향 패드, 펑션 섹션 43개, 총 105개의 키를 포함합니다.
2.1.5. 한국 "103" 키보드 레이아웃
한국 "103" 키보드는 대체 101 레이아웃을 기반으로 하며, 한글 입력 모드를 다루기 위한 두 개의 추가 키(공백 양쪽에 각각 하나)를 포함합니다.
이 키들은 "Lang2"("한자", 한자 hanja 라벨)
와 "Lang1"("한/영", 한/영 han/yeong 라벨)입니다.
현대 "103" 레이아웃 키보드는 알파뉴메릭 섹션 63개와 숫자패드, 컨트롤 패드, 방향 패드, 펑션 섹션 43개, 총 106개의 키를 포함합니다.
2.1.6. 브라질 "104" 키보드 레이아웃
브라질에서 사용되는 "104" 레이아웃은 "102" 레이아웃의 두 키("Backslash",
"IntlBackslash"), "IntlRo" 키(오른쪽 shift 옆), 숫자패드의 추가 키 등 총 4개의 새로운 키가 포함됩니다. 이 숫자패드 키는 "NumpadComma"라 불리며, 천 단위 구분자 역할을 합니다.
브라질 키보드에서는 이 키가 .로 라벨링되고, "NumpadDecimal" 키는 ,로
라벨링됩니다.
현대 "104" 레이아웃 키보드는 알파뉴메릭 섹션 63개와 숫자패드, 컨트롤 패드, 방향 패드, 펑션 섹션 44개, 총 107개의 키를 포함합니다. 일부 브라질 키보드는 추가 숫자패드 키가 없으며 106개 키만 가진 경우도 있습니다.
2.1.7. 일본 "106" 키보드 레이아웃
일본 "106" 키보드 레이아웃에는 "IntlYen"(¥_), "Backslash"(]む), "IntlRo"(\ろ) 등 3개의 새로운 키가 추가됩니다.
또한 스페이스바가 작아지고 입력 모드 키 3개("NonConvert"[무변환 muhenkan], "Convert"[변환 henkan], "KanaMode"[카타카나/히라가나/로마지 katakana/hiragana/romaji]) 공간이 마련됩니다.
현대 "106" 레이아웃 키보드는 알파뉴메릭 섹션 66개와 숫자패드, 컨트롤 패드, 방향 패드, 펑션 섹션 43개, 총 109개의 키를 포함합니다.
2.1.8. 애플 키보드 레이아웃
일반적으로 애플 키보드는 PC 키보드와 동일한 레이아웃을 따르지만, 아래 그림과 같이 일부 차이점이 있습니다.
이 그림에서 초록색 키는 새로운 위치로 이동된 키, 파란색 키는 추가된 키를 나타냅니다.
2.1.9. 노트북 키보드 레이아웃
노트북 키보드의 제한된 공간 때문에 모든 필수 키를 수용하기 위해 물리적 키 레이아웃이 조정되는 경우가 많습니다. 문자 입력 키는 알파뉴메릭 섹션에서 그대로 유지되지만, 다른 섹션들은 일반적으로 합쳐지거나 아예 제외됩니다.
이 애플 노트북 키보드에서는 오른쪽 컨트롤 키가 제거되어, 반 높이 방향키 공간과 좌측 Fn 키가 추가되었습니다.
PC 노트북 키보드는 종류가 다양하지만, 이 예시 키보드는 일반적으로 발견되는 몇 가지 특성을 보여줍니다. 컨트롤 패드 키가 오른쪽에 추가되고 방향키가
아래쪽에 배치됩니다. 우측 Shift 키는 위쪽 방향키 공간 때문에 크기가 작아지며, 우측 Meta 키는
일반적으로 제거됩니다.
2.1.10. 기타 지역 키보드 레이아웃
기타 지역은 기존 레이아웃을 참고해 키캡과 키 매핑만 조정하므로 이 명세서에 별도로 설명하지 않았습니다.
이러한 키보드는 새로운 물리적 키를 도입하지 않기 때문에 별도의 문서화가 필요 없습니다.
이 키보드들은 대개 "101"(표준 또는 대체형), 또는 "102" 레이아웃을 기반으로 합니다. 예를 들어, 아랍어, 키릴, 그리스, 힌디어, 크메르, 태국 키보드는 모두 "101" 또는 "102" 키보드 레이아웃을 기반으로 합니다.
2.2. 모바일 키패드
콘텐츠 작성자가 모바일 키패드의 기계적 레이아웃을 사용하고자 할 경우, 이 명세서는 [ISO9995-8]에서
정의한 키패드 레이아웃(Unicode U+0061 ... U+007A("a" - "z")가 2 ~ 9번 키에 할당됨)을 참고하도록 권장합니다.
이는 일부 국제적 용도에 적합한 보편적 레이아웃입니다.
이 키패드 레이아웃(특히 영문자 분포)은 영문 기기용이며 다수 사용자의 키패드 구성과는 다를 수 있습니다. 콘텐츠 작성자는 특정 구성에 의존하지 말고, 국제화와 지역화가 용이하도록 콘텐츠를 작성해야 합니다.
2.3. 미디어 리모컨
많은 키보드에는 미디어 기능을 제어할 수 있는 특수 키가 있습니다. 점점 더 많은 미디어 장치(특히 TV)가 웹에 연결되며, 하이브리드 키보드/리모컨 장치가 증가하고 있습니다. 이러한 하이브리드 웹/미디어 장치의 요구를 반영해, 이 명세서는 전통적인 키보드 키와 함께 리모컨 버튼에 일반적으로 사용되는 키도 정의합니다.
리모컨 버튼은 작은 폼팩터 때문에 종종 모달이며 한 키가 상황에 따라 여러 기능을 수행할 수 있습니다.
또한 많은 키들이 토글(예: Play, Pause, Up, Menu, Exit) 기능을 하며,
대부분의 리모컨 버튼은 수정자 상태 없이 단일 기능에 할당됩니다.
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
값을 생성하는) 키입니다.
이 그림은 여러 키보드에서 발견되는 모든 문자 입력 키(파란색/초록색 표시)가 결합된 가상의 키보드를 보여줍니다. 파란색 키는 모든 표준 키보드에 존재하며, 초록색 키는 일부 키보드에만 있습니다.
각 키에 표시된 이름은 해당 키에 할당된 code
값입니다. 가능한 경우,
code
명칭은 해당 위치의 US 키 이름(즉, US 키보드 레이아웃)을 기반으로 하며, [USB-HID] 명명 규칙을 따릅니다.
US 키보드에 없는 키의 경우에는 UK 또는 일본 레이아웃에서 명칭을 차용합니다.
이 도표엔 "Backslash" 키가 두 개 있습니다. 101키 레이아웃의 D행 끝에 큰 키가
하나, 102/104/106키 레이아웃 C행에서 "Quote"와 "Enter" 사이에 작은 키가 하나 있습니다. 키보드 레이아웃에는 "Backslash" 키가 반드시 하나만 있어야 합니다.
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 | 좌측 Shift와 Z 사이(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 등)을 가진 키입니다.
일부 예외를 제외하면, 이 키들은 현재 키보드 레이아웃에 따라 의미가 달라지지 않습니다.
"AltRight" 키(초록색 강조)는 기능 키 중 유일하게
모든 로케일에서 동일한 key
값을 생성하지 않습니다. 일부 로케일에서는 "Alt",
다른 로케일에서는 "AltGraph"를 생성합니다.
KeyboardEvent
code
| 필수 | 비고(비규범) |
|---|---|---|
"AltLeft"
| Yes | Alt, Option, ⌥
|
"AltRight"
| Yes | Alt, Option, ⌥. 다수 레이아웃에는 AltGr로 라벨링됨
|
"Backspace"
| Yes | Backspace 또는 ⌫. Apple 키보드는 Delete
|
"CapsLock"
| Yes | CapsLock 또는 ⇪
|
"ContextMenu"
| Yes | 애플리케이션 컨텍스트 메뉴 키(일반적으로 우측 Meta와 Control
사이)
|
"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
값을 사용합니다.
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 등이 있습니다.
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자" 형태로 배치됩니다.
KeyboardEvent
code
| 필수 | 비고(비규범) |
|---|---|---|
"ArrowDown"
| Yes | ↓
|
"ArrowLeft"
| Yes | ←
|
"ArrowRight"
| Yes | →
|
"ArrowUp"
| Yes | ↑
|
3.4. 숫자패드 섹션
숫자패드 섹션은 계산기 또는 휴대폰과 같은 격자 형태로
배열된 키들입니다. 이 섹션에는 숫자 및 수식 연산자 키가 포함됩니다. 흔히 NumLock 키가 있어 키들이 표준 숫자 기능과 컨트롤 패드, 방향 패드의 동작을 모방하는 기능으로 전환됩니다.
노트북이나 소형 키보드는 공간을 아끼기 위해 이 키들을 생략하는 경우가 많습니다.
키패드는 숫자패드의 다른 용어입니다.
이 절의 code
값은
번호 키가 격자 배열되는 휴대폰 키패드와 리모컨에도 사용해야 합니다.
표준 숫자패드에는 괄호, 연산자, 16진수 기호, 계산기 기능(Backspace 등)까지 추가 키들이 있는 경우도 있습니다. 흔히 추가되는 키는 아래 표에 나와 있습니다.
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에는
항상 펑션키 이름이 들어갑니다.
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 키보드에는 Eject나 Power 키가
펑션 섹션에 있을 수 있습니다. 해당 키의
code
값은 § 3.6 미디어 키에서 정의합니다.
3.6. 미디어 키
미디어 키는 키보드에 추가된, 재생·일시정지·음량 조절 등 미디어 관련 기능을 제공하는 추가 키입니다. 이러한 키는 키보드마다 표준 위치가 없어 제조사별로 배열이나 키 종류가 다르거나 완전히 다를 수 있습니다.
미디어 키는 일반 입력 키와 외관상 구별되는 경우가 많으며, 키보드에 들어가 있기도 합니다.
노트북 키보드에서는 이러한 키들이 펑션키와 합쳐져 있고,
미디어 키 기능이 기본 역할이며 펑션키 역할을 하려면 Fn 키를 함께 눌러야 합니다.
이런 경우 code
값은 펑션키와 일치시켜야 하며 ("F1" ... "F12"),
이런 방식으로 합쳐진 키들은 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. 레거시·비표준·특수 키
이 키들은 최신 표준 키보드에는 없습니다. 참조용으로 여기에 나열되었습니다.
KeyboardEvent
code
| 필수 | 비고(비규범) |
|---|---|---|
"Hyper"
| No | |
"Super"
| No | |
"Turbo"
| No |
KeyboardEvent
code
| 필수 | 비고(비규범) |
|---|---|---|
"Abort"
| No | |
"Resume"
| No | |
"Suspend"
| No |
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 키보드에서 발견됨. |
아래 키들은 비표준 국제 키보드에서 발견될 수 있습니다.
KeyboardEvent
code
| 필수 | 비고(비규범) |
|---|---|---|
"Hiragana"
| No | 일본 워드프로세서 키보드에서 독립 ひらがな 키에 사용
|
"Katakana"
| No | 일본 워드프로세서 키보드에서 독립 カタカナ 키에 사용
|
마지막으로, 아래 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. 보안 고려사항
보안 및 개인정보 셀프 리뷰 설문를 완료했으며 다음과 같은 메모가 있습니다:
-
2.1 이 기능이 웹사이트 또는 다른 주체에 어떤 정보를 노출할 수 있고, 왜 그 노출이 필요한가?: 이 명세서는 키 이벤트의
code속성에 사용할 수 있는 값 집합을 정의합니다. 이는 사용자가 누른 물리적인 키(위치 기준)를 플랫폼 독립적으로 식별할 필요가 있기 때문입니다(예: 게임에서 WASD 키). -
2.17 기능이 비활성 문서를 어떻게 처리하는가?: 이 속성은 키 이벤트에만 관련되며, 문서가 완전히 활성화되지 않으면 이벤트가 전송되지 않습니다.
code
속성과 관련된 보안 문제는 [UIEvents] 명세서에서
다룹니다.
7. 개인정보 보호 고려사항
보안 및 개인정보 셀프 리뷰 설문를 완료했으며 다음을 참고합니다:
-
2.6 이 명세서의 기능이 플랫폼 정보를 오리진에 노출하나?:
code속성에는 사용자가 누른 키에 대한 플랫폼 독립적 "스캔코드" 값이 들어갑니다. 몇 가지 특수한 `code` 값으로 특정 키보드를 식별할 수 있습니다. 예를 들어 `IntlBackslash`, `IntlRo`, `IntlYen` 등이 있습니다. 사용자가 이러한 키를 입력해야 정보가 노출됩니다. -
3.5 정당한 오용: 사이트가 모든 키 입력을 캡처해 키보드에서 생성된 값을 기록해서, 충분히 많은 키 입력(그리고 키보드가 변경되지 않을 때)이 모이면, 사이트가 알려진 키보드 레이아웃 데이터베이스와 값을 대조해 사용자의 현재 키보드 레이아웃을 추정할 수도 있습니다. 다만 이는
key속성 자체와 관련된 문제이고( [UIEvents] 명세서에서 정의됨), 여기의 값 정의와 직접적인 관련은 없습니다.
code
속성과 관련된 개인정보 문제는 [UIEvents] 명세서에서
다룹니다.
8. 감사와 기여자
이 명세서 개발 과정에 실질적으로 기여해 주신 WebApps Working Group 참가자 여러분께 깊은 감사 드립니다.
Gary Kacmarcik (Google), Masayuki Nakano (Mozilla)