- iTerm2 한글 Ctrl+C 헥스 코드 매핑은 한글 IME 활성 상태에서 Ctrl+C가 SIGINT로 전달되지 않는 문제의 해결 방법
- macOS 한글 입력기가 Ctrl+C 키 입력을 가로채는 것을 iTerm2 Key Mapping으로 우회하는 설정
- iTerm2 사용자 커뮤니티에서 가장 널리 공유되는 검증된 해결책
해당 개념이 필요한 이유
- macOS에서 한글 입력 상태로 터미널 작업 시
Ctrl+C가 프로세스 중단(SIGINT)으로 동작하지 않음 - 매번 영문으로 전환 후
Ctrl+C를 눌러야 하는 불편함 - 특히 장시간 CLI 작업(git, npm, docker 등) 시 빈번하게 발생
AS-IS
[한글 입력 상태]
사용자: Ctrl+C 입력
↓
macOS IME가 키 입력을 가로챔 (한글 조합 중으로 인식)
↓
터미널에 SIGINT(0x03) 전달 안 됨
↓
프로세스가 종료되지 않음 → 영문 전환 후 재시도 필요
TO-BE
sequenceDiagram autonumber participant User as 사용자 participant iTerm2 as iTerm2 Key Mapping participant Shell as Shell/Process User->>iTerm2: Ctrl+C (한글 상태) Note over iTerm2: Key Mapping이 IME보다<br/>먼저 가로챔 iTerm2->>Shell: 0x03 (ETX/SIGINT) 전송 Shell->>Shell: 프로세스 종료 Shell-->>User: 정상 종료 확인
설정 방법
1. Key Mappings 진입
iTerm2 > Preferences (⌘,) > Profiles > Keys > Key Mappings
2. 새 매핑 추가
- 하단
+버튼 클릭 - Keyboard Shortcut: 키보드를 한글 상태로 두고
Ctrl+C입력 - Action:
Send Hex Code선택 - Value:
0x03입력
3. 확인
한글 상태에서 Ctrl+C를 누르면 실행 중인 프로세스가 정상 종료됨
동작 원리
| 구분 | 설명 |
|---|---|
0x03 | ASCII 제어 문자 ETX (End of Text) |
| ETX와 SIGINT | 터미널에서 0x03을 수신하면 foreground 프로세스 그룹에 SIGINT 전달 |
| Key Mapping 우선순위 | iTerm2 Key Mapping이 macOS IME보다 먼저 키 입력을 처리 |
| Send Hex Code | 키 입력을 무시하고 지정된 hex 바이트를 직접 터미널에 전송 |
추가 유용한 매핑
동일한 원리로 한글 상태에서 다른 단축키도 매핑 가능:
| 단축키 | Hex Code | 용도 |
|---|---|---|
Ctrl+C | 0x03 | SIGINT (프로세스 중단) |
Ctrl+D | 0x04 | EOF (입력 종료) |
Ctrl+Z | 0x1a | SIGTSTP (프로세스 일시정지) |
Ctrl+L | 0x0c | 화면 클리어 |