macOS를 사용하다 보면 특정 키를 길게 눌렀을 때 반복 입력이 되지 않고 악센트 문자 선택 메뉴가 나타나는 것을 경험하게 됩니다. 이는 macOS의 기본 동작인 Press and Hold 기능 때문입니다. 코드 편집기나 터미널에서 화살표 키를 길게 눌러 빠르게 이동하거나, 문자를 반복 입력하고 싶을 때 이 기능은 오히려 생산성을 저해할 수 있습니다.
이 글에서는 ApplePressAndHoldEnabled 설정을 통해 Press and Hold 기능을 비활성화하고 연속 키 입력을 활성화하는 방법을 살펴봅니다.
macOS에서 특정 키를 길게 누르면 다음과 같은 동작이 발생합니다:
문자 키의 경우:
'e' 키를 길게 누르면 → è é ê ë ē ė ę 같은 악센트 문자 선택 메뉴 표시
'a' 키를 길게 누르면 → à á â ä æ ã å ā 선택 메뉴 표시
화살표 키의 경우:
→ 키를 길게 누르면 → 한 번만 이동 후 멈춤
(연속 이동 불가)
개발 환경에서 이 기능은 다음과 같은 불편함을 초래합니다:
1. 코드 에디터에서의 불편함
// 화살표 키로 빠르게 이동하고 싶지만
function example() {
const data = [1, 2, 3]; // → 키를 길게 눌러도 한 칸만 이동
}2. 터미널에서의 불편함
# 반복 입력이 필요한 경우
mkdir ==================== # = 키를 길게 눌러도 한 번만 입력됨3. Vim 등 키보드 중심 도구 사용 시
" hjkl 키로 빠른 이동이 불가능
j를 길게 눌러도 한 줄만 아래로 이동다음 명령어로 Press and Hold 기능을 전역적으로 비활성화할 수 있습니다:
defaults write -g ApplePressAndHoldEnabled -bool false명령어 분석:
defaults write: macOS 설정을 변경하는 명령어-g: 글로벌(시스템 전체) 설정 적용ApplePressAndHoldEnabled: Press and Hold 기능 제어 키-bool false: 기능 비활성화 (true면 활성화)중요: 명령어 실행 후 애플리케이션을 완전히 종료하고 재시작해야 설정이 적용됩니다.
# 1. 설정 변경
defaults write -g ApplePressAndHoldEnabled -bool false
# 2. VSCode, iTerm2 등 사용 중인 앱 종료
# (Cmd + Q로 완전 종료)
# 3. 앱 재시작재시작이 필요한 이유:
macOS 앱들은 시작 시점에 NSUserDefaults를 읽어 캐싱합니다. 런타임 중에는 설정 변경이 반영되지 않으므로 프로세스를 다시 시작해야 합니다.
변경 전:
'e' 키 길게 누르기 → è é ê ë 메뉴 표시
→ 키 길게 누르기 → 한 번만 이동
변경 후:
'e' 키 길게 누르기 → eeeeeeeeeee (연속 입력)
→ 키 길게 누르기 → →→→→→→→→ (연속 이동)
1. VSCode에서 빠른 이동
function longFunctionName() {
const veryLongVariableName = 'value'; // → 키로 빠르게 끝까지 이동
}2. Vim에서 효율적인 탐색
" j 키를 길게 눌러 빠르게 아래로 스크롤
jjjjjjjjjjjjjjjjjjjjj3. 터미널에서 반복 문자 입력
echo "==========================" # = 키 길게 누르기로 입력전역 설정 대신 특정 앱에만 적용하고 싶다면 앱의 Bundle Identifier를 사용합니다.
defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool falsedefaults write com.googlecode.iterm2 ApplePressAndHoldEnabled -bool false# 앱의 Bundle Identifier 확인
osascript -e 'id of app "Visual Studio Code"'
# 출력: com.microsoft.VSCode
osascript -e 'id of app "iTerm"'
# 출력: com.googlecode.iterm2Press and Hold 기능을 다시 활성화하려면:
# 전역 설정 되돌리기
defaults write -g ApplePressAndHoldEnabled -bool true
# 또는 설정 완전히 제거 (기본값 복원)
defaults delete -g ApplePressAndHoldEnabled특정 앱 설정 제거:
defaults delete com.microsoft.VSCode ApplePressAndHoldEnabled설정이 제대로 적용되었는지 확인하려면:
# 전역 설정 확인
defaults read -g ApplePressAndHoldEnabled
# 출력: 0 (false, 비활성화)
# 출력: 1 (true, 활성화)
# 특정 앱 설정 확인
defaults read com.microsoft.VSCode ApplePressAndHoldEnabled설정이 없는 경우:
defaults read -g ApplePressAndHoldEnabled
# 출력: The domain/default pair of (kCFPreferencesAnyApplication, ApplePressAndHoldEnabled) does not exist
# → 기본값 사용 중 (활성화 상태)Press and Hold를 비활성화하면 악센트 문자를 입력하는 기본 방법을 잃게 됩니다.
대체 방법:
Option 키 조합 사용:
- Option + e, then e → é
- Option + u, then u → ü
- Option + n, then n → ñ
- Option + i, then i → î
또는 이모티콘 및 기호 패널 사용:
Control + Command + Space → 문자 뷰어 열기
이 설정은 시스템 재부팅 후에도 유지됩니다. macOS 업데이트 시에도 대부분 유지되지만, 메이저 버전 업데이트 후에는 다시 확인하는 것이 좋습니다.
연속 입력 속도를 조절하려면 시스템 설정에서 변경할 수 있습니다:
시스템 설정 경로 (macOS Ventura 이상):
시스템 설정 → 키보드 → 키 반복 속도
또는 터미널에서 직접 설정:
# 키 반복 속도 설정 (값이 작을수록 빠름, 기본값: 2)
defaults write -g KeyRepeat -int 1
# 초기 반복 지연 설정 (값이 작을수록 빠름, 기본값: 15)
defaults write -g InitialKeyRepeat -int 10VSCode는 자체적으로 키 반복을 제어할 수 있습니다. settings.json에서:
{
"editor.cursorBlinking": "smooth",
"editor.smoothScrolling": true
}IntelliJ 계열 IDE는 JVM 레벨에서 키 반복을 처리합니다. 추가 설정이 필요 없습니다.
ApplePressAndHoldEnabled 설정을 비활성화하면 macOS에서 키를 길게 눌렀을 때 연속 입력이 가능해집니다. 특히 코드 에디터, 터미널, Vim 등 키보드 중심 도구를 사용하는 개발자에게 생산성 향상에 큰 도움이 됩니다.
핵심 권장사항:
Context API와 React Query의 장점을 결합한 최적화된 상태 관리 솔루션