macOS에서 러시아어 키보드 레이아웃 시 VS Code 단축키 문제 해결: Cmd+, 등 비영문 키 호환 방법
macOS에서는 거의 모든 네이티브 앱(Safari, Finder, Chrome 등)에서 Cmd+, 단축키가 설정 화면을 열어줍니다. 그러나 VS Code에서는 러시아어 키보드 레이아웃이 활성화된 상태에서 이 단축키가 작동하지 않습니다. 그 이유는? VS Code가 단축키를 문자 기준으로 처리하기 때문입니다—물리적 키 위치가 아닙니다. 러시아어 레이아웃에서는 쉼표(,) 키가 ‘B’ 문자를 출력하므로, VS Code는 실제로 ‘Cmd+B’를 찾아 명령을 실행하려 시도합니다. 당연히 매칭되는 명령은 없습니다.
VS Code를 포함한 Electron 기반 앱들은 단축키를 문자에 바인딩하지만, 네이티브 macOS 앱은 스캔 코드(즉, 물리적 키 위치)에 바인딩합니다.
문제 진단: 가설에서 근본 원인까지
포커스 상태 확인, 다른 단축키 테스트(Cmd+Shift+P은 정상 작동), 시스템 충돌, 확장 프로그램, 백그라운드 프로세스 배제 등 다양한 문제 해결 절차를 거쳤지만 별다른 원인은 발견되지 않았습니다. 핵심 진단 단계는 VS Code의 키보드 단축키 설정에서 제공하는 키 기록 모드입니다. 이 모드에서는 ‘cmd+[Comma]’가 정확히 인식되지만, 아무 명령도 실행되지 않습니다.
영문 키보드 레이아웃으로 전환해 보니 문제가 사라졌습니다. 결론적으로, 이 문제는 영문이 아닌 레이아웃에서 비알파벳 키(특수문자 키)가 어떻게 매핑되는지에 있습니다.
keybindings.json을 통한 해결법
~/Library/Application Support/Code/User/keybindings.json 파일을 생성하거나 편집한 후, 물리적 키 이름을 사용해 다음 바인딩을 추가하세요:
[
{ "key": "cmd+[Comma]", "command": "workbench.action.openSettings" }
]
대괄호 [Comma]는 VS Code에게 문자 출력이 아니라 실제 키 위치에 바인딩하라고 지시합니다. 이 방식은 모든 키보드 레이아웃에서 안정적으로 작동합니다.
비알파벳 단축키 전체 해결 패키지
이 문제는 라틴계가 아닌 키보드 레이아웃에서 모든 Cmd+기호 단축키에 영향을 줍니다. 아래는 권장되는 keybindings.json 전체 구성입니다:
[
{ "key": "cmd+[Comma]", "command": "workbench.action.openSettings" },
{ "key": "cmd+[Period]", "command": "editor.action.quickFix", "when": "editorHasCodeActionsProvider && editorTextFocus" },
{ "key": "cmd+[Slash]", "command": "editor.action.commentLine", "when": "editorTextFocus" },
{ "key": "cmd+[BracketLeft]", "command": "editor.action.outdentLines", "when": "editorTextFocus" },
{ "key": "cmd+[BracketRight]", "command": "editor.action.indentLines", "when": "editorTextFocus" },
{ "key": "cmd+[Backslash]", "command": "workbench.action.splitEditor" }
]
- Cmd+. — 빠른 수정(Quick Fix) 실행
- Cmd+/ — 선택된 줄 주석 토글
- Cmd+] — 선택된 줄 들여쓰기(‘[BracketRight]’ 사용)
- Cmd+\ — 에디터 분할
보너스: 터미널 포트 링크를 기본 브라우저에서 열기
로컬 개발 서버 등 포워딩된 포트를 VS Code 내장 간단 브라우저가 아니라 사용자의 기본 외부 브라우저에서 열도록 강제하려면, remote.forwardedPorts.openBrowserKind 설정을 조정하세요.
settings.json에 다음을 추가하세요:
"remote.forwardedPorts.openBrowserKind": "external"
핵심 요약
- VS Code는 단축키를 문자 기준으로 바인딩하고, macOS는 스캔 코드(물리적 키 위치) 기준으로 바인딩합니다.
keybindings.json에서cmd+[Comma]처럼 대괄호로 감싸면 레이아웃 전환 없이도 모든 언어 레이아웃에서 동일하게 작동합니다.- 이 문제는 Electron 기반 앱 전반에 걸쳐 발생하며,
/,.,[,],\,,등 모든 비알파벳 키에 적용됩니다. - 키보드 단축키 설정의 키 기록 모드는 실제 스캔 코드를 표시하므로, 바인딩 검증에 유용합니다.
- 포트 포워딩 관련 설정(
remote.*)은 원격 환경뿐 아니라 로컬 개발 서버에도 그대로 적용됩니다.
— Editorial Team
아직 댓글이 없습니다.