커맨드 팔레트 50부: 단축키 입력 상자의 표시와 JSON 교차 확인
User keybindings를 저장하지 않고 Define Keybinding 입력 상자의 현재 레이아웃 표시와 직렬화 문자열을 구분합니다.
이번 편의 핵심
입력 상자 `ctrl+alt+t`와 아래 `Ctrl + Alt + T`를 자신의 화면에서 교차 확인합니다.
첫 Escape는 입력을 지우고 두 번째 Escape는 위젯을 닫습니다. Enter와 저장은 누르지 않습니다.
1. 시작하기 전에
예상 시간은 10~15분입니다. Command Palette와 User `keybindings.json`을 여는 방법만 알면 됩니다. 난이도는 초급이며 실제 단축키 등록은 하지 않습니다.
준비할 것
- Windows 11 · VS Code Stable 1.138.0 · Windows PowerShell — Help: About에서 확인
- 저장되지 않은 편집이 없는 User keybindings.json — 탭의 미저장 점이 없는지 확인
- 로컬 메모 — 자신의 UI label과 JSON label만 기록하며 외부 전송하지 않음
적용 환경 2026-09-18 KST · Stable 1.138.0 · commit 7debcd0e2acdea1c52de81bf9ee1620444407dda · 현재 격리 관찰은 00000409/US
2. 알아둘 핵심 개념
FACT — 입력 상자는 저장 문자열과 화면 표시를 함께 보여 줍니다
공식 문서는 입력 상자가 직렬화된 JSON 표현을 보여 주고, 그 아래에는 현재 키보드 레이아웃에서 감지한 키를 표시한다고 설명합니다. 이 Run의 격리 Windows 관찰에서는 같은 입력이 `ctrl+alt+t`와 `Ctrl + Alt + T`로 나타났습니다. 근거 SRC-01 SRC-07
FACT — Escape 한 번과 두 번의 효과가 다릅니다
키를 기록한 뒤 첫 Escape는 기록된 chord와 입력·표시를 지웁니다. 기록값이 없는 상태에서 두 번째 Escape를 누르면 위젯이 닫히고 null이 반환됩니다. 근거 SRC-02 SRC-07
FACT — Enter가 삽입 경계입니다
Enter로 승인한 값이 non-null일 때만 User `keybindings.json` 편집기에 JSON 규칙 snippet을 삽입합니다. 이번 실습은 Enter와 저장을 누르지 않아 편집기와 디스크를 모두 바꾸지 않습니다. 근거 SRC-01 SRC-03
EXAMPLE — Ctrl+Alt+T는 관찰용 예시입니다
이 Run의 Windows 11·Stable 1.138.0·00000409/US 관찰값입니다. 다른 레이아웃, IME, OS 예약키에서는 표시 또는 입력 가능 여부가 달라질 수 있습니다. 근거 SRC-01 SRC-07
RECOMMENDATION — 자신의 화면 값을 기록합니다
예시와 똑같은 문자열을 강요하지 말고, 입력 상자·아래 키캡·창 제목의 미저장 표시를 자신의 환경에서 함께 확인합니다. 근거 SRC-01 SRC-07
UNCONFIRMED — 다른 실제 키보드와 IME
이번 실행은 격리 프로필과 현재 Windows 레이아웃만 검증했습니다. 다른 물리 키보드·IME·레이아웃의 출력은 직접 관찰 전까지 확인되지 않았습니다. 근거 SRC-07
3. 순서대로 진행하기
각 단계의 정상 결과를 확인한 뒤 다음 단계로 이동합니다.
1. Stable과 실습 범위를 확인합니다
목적 변경 가능한 UI 절차의 기준 버전을 고정합니다.
- Help: About에서 Stable 버전을 확인하고, 이번 실습은 User keybindings 파일을 열되 Enter·저장·붙여넣기를 하지 않는다고 메모합니다.
입력 위치 VS Code 메뉴 Help > About · 로컬 메모
기준 환경: Windows 11
VS Code Stable: 1.138.0
Shell: Windows PowerShell
변경 허용: 0회
정상 결과 Stable 1.138.0과 읽기 전용 관찰 범위가 기록됩니다.
확인 버전 문자열과 `변경 허용: 0회`를 다시 읽습니다.
실패 신호 Stable이 아니거나 버전을 확인할 수 없습니다.
복구와 재합류 업데이트를 강행하지 말고 현재 버전을 보존한 채 중단합니다. Stable 1.138.0에서 다시 STEP-01로 합류합니다.
근거 SRC-05 SRC-06
2. 중단 조건과 Human Gate를 고정합니다
목적 Enter가 snippet 삽입 경계임을 행동 전에 확인합니다.
- 다음 세 조건을 체크합니다: Enter를 누르지 않기, Ctrl+S를 누르지 않기, 탭에 미저장 점이 생기면 즉시 중단하기.
입력 위치 로컬 메모
[ ] Enter 금지
[ ] Ctrl+S 금지
[ ] 미저장 점 발생 시 중단
정상 결과 세 Human Gate가 첫 UI 입력 전에 보입니다.
확인 세 체크가 모두 비어 있지 않은지 확인합니다.
실패 신호 한 조건이 빠졌거나 기존 keybindings.json이 이미 미저장 상태입니다.
복구와 재합류 기존 미저장 상태의 원인을 확인할 수 없으면 UNKNOWN으로 기록하고 이 실습을 중단합니다. 깨끗한 상태에서 STEP-02로 돌아옵니다.
근거 SRC-03 SRC-07
3. User Keyboard Shortcuts JSON을 엽니다
목적 Define Keybinding 명령이 활성화되는 정확한 User 파일을 엽니다.
- F1을 누르고 `Preferences: Open Keyboard Shortcuts (JSON)`을 선택합니다. 이름에 `Default`가 붙은 명령은 선택하지 않습니다.
입력 위치 Command Palette
선택: Preferences: Open Keyboard Shortcuts (JSON)
제외: Preferences: Open Default Keyboard Shortcuts (JSON)
정상 결과 User `keybindings.json` 탭이 열립니다.
확인 탭 이름과 Command Palette에서 선택한 전체 명령 이름을 교차 확인합니다.
실패 신호 Default Keyboard Shortcuts가 열리거나 명령이 없습니다.
복구와 재합류 잘못 열린 Default 탭만 닫고 F1에서 정확한 User 명령을 다시 선택해 STEP-03으로 재합류합니다.
근거 SRC-01 SRC-04
4. 변경 전 상태를 기록합니다
목적 취소 후 무변경을 비교할 기준을 만듭니다.
- 첫 줄·마지막 줄을 눈으로 확인하고 탭 제목 오른쪽에 미저장 점이 없는지 기록합니다. 내용을 수정하지 않습니다.
입력 위치 User keybindings.json 편집기 · 탭 제목
BEFORE
탭 미저장 점: 없음
첫/마지막 줄: 확인
내용 편집: 0회
정상 결과 비교 기준이 로컬 메모에 남습니다.
확인 탭 미저장 점이 없고 커서 이동 외 편집이 0회인지 확인합니다.
실패 신호 이미 미저장 점이 있거나 내용이 예상과 다릅니다.
복구와 재합류 원인을 단정하지 말고 기존 상태 Evidence를 보존한 뒤 중단합니다. 깨끗한 User 파일에서 STEP-04로 재합류합니다.
근거 SRC-03 SRC-07
5. Define Keybinding control을 엽니다
목적 현재 User 파일에 연결된 입력 위젯을 엽니다.
- F1을 누르고 `Define Keybinding`을 선택합니다. 대안은 User `keybindings.json` 편집기에 포커스를 둔 뒤 Ctrl+K, Ctrl+K입니다.
입력 위치 Command Palette · User keybindings.json
명령: Define Keybinding
대안: Ctrl+K Ctrl+K
정상 결과 가운데에 `Press desired key combination and then press ENTER.` 입력 창이 열립니다.
확인 입력 창 문구와 빈 입력 상자를 확인합니다.
실패 신호 명령 검색 결과가 없거나 위젯이 열리지 않습니다.
복구와 재합류 활성 탭이 User `keybindings.json`인지 확인하고 STEP-03부터 다시 엽니다. 그래도 없으면 버전·Profile 상태를 보존하고 원인 UNKNOWN으로 중단합니다.
근거 SRC-02 SRC-04
6. 관찰용 단축키를 입력합니다
목적 한 입력에서 직렬화 문자열과 현재 레이아웃 표시를 동시에 만듭니다.
- 예시로 Ctrl+Alt+T를 한 번 누릅니다. OS나 IME가 가로채면 다른 충돌 없는 조합을 사용하고 실제 누른 키를 `<YOUR_TEST_SHORTCUT>`로 기록합니다.
입력 위치 Define Keybinding 입력 상자
EXAMPLE
<YOUR_TEST_SHORTCUT> = Ctrl+Alt+T
치환: 실제로 누른 한 번의 조합
정상 결과 이 Run의 환경에서는 입력 상자에 `ctrl+alt+t`, 아래에 `Ctrl + Alt + T`가 보입니다.
확인 입력 상자 값과 아래 키캡 표시를 각각 읽습니다.
실패 신호 OS 동작이 실행되거나 위젯이 닫히거나 아무 값도 보이지 않습니다.
복구와 재합류 추가 키를 누르지 말고 Escape로 위젯을 닫습니다. 충돌 없는 다른 조합을 정한 뒤 STEP-05에서 다시 엽니다.
근거 SRC-01 SRC-02 SRC-07
7. 두 표현을 분리해 기록합니다
목적 화면용 label과 User settings label을 혼동하지 않습니다.
- 입력 상자의 소문자 문자열과 아래 키캡의 표시를 서로 다른 줄에 적습니다. title/tooltip을 볼 수 있으면 UI·user settings 원문도 보존합니다.
입력 위치 Define Keybinding 위젯 · 로컬 메모
현재 레이아웃 UI: Ctrl + Alt + T
직렬화 JSON 표현: ctrl+alt+t
원문 title: UI: Control+Alt+T / user settings: ctrl+alt+t
정상 결과 같은 키 입력의 두 역할이 분리됩니다.
확인 UI 줄과 JSON 줄이 서로 바뀌지 않았는지 화면과 대조합니다.
실패 신호 예시값을 자신의 화면값으로 착각했거나 한 표현만 기록했습니다.
복구와 재합류 메모의 예시를 지우고 현재 화면에 실제로 보이는 두 값을 다시 기록해 STEP-07로 재합류합니다.
근거 SRC-01 SRC-02 SRC-07
8. 첫 번째 Escape로 입력만 지웁니다
목적 취소 동작의 첫 상태 전이를 확인합니다.
- 키가 기록된 상태에서 Escape를 한 번만 누릅니다.
입력 위치 Define Keybinding 위젯
ESCAPE_COUNT=1
정상 결과 위젯은 열린 채 입력 상자와 아래 키캡 표시가 비워집니다.
확인 위젯 테두리와 안내 문구는 남고 입력값이 빈 문자열인지 확인합니다.
실패 신호 위젯이 닫혔거나 입력값이 남아 있습니다.
복구와 재합류 추가 입력을 멈추고 현재 상태를 캡처합니다. 위젯이 닫혔다면 STEP-05부터 다시 열고 한 번만 눌러 STEP-08로 재합류합니다.
근거 SRC-02 SRC-07
9. 두 번째 Escape로 위젯을 닫습니다
목적 null 취소 경로로 빠져 snippet 삽입을 막습니다.
- 입력이 비어 있는 상태에서 Escape를 한 번 더 누릅니다.
입력 위치 Define Keybinding 위젯
ESCAPE_COUNT=2
ENTER_COUNT=0
정상 결과 위젯이 닫히고 User `keybindings.json` 편집기로 돌아옵니다.
확인 가운데 입력 위젯이 사라지고 편집기 내용이 그대로인지 확인합니다.
실패 신호 JSON 규칙 snippet이 생기거나 위젯이 남아 있습니다.
복구와 재합류 snippet이 생겼다면 저장하지 말고 Undo로 이번 삽입만 되돌린 뒤 변경 경계를 확인합니다. 원인을 모르면 상태를 보존하고 중단합니다. 깨끗한 상태에서 STEP-09로 재합류합니다.
근거 SRC-02 SRC-03 SRC-07
10. 편집기 무변경을 확인합니다
목적 위젯 관찰과 파일 내용 상태를 분리해 검증합니다.
- STEP-04의 첫/마지막 줄과 현재 내용을 비교하고 탭의 미저장 점이 없는지 확인합니다.
입력 위치 User keybindings.json 편집기 · 탭 제목 · 로컬 메모
AFTER
탭 미저장 점: 없음
첫/마지막 줄: BEFORE와 동일
Enter: 0회
Save: 0회
정상 결과 버퍼가 저장본과 같고 이번 실습의 편집 0회가 확인됩니다.
확인 BEFORE/AFTER 메모와 탭 상태를 교차 확인합니다.
실패 신호 미저장 점, 새 JSON 객체, 변경된 줄이 있습니다.
복구와 재합류 저장하지 않습니다. 이번 실습에서 생긴 변경임이 확인되면 Undo하고 다시 비교합니다. 기존 변경과 구분할 수 없으면 UNKNOWN으로 중단합니다.
근거 SRC-03 SRC-07
11. 디스크 재열기로 독립 확인합니다
목적 현재 화면 외의 저장 상태까지 확인합니다.
- 탭에 미저장 점이 없을 때만 User `keybindings.json` 탭을 닫고, F1의 `Preferences: Open Keyboard Shortcuts (JSON)`으로 다시 엽니다.
입력 위치 편집기 탭 · Command Palette
REOPEN
닫기 확인창: 없음
내용: BEFORE와 동일
정상 결과 저장 확인창 없이 닫히고 다시 연 파일 내용이 BEFORE와 같습니다.
확인 재개방한 첫/마지막 줄과 BEFORE 메모를 비교합니다.
실패 신호 저장 확인창이 나타나거나 내용이 달라졌습니다.
복구와 재합류 저장하지 말고 Cancel로 닫기를 취소합니다. 변경 원인을 확인할 수 없으면 UNKNOWN으로 보존하고 중단합니다. 깨끗한 상태에서 STEP-11로 재합류합니다.
근거 SRC-03 SRC-07
12. 완료 조건과 환경 Variant를 정리합니다
목적 관찰 가능한 결과와 미확인 범위를 분리합니다.
- 자신의 UI 표시, 직렬화 문자열, Escape 1회/2회 상태, 무변경 결과를 한 표로 마감하고 다른 레이아웃 값은 UNCONFIRMED로 표시합니다.
입력 위치 로컬 메모
UI label=<OBSERVED_UI>
JSON label=<OBSERVED_JSON>
Esc1=clear
Esc2=close
Editor changed=NO
Disk changed=NO
Other layouts=UNCONFIRMED
정상 결과 하나의 독자 목표와 여섯 완료 항목이 모두 채워집니다.
확인 빈 placeholder가 없고 Editor/Disk changed가 모두 NO인지 확인합니다.
실패 신호 placeholder가 남거나 변경 상태를 확인하지 못했습니다.
복구와 재합류 확인한 값만 채우고 모르는 항목은 UNKNOWN으로 둡니다. 필요한 해당 STEP으로 돌아가 확인 후 STEP-12로 재합류합니다.
근거 SRC-01 SRC-07
4. 완료 확인하기
입력 위젯 관찰과 다시 연 디스크 파일을 교차 확인합니다.
- 현재 레이아웃 UI label을 실제 화면에서 기록했다 — 아래 키캡 표시와 일치
- 직렬화 JSON label을 입력 상자에서 기록했다 — 이 Run 예시는 `ctrl+alt+t`
- 첫 Escape 후 위젯은 열리고 값만 비었다 — PASS
- 두 번째 Escape 후 위젯이 닫혔다 — PASS
- Enter 0회, Save 0회, 편집기 변경 NO — PASS
- 탭을 다시 열어 디스크 내용이 BEFORE와 동일했다 — PASS
완료 기준 자신의 UI/JSON 두 표현과 Escape 두 상태를 설명하고, User keybindings의 버퍼와 디스크 변경이 모두 0임을 관찰했습니다.
5. 문제가 생겼다면
Define Keybinding 명령이 검색되지 않습니다
먼저 확인 활성 탭이 `Preferences: Open Keyboard Shortcuts (JSON)`으로 연 User 파일인지 확인합니다. Default 파일이나 일반 JSON 파일에서는 precondition이 성립하지 않습니다.
복구 잘못 연 탭만 닫고 STEP-03에서 정확한 User 명령을 다시 선택합니다.
재합류 STEP-05
첫 Escape에 위젯이 바로 닫혔습니다
먼저 확인 Escape 전에 실제 키 조합이 기록되어 입력 상자에 값이 있었는지 확인합니다.
복구 STEP-05에서 다시 열고 STEP-06의 키를 한 번 입력한 뒤 첫 Escape를 한 번만 누릅니다.
재합류 STEP-08
JSON snippet이나 미저장 점이 생겼습니다
먼저 확인 Enter를 눌렀는지, 이번 실습 전 기존 변경이 있었는지 확인합니다. 원인을 확인하지 못하면 UNKNOWN으로 둡니다.
복구 저장하지 않습니다. 이번 실습에서 생긴 삽입임이 확실할 때만 Undo합니다. 기존 변경과 구분할 수 없으면 Cancel로 상태를 보존합니다.
재합류 깨끗한 상태를 확인한 뒤 STEP-04
Ctrl+Alt+T가 OS·IME에 가로채졌습니다
먼저 확인 위젯이 열린 채인지와 OS 동작이 있었는지 기록합니다.
복구 Escape로 취소하고, 충돌 없는 다른 조합을 `
재합류 STEP-06
6. 핵심 정리와 공식 자료
- Define Keybinding 입력 상자는 User settings용 문자열과 현재 레이아웃 표시를 함께 보여 줍니다.
- 이 Run의 Ctrl+Alt+T는 `ctrl+alt+t`와 `Ctrl + Alt + T`로 관찰됐습니다.
- 키가 있을 때 첫 Escape는 clear, 빈 상태의 두 번째 Escape는 close입니다.
- Enter와 저장을 누르지 않으면 JSON rule을 확정하지 않고 실습을 끝낼 수 있습니다.
- 다른 실제 키보드·IME·레이아웃 값은 직접 확인 전 UNCONFIRMED입니다.
공식 자료
아래 자료는 2026-09-18 KST에 접근했습니다. Stable 1.138.0·Windows 11 범위이며, 링크는 접근 가능 상태였습니다. 다른 OS·레이아웃은 해당 환경에서 다시 확인해야 합니다.
- Keyboard shortcuts for Visual Studio Code · Microsoft — Define Keybinding control, serialized JSON representation, current-layout detected keys, Enter insertion · ACCESSIBLE
- Keybinding widgets · Stable 1.138.0 · Microsoft vscode — recorded UI/User labels, first Escape clear, second Escape hide, null result · ACCESSIBLE
- Keybindings editor contribution · Stable 1.138.0 · Microsoft vscode — accepted non-null keybinding inserts a JSON rule snippet; null cancel inserts nothing · ACCESSIBLE
- Preferences contribution · Stable 1.138.0 · Microsoft vscode — Define Keybinding command ID, F1 availability, Ctrl+K Ctrl+K, User keybindings resource precondition · ACCESSIBLE
- Visual Studio Code 1.138 · Microsoft — Stable release date and current release context · ACCESSIBLE
- VS Code Stable update metadata · Microsoft — 2026-09-18 Stable 1.138.0, commit 7debcd0e2acdea1c52de81bf9ee1620444407dda · ACCESSIBLE
'개발 > Visual Studio Code' 카테고리의 다른 글
| 커맨드 팔레트 52부: 같은 Chord의 Source와 When 비교하기 (0) | 2026.09.20 |
|---|---|
| 커맨드 팔레트 51부: 두 단계 Chord의 입력 경계와 충돌 수 확인 (0) | 2026.09.20 |
| 커맨드 팔레트 49부: VS Code 키 매핑 표의 WYSIWYG NO 행 읽기 (0) | 2026.09.17 |
| 커맨드 팔레트 48부: VS Code 현재 키보드 레이아웃의 키 매핑 원문 확인하기 (0) | 2026.09.16 |
| 커맨드 팔레트 47부: VS Code Task 단축키를 물리 키 위치로 고정하기 (1) | 2026.09.16 |