• 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. 새 매핑 추가

  1. 하단 + 버튼 클릭
  2. Keyboard Shortcut: 키보드를 한글 상태로 두고 Ctrl+C 입력
  3. Action: Send Hex Code 선택
  4. Value: 0x03 입력

3. 확인

한글 상태에서 Ctrl+C를 누르면 실행 중인 프로세스가 정상 종료됨

동작 원리

구분설명
0x03ASCII 제어 문자 ETX (End of Text)
ETX와 SIGINT터미널에서 0x03을 수신하면 foreground 프로세스 그룹에 SIGINT 전달
Key Mapping 우선순위iTerm2 Key Mapping이 macOS IME보다 먼저 키 입력을 처리
Send Hex Code키 입력을 무시하고 지정된 hex 바이트를 직접 터미널에 전송

추가 유용한 매핑

동일한 원리로 한글 상태에서 다른 단축키도 매핑 가능:

단축키Hex Code용도
Ctrl+C0x03SIGINT (프로세스 중단)
Ctrl+D0x04EOF (입력 종료)
Ctrl+Z0x1aSIGTSTP (프로세스 일시정지)
Ctrl+L0x0c화면 클리어

참고 문서