HTML DOM KeyboardEvent 객체는 사용자가 키보드의 키를 누를 때 발생하는 이벤트를 나타냅니다. 웹 개발에서 키보드 입력을 감지하고 처리해야 할 때 이 객체를 활용하면 다양한 인터랙티브 기능을 구현할 수 있습니다.
KeyboardEvent의 주요 속성과 메서드
KeyboardEvent 객체는 아래와 같은 속성과 메서드를 제공합니다.
| 속성/메서드 | 설명 |
|---|---|
| altKey | "ALT" 키가 눌렸는지 여부를 반환합니다. |
| charCode | 키의 유니코드(Unicode) 문자 코드를 반환합니다. |
| code | 눌린 키의 물리적 코드를 반환합니다. |
| ctrlKey | "CTRL" 키가 눌렸는지 여부를 반환합니다. |
| getModifierState() | 지정한 보조 키(modifier key)가 활성화되어 있으면 true, 그렇지 않으면 false를 반환합니다. |
| isComposing | 이벤트가 입력 조합(composing) 상태인지 여부를 반환합니다. |
| key | 이벤트가 나타내는 키의 키 값(key value)을 반환합니다. |
| keyCode | 이벤트를 발생시킨 키의 유니코드 문자 코드를 반환합니다. |
| location | 키보드 또는 기기상에서 해당 키의 위치를 반환합니다. |
| metaKey | 키 이벤트가 발생했을 때 "meta" 키가 눌렸는지 여부를 반환합니다. |
| repeat | 키가 계속 눌려 있어 반복 입력 중인지 여부를 반환합니다. |
| shiftKey | 키 이벤트가 발생했을 때 "SHIFT" 키가 눌렸는지 여부를 반환합니다. |
| which | 이벤트를 발생시킨 키의 유니코드 문자 코드를 반환합니다. |
KeyboardEvent 관련 이벤트
KeyboardEvent 객체에 작동하는 대표적인 이벤트는 다음과 같습니다.
| 이벤트 | 설명 |
|---|---|
| onkeydown | 사용자가 키를 누르고 있는 동안 발생합니다. |
| onkeypress | 사용자가 키를 눌렀을 때 발생합니다. |
| onkeyup | 사용자가 눌렀던 키를 놓았을 때 발생합니다. |
예제: key 속성 활용하기
다음은 key 속성을 활용한 예제입니다. 사용자가 입력한 키 값에 따라 다른 메시지를 화면에 출력합니다.
<!DOCTYPE html>
<html>
<head>
<title>KeyboardEvent key</title>
<style>
form {
width:70%;
margin: 0 auto;
text-align: center;
}
* {
padding: 2px;
margin:5px;
}
input[type="button"] {
border-radius: 10px;
}
</style>
</head>
<body>
<form>
<fieldset>
<legend>KeyboardEvent-key</legend>
<label>빈칸 채우기:
<input type="text" id="textSelect" placeholder="__ for Ball" onkeypress="getEventData(event)" autocomplete="off">
</label>
<div id="divDisplay"></div>
</fieldset>
</form>
<script>
var divDisplay = document.getElementById("divDisplay");
var textSelect = document.getElementById("textSelect");
function getEventData(InputEvent) {
if(InputEvent.key === 'B')
divDisplay.textContent = 'Correct Answer';
else if(InputEvent.key === 'b')
divDisplay.textContent = 'Close call, you might have caps lock turned off';
else
divDisplay.textContent = 'Try Again, '+textSelect.placeholder;
textSelect.textContent = '';
}
</script>
</body>
</html>실행 결과
위 코드를 실행하면 다음과 같은 결과를 확인할 수 있습니다.
텍스트 필드에 아무것도 입력하지 않은 초기 화면:

텍스트 필드에 소문자 'b'를 입력한 경우 — Caps Lock이 꺼져 있다는 안내 메시지가 표시됩니다:

텍스트 필드에 대문자 'B'를 입력한 경우 — 정답 메시지가 표시됩니다:

이처럼 KeyboardEvent 객체의 key 속성을 사용하면 사용자가 어떤 키를 눌렀는지 정확하게 판별할 수 있으며, 이를 응용하면 단축키 구현, 폼 유효성 검사, 게임 컨트롤 등 다양한 기능을 만들 수 있습니다.