키보드 테스트
키보드 키 기능 테스트, 실시간 키 상태 및 키 값 정보 표시
키 입력 기록
키보드 테스트란?
키보드 테스트는 키 입력이 브라우저까지 도달하는지, 브라우저가 각 키 이벤트를 어떻게 인식하는지 확인하는 도구입니다. 키가 먹통처럼 보일 때, 키가 눌린 상태로 남는 것 같을 때, 단축키가 작동하지 않을 때, 노트북 키보드 손상이 의심될 때, 새 기계식 키보드를 간단히 점검할 때 유용합니다. 이 도구는 key, code, 기존 keyCode, 키 위치, 반복 입력 여부, Ctrl·Shift·Alt·Meta 같은 보조 키 상태를 보여 줍니다. 이를 통해 하드웨어 문제, 키보드 배열 차이, 소프트웨어 차단을 구분할 수 있습니다. Ctrl+Alt+Del, Alt+Tab처럼 운영체제가 가로채는 단축키는 웹페이지에 전달되지 않는 것이 정상입니다.
사용 방법
사용 방법
- 테스트 영역에 마우스를 올려놓으세요
- 키보드의 아무 키나 누르세요
- 키 하이라이트와 정보 패널을 관찰하세요
- 아래에서 키 기록을 확인하세요
팁
- 초록색 하이라이트는 키가 정상적으로 작동함을 나타냅니다
- 모든 표준 키보드 키를 테스트할 수 있습니다
- 수정 키(Ctrl, Shift, Alt, Meta) 감지를 지원합니다
- 반복된 키는 정보 패널에 표시됩니다
활용 사례
기술 원리
브라우저는 KeyboardEvent 인터페이스를 통해 키보드 이벤트를 노출합니다: 각 키 누름은 keydown과 keyup 이벤트를 발생시킵니다. KeyboardEvent는 여러 핵심 속성을 갖추고 있습니다: key는 키의 문자 값으로 레이아웃과 Shift 상태의 영향을 받습니다(예: a 대 A); code는 물리적 위치 식별자로 레이아웃에 독립적입니다(QWERTY와 AZERTY 모두에서 KeyA는 KeyA); keyCode는 레거시 숫자 값입니다(더 이상 사용되지 않지만 오래된 코드에서 여전히 사용됨); location은 키의 위치를 나타냅니다(0 표준, 1 왼쪽, 2 오른쪽, 3 숫자 키패드). 조합을 감지하려면 ctrlKey, shiftKey, altKey, metaKey의 네 가지 불리언 수정자 플래그를 리스닝합니다 — 예: Ctrl+C에서는 ctrlKey=true이고 key='c'입니다. 발생 순서는 keydown → keypress(더 이상 사용되지 않음) → keyup이며, 키를 누르고 있는 동안 keydown이 계속 발생하고 event.repeat=true입니다. 게임 개발에서는 code를 선호하고(플레이어가 레이아웃을 전환해도 영향 없음), 입력 필드에서는 key를 선호합니다(실제 문자를 제공). N키 롤오버(NKRO)는 키보드 하드웨어가 키를 동시에 여러 개 등록할 수 있음을 의미합니다. 일반 USB 키보드는 USB HID 프로토콜에 의해 6KRO로 제한되어 6개 이상의 키를 동시에 누르면 이벤트가 누락되기 시작합니다. PS/2 인터페이스나 전용 드라이버를 사용하는 기계식 키보드는 진정한 NKRO를 제공할 수 있습니다.
- KeyboardEvent.key는 문자 값('a'/'A'/'Enter')으로 레이아웃과 Shift의 영향을 받습니다. 입력 필드 시나리오에서 사용하세요.
- KeyboardEvent.code는 물리적 위치 식별자('KeyA'/'Digit1')로 레이아웃에 독립적입니다. 게임과 단축키 바인딩에서 사용하세요.
- location 값: 0 표준, 1 왼쪽 수정 키, 2 오른쪽 수정 키, 3 숫자 키패드. 왼쪽/오른쪽 Shift, Ctrl, Alt를 구분할 때 유용합니다.
- 조합: ctrlKey/shiftKey/altKey/metaKey는 수정자 상태를 나타내는 네 가지 불리언 값입니다. key와 조합하여 Ctrl+C, Cmd+Shift+P 등을 감지합니다.
- event.repeat=true는 누르고 있는 키가 자동 반복 중임을 의미합니다. 길게 누르기 테스트에서는 이 플래그를 사용하여 반복 이벤트를 필터링하세요.
- 6KRO 대 NKRO: 6키 롤오버는 USB HID 프로토콜의 제한입니다. 기계식 키보드는 PS/2 또는 전용 드라이버를 통해 N키 롤오버(NKRO)를 달성할 수 있습니다.
예시
문자 키 누르기
A 키 누름 -> key: "a", code: "KeyA", keyCode: 65, location: 0 (standard)기능 키 누르기
F1 키 누름 -> key: "F1", code: "F1", keyCode: 112, location: 0조합 키 누르기
Ctrl+C 누름 -> Ctrl 감지 (code: "ControlLeft", location: 1) + C (code: "KeyC", ctrlKey: true)자주 묻는 질문
테스트는 어떤 키를 감지하나요?
브라우저가 keydown 이벤트를 받는 거의 모든 물리 키, 즉 영숫자, 수정자(Shift/Ctrl/Alt/Meta), 화살표 키, 기능 키 F1~F24, 숫자 패드, 그리고 지원되는 브라우저에서는 멀티미디어 키(볼륨, 재생)까지 감지합니다. 키를 누르면 화면 키보드의 해당 키가 초록색으로 바뀌어 반응 없는 키를 한눈에 찾을 수 있습니다.
Fn 키가 인식되지 않는 이유가 뭔가요?
대부분의 노트북에서 Fn은 펌웨어 수준에서 처리되어 JavaScript 키보드 이벤트를 만들지 않습니다. 이는 정상이며 결함이 아닙니다. 기능 행 조합(Fn+F5 등)은 키 코드 없이 동작(볼륨 업)만 발생시키는 경우가 많으므로, 데스크톱이나 외장 키보드를 사용해 그런 키를 테스트하세요.
키 끼임이나 채터링 테스트도 가능한가요?
네. 키를 한 번 누르고 keydown 이벤트가 몇 번 발생하는지 확인하세요. 채터링이 있는 스위치는 밀리초 단위로 여러 이벤트를 발생시킵니다. 일부 빌드는 원시 이벤트 타임스탬프 목록을 보여 주므로, 채터링이 시각적으로 드러납니다.
key, code, keyCode는 어떻게 다른가요?
key는 값("a", "Shift", "Enter")이고, code는 물리 위치("KeyA", "ShiftLeft")로 키보드 레이아웃이 바뀌어도 동일합니다. keyCode는 더 이상 권장되지 않는 숫자 ID이지만 호환성을 위해 여전히 발생합니다. 언어 레이아웃과 무관하게 물리 키를 식별하려면 'code'를 사용하세요.
n-key 롤오버(NKRO) 테스트도 되나요?
부분적으로 가능합니다. 페이지가 현재 눌린 키를 보여 주므로 여러 키를 동시에 눌러 몇 개가 인식되는지 확인할 수 있습니다. USB HID와 PS/2 키보드는 고스팅 한계가 다르며, 여기서의 테스트는 실제 웹 환경에서의 결과를 보여 줍니다. 다만 본격적인 측정에는 Aqua's KeyTest, Switch Hitter 같은 전용 도구가 더 정확합니다.
데드 키와 IME 조합도 인식되나요?
IME 조합(중국어, 일본어, 한국어)은 조합 중에는 보통 기저의 키 이벤트를 억제합니다. 개별 키를 테스트하려면 IME를 끄고 직접 입력 모드를 사용하세요. 데드 키(유럽 레이아웃의 액센트, 움라우트 등)는 Dead를 발생시킨 뒤 다음 키와 결합됩니다.
서버로 전송되는 게 있나요?
아니요. 키 이벤트는 모두 브라우저 안에서 처리되며, 어디에도 기록되거나 전송되지 않습니다.