먼저 키보드의 Tab, Enter, Backspace, Space 같은 키들은 ASCII 코드표에 이미 정의된 단일 바이트 값이 있다.
| Key | Hex | ASCII 문자 |
| Tab | 0x09 | TAB |
| Enter | 0x0D 또는 0x0A | CR 또는 LF |
| Backspace | 0x08 또는 0x7F | BS 또는 DEL |
| ESC | 0x1B | ESC |
| Space | 0x20 | SP |
반면 방향키, Delete, Home, End 같은 키들은 ASCII 코드표에 자리가 없다. 이런 키들을 표현하기 위해 터미널은 멀티바이트의 이스케이프 시퀀스를 사용한다.
터미널 특수 키 이스케이프 시퀀스 표
모든 이스케이프 시퀀스는 첫 번째 바이트가 0x1B (ESC 문자의 ASCII 코드)로 시작하며, 테라텀 등 터미널에서 다음 키를 누르면 아래 바이트 시퀀스가 연달아 전송된다.
| Key | Hex 바이트 시퀀스 | ASCII 문자 |
| 위쪽 화살표 | 0x1B 0x5B 0x41 | ESC [ A |
| 아래쪽 화살표 | 0x1B 0x5B 0x42 | ESC [ B |
| 오른쪽 화살표 | 0x1B 0x5B 0x43 | ESC [ C |
| 왼쪽 화살표 | 0x1B 0x5B 0x44 | ESC [ D |
| Delete | 0x1B 0x5B 0x33 0x7E | ESC [ 3 ~ |
| Home | 0x1B 0x5B 0x31 0x7E | ESC [ 1 ~ |
| End | 0x1B 0x5B 0x34 0x7E | ESC [ 4 ~ |
Backspace 키와 Delete 키의 충돌

여기서 아스키 코드표엔 DEL 제어문자가 단일 바이트로 정의되어 있는데, 왜 키보드의 Delete 키가 멀티바이트 이스케이프 시퀀스로 전달되는지 의아할 수 있다.
DEL (0x7F)은 텔레타이프 시절 이미 기록된 문자를 무효화하기 위해 정의된 ASCII 제어 문자였다. 이후 VT220 같은 터미널에서는 DEL (0x7F)을 커서 왼쪽 문자를 삭제하는 용도로 사용했고, 현재는 키보드에서 Backspace 키를 누를 때 DEL (0x7F) 또는 BS (0x08)를 전송하는 방식이 혼용되어 사용되고 있다.
한편 현재 키보드에서 Delete 키를 누르면 대부분은 0x1B 0x5B 0x33 0x7E 이스케이프 시퀀스를 전송한다.
테라텀의 Backspace / Delete 키 설정
위와 같은 문제로 터미널 설정에 따라 Backspace 키와 Delete 키의 역할이 충돌될 수도 있다고 생각했는지 테라텀에서는 키 값을 직접 설정할 수 있는 옵션을 제공한다.
그런데 테라텀의 기본 설정이 PuTTY, xterm, SecureCRT 등 대부분 터미널에서 적용하는 표준 방식과 다르기 때문에 이걸 모르면 "왜 테라텀에서는 잘 됐는데 다른 터미널 프로그램에선 안먹히지?" 하는 불상사가 생긴다.
Tera Term > Setup > Keyboard
- Backspace key 설정
- 체크 해제 (기본값) : 0x08 (BS)를 전송한다.
- 체크 선택 : 0x7F (DEL)를 전송한다.
- Delete key 설정
- 체크 선택 (기본값) : 0x7F (DEL)를 전송한다.
- 체크 해제 : 0x1B 0x5B 0x33 0x7E 를 전송한다.

'지식창고 > IT 지식' 카테고리의 다른 글
| ARM 아키텍처의 발전 (0) | 2026.03.14 |
|---|---|
| MAC 주소 (UAA, LAA) (0) | 2026.03.12 |
| Wireshark에서 캡쳐시 UDP/TCP 데이터 뒤에 00 패딩이 붙는 이유 (0) | 2024.01.24 |
| TCP/IP stack (0) | 2024.01.10 |
| loop unroll (0) | 2023.12.19 |