Appendix G: VS Code Accessibility Reference
Listen to Episode 30: VS Code Accessibility Reference - a conversational audio overview of this chapter. Listen before reading to preview the concepts, or after to reinforce what you learned.
Reference companion to: Chapter 11: VS Code Interface | Also relevant: Chapter 12
Authoritative source: VS Code Docs: Accessibility
Complete Technical Reference for Screen Reader Users
Purpose: This appendix provides comprehensive technical documentation for all VS Code accessibility features, settings, and keyboard shortcuts. The main chapters cover essentials; this appendix is your complete reference manual.
Referenced by: VS Code Setup & Accessibility Basics, GitHub Copilot
Learning Cards: VS Code Accessibility Reference Overview
Screen reader users
- This appendix is your lookup manual -- use
Ctrl+G (Go to Line) or Ctrl+Shift+O (Go to Symbol) to jump directly to a setting name
- Every table is structured with headers; use
T in browse mode to jump between tables, then arrow through rows
- Bookmark this file in VS Code (
Ctrl+K Ctrl+K) so you can return instantly when you need a setting path
Low vision users
- Increase editor font size (
Ctrl+=) before scanning the long settings tables -- column values are easier to compare at larger sizes
- Use the Minimap (if sighted enough) or breadcrumbs bar to orient within this large reference file
- High-contrast themes make the table grid lines and code spans easier to distinguish from body text
Sighted users
- The Table of Contents links jump directly to each section -- click any link to scroll there instantly
- Use
Ctrl+Shift+O to open the outline view and see all 7 sections as a navigable list
- The settings tables use consistent columns (Setting Path, Values, Default, Description) -- scan the Default column to see what changes from your current setup
Table of Contents
- Complete Accessibility Settings Reference
- Audio Cues - All Options
- Accessible Diff Viewer - Complete Guide
- Screen Reader-Specific Configurations
- Complete Keyboard Shortcuts
- Accessibility Signals Types and Customization
- Settings.json Configuration Examples
- VS Code 1.120 Chat, Agents Window, and Markdown Diff Updates
1. Complete Accessibility Settings Reference
All settings can be accessed via Settings UI (Ctrl+,) or by editing settings.json directly (Ctrl+Shift+P → "Open User Settings JSON").
Core Accessibility Settings
| Setting Path |
Values |
Default |
Description |
editor.accessibilitySupport |
auto, on, off |
auto |
Enables screen reader optimizations. auto detects NVDA/JAWS/VoiceOver. Set to on to force. |
editor.accessibilityPageSize |
number (lines) |
10 |
Number of lines to read when using Page Up/Down in screen reader mode |
editor.guides.bracketPairs |
boolean |
false |
Shows bracket pair guides. Disable for screen readers (visual only). |
editor.guides.bracketPairsHorizontal |
boolean |
false |
Shows horizontal bracket guides. Disable for screen readers. |
editor.guides.highlightActiveBracketPair |
boolean |
true |
Highlights matching brackets. Not announced by screen readers. |
editor.guides.highlightActiveIndentation |
boolean |
true |
Highlights active indentation. Visual only. |
editor.guides.indentation |
boolean |
true |
Shows indentation guides. Not useful for screen readers. |
editor.hover.enabled |
boolean |
true |
Enables hover popups. Use Alt+F2 (Accessible View) to read hover content. |
editor.minimap.enabled |
boolean |
true |
Shows visual minimap. Recommended: Set to false for screen readers. |
editor.occurrencesHighlight |
boolean |
true |
Highlights occurrences of selected text. Visual only. |
editor.renderWhitespace |
none, boundary, selection, trailing, all |
selection |
Shows whitespace characters. Recommended: none for screen readers. |
editor.wordWrap |
off, on, wordWrapColumn, bounded |
off |
Wraps long lines. Recommended: on for screen readers. |
workbench.editor.enablePreview |
boolean |
true |
Opens files in preview mode (single tab). Set to false to always open in new tab. |
Diff and Merge Settings
| Setting Path |
Values |
Default |
Description |
diffEditor.codeLens |
boolean |
false |
Shows CodeLens in diff view. Visual only. |
diffEditor.diffAlgorithm |
legacy, advanced |
advanced |
Diff calculation method. advanced produces better hunks for screen readers. |
diffEditor.ignoreTrimWhitespace |
boolean |
true |
Ignores whitespace changes in diffs. Recommended: true to reduce noise. |
diffEditor.renderSideBySide |
boolean |
true |
Shows diffs side-by-side. Set to false for inline view (easier for screen readers). |
diffEditor.wordWrap |
off, on, inherit |
inherit |
Word wrap in diff view. on recommended for long lines. |
merge-conflict.decorators.enabled |
boolean |
true |
Shows merge conflict decorators. Use Accessible Diff instead (F7). |
Terminal Settings
| Setting Path |
Values |
Default |
Description |
terminal.integrated.accessibleViewFocusesTerminal |
boolean |
true |
Returns focus to terminal after closing Accessible View. |
terminal.integrated.accessibleViewPreserveCursorPosition |
boolean |
false |
Preserves cursor position when opening Accessible View. |
terminal.integrated.enableBell |
boolean |
false |
Enables terminal bell sound. Recommended: true for audio feedback. |
terminal.integrated.screenReaderMode |
auto, on, off |
auto |
Optimizes terminal for screen readers. |
Notification Settings
| Setting Path |
Values |
Default |
Description |
accessibility.verbosity.comments |
boolean |
true |
Announces comment threads in code. |
accessibility.verbosity.diff-editor |
boolean |
true |
Announces diff editor context. |
accessibility.verbosity.editor |
boolean |
true |
Announces editor operations. |
accessibility.verbosity.hover |
boolean |
true |
Announces hover content. Use Alt+F2 for full reading. |
accessibility.verbosity.inline-chat |
boolean |
true |
Announces inline chat responses. |
accessibility.verbosity.inline-completions |
boolean |
true |
Announces Copilot suggestions. |
accessibility.verbosity.keybindings-editor |
boolean |
true |
Announces keybindings editor context. |
accessibility.verbosity.notebook |
boolean |
true |
Announces notebook cell operations. |
accessibility.verbosity.panel-chat |
boolean |
true |
Announces Copilot Chat panel responses. |
accessibility.verbosity.settings-editor |
boolean |
true |
Announces settings editor context. |
accessibility.verbosity.terminal |
boolean |
true |
Announces terminal operations. |
2. Audio Cues - All Options
Audio cues provide non-verbal feedback through sound. Each cue can be configured independently.
Accessing Audio Cue Settings
Settings UI: Ctrl+, → search "audio cue"
Settings.json: Edit directly (see Section 7)
Audio Cue Values
| Value |
Behavior |
auto |
Play sound in screen reader mode only |
on |
Always play sound |
off |
Never play sound |
Complete Accessibility Signals List
| Setting |
When It Plays |
Recommended |
accessibility.signals.clear |
When clearing the terminal or output |
on |
accessibility.signals.chatRequestSent |
When sending a Copilot Chat prompt |
on |
accessibility.signals.chatResponsePending |
While Copilot is generating a response |
auto |
accessibility.signals.chatResponseReceived |
When Copilot finishes responding |
on |
accessibility.signals.debugBreakpoint |
When hitting a breakpoint in debugger |
on |
accessibility.signals.diffLineDeleted |
When navigating over a deleted line in diff |
on |
accessibility.signals.diffLineInserted |
When navigating over an added line in diff |
on |
accessibility.signals.diffLineModified |
When navigating over a modified line in diff |
on |
accessibility.signals.format |
When auto-formatting completes |
auto |
accessibility.signals.lineHasBreakpoint |
When cursor is on a line with a breakpoint |
auto |
accessibility.signals.lineHasError |
When cursor is on a line with an error |
on |
accessibility.signals.lineHasFoldedArea |
When cursor is on a line with collapsed code |
auto |
accessibility.signals.lineHasInlineSuggestion |
When an inline suggestion appears |
on |
accessibility.signals.lineHasWarning |
When cursor is on a line with a warning |
auto |
accessibility.signals.noInlayHints |
When inlay hints are not available |
off |
accessibility.signals.notebookCellCompleted |
When a notebook cell finishes executing |
on |
accessibility.signals.notebookCellFailed |
When a notebook cell fails |
on |
accessibility.signals.onDebugBreak |
When debugger pauses execution |
on |
accessibility.signals.save |
When saving a file |
auto |
accessibility.signals.taskCompleted |
When a terminal task completes successfully |
on |
accessibility.signals.taskFailed |
When a terminal task fails |
on |
accessibility.signals.terminalBell |
When terminal bell rings |
on |
accessibility.signals.terminalCommandFailed |
When a terminal command exits with error |
on |
accessibility.signals.terminalQuickFix |
When a terminal quick fix is available |
auto |
accessibility.signals.voiceRecordingStarted |
When voice input begins |
on |
accessibility.signals.voiceRecordingStopped |
When voice input ends |
on |
accessibility.signals.volume |
Volume level (0-100) |
70 |
Customizing Signal Sounds
Advanced feature: You can replace default sounds with custom audio files.
Ctrl+Shift+P → "Preferences: Open User Settings (JSON)"
- Add custom sound paths:
{
"accessibility.signals.lineHasError.sound": "file:///C:/Users/YourName/sounds/error.wav",
"accessibility.signals.taskCompleted.sound": "file:///C:/Users/YourName/sounds/success.wav",
"accessibility.signals.diffLineInserted.sound": "file:///C:/Users/YourName/sounds/added.wav"
}
Sound file requirements
- Format: WAV, MP3, or OGG
- Duration: Keep under 2 seconds
- Volume: Normalize to avoid clipping
3. Accessible Diff Viewer - Complete Guide
The Accessible Diff Viewer presents file diffs as a structured, line-by-line list instead of a visual side-by-side view.
When to Use Accessible Diff Viewer
- Reviewing pull request changes
- Resolving merge conflicts
- Comparing file versions (Timeline view)
- Reviewing Copilot-generated edits
- Any time you need to understand what changed in a file
Opening Accessible Diff Viewer
| Method |
Steps |
| Keyboard (in diff editor) |
Press F7 to jump to first hunk, Alt+F2 to open Accessible View |
| Command Palette |
Ctrl+Shift+P → "Open Accessible Diff Viewer" |
| Automatic |
Some contexts open it automatically in screen reader mode |
Diff Viewer Structure
Top-level structure
Description
The Accessible Diff Viewer starts with a header showing the file path and change summary. It then shows each hunk (changed section) in order. Each hunk contains: the hunk location (line range), unchanged context lines, the modified, added, or removed lines with their prefix, and more context lines. After all hunks, a footer shows the totals for additions and deletions.
Line prefixes
| Prefix |
Meaning |
Screen Reader Announcement |
| (no prefix) |
Unchanged line (context) |
"Unchanged: [line content]" |
+ |
Added line |
"Added: [line content]" or "Line added: [content]" |
- |
Removed line |
"Removed: [line content]" or "Line removed: [content]" |
|~ |
Modified line (original) |
"Modified from: [old content]" |
|+ |
Modified line (new version) |
"Modified to: [new content]" |
Navigating Hunks
| Action |
Keyboard |
| Jump to next hunk |
F7 |
| Jump to previous hunk |
Shift+F7 |
| Jump to next change |
F8 (in some contexts) |
| Jump to previous change |
Shift+F8 |
Screen Reader-Specific Navigation
NVDA/JAWS
- Open diff:
Enter on file in Source Control, or F7 in an open diff
Alt+F2 to open Accessible Diff Viewer
- Navigate with
Up/Down Arrow (line by line)
- Use
H key to jump between hunks (each hunk has a heading)
Escape to close and return to editor
VoiceOver
VO+Arrow to navigate to diff file → VO+Space to open
Option+F2 for Accessible Diff Viewer
VO+Arrow keys to navigate lines
VO+Command+H to jump between hunk headings
Escape to close
Understanding Context Lines
The diff shows 3 unchanged lines before and after each change for context. These are announced as "Unchanged: [content]".
Example
Hunk 1 of 3 - lines 42-48
Unchanged: ## Screen Reader Setup
Unchanged:
- Removed: This guide covers NVDA only.
+ Added: This guide covers NVDA, JAWS, and VoiceOver.
Unchanged:
Unchanged: ### Installing NVDA
The unchanged lines help you understand where in the file the change occurred.
Inline Diff View vs Side-by-Side
Inline view (recommended for screen readers)
- All changes in a single editor
- Removed lines followed by added lines
- Easier to navigate with screen reader reading commands
Side-by-side view (default, visual)
- Left panel: original file
- Right panel: modified file
- Requires navigating between panels
To switch to inline view
- Open Settings:
Ctrl+,
- Search: "diffEditor.renderSideBySide"
- Uncheck the box (or set to
false in settings.json)
Learning Cards: Accessible Diff Viewer
Screen reader users
- Press
F7 in any diff editor to jump to the first changed hunk -- then F7 / Shift+F7 to move between hunks
- Use
Alt+F2 (Accessible View) to read the full diff in a structured, non-streaming pane with proper line prefixes
- Switch to inline diff view (
diffEditor.renderSideBySide: false) so all changes appear in one editor instead of two panels
Low vision users
- Inline diff view places removed and added lines back-to-back with color-coded backgrounds -- increase font size for easier scanning
- Enable
accessibility.signals.diffLineInserted and diffLineDeleted for audio feedback as you arrow through changed lines
- Zoom the diff editor independently with
Ctrl+= if the surrounding UI is already at a comfortable size
Sighted users
- Green-highlighted lines are additions; red-highlighted lines are deletions -- look for the
+ and - gutters on the left
- Use the minimap sidebar to spot clusters of changes in a long diff without scrolling
- Click the hunk arrows in the gutter to jump directly to the next block of changes
4. Screen Reader-Specific Configurations
NVDA Configuration for VS Code
Recommended NVDA settings
Browse Mode settings:
- NVDA Menu → Preferences → Settings → Browse Mode
- "Maximum length of text on a single line":
10000
- "Automatic focus mode for focus changes": Checked
- "Automatic focus mode for caret movement": Unchecked
Object Presentation:
- "Report tooltips": Unchecked (reduces interruptions; use
Alt+F2 instead)
- "Report notifications": Checked
- "Report object descriptions": Checked
Speech settings:
- "Punctuation/symbol level": Some or Most (for code reading)
- "Automatic language switching": Checked (useful for multilingual docs)
Input Composition:
- "Announce candidates during IME text composition": Checked
NVDA add-ons for VS Code
- Focus Highlight - shows focus location visually (helpful for sighted trainers)
- IndentNav - navigate by indentation level (useful for Python, YAML)
VS Code-specific NVDA commands
| Action |
NVDA Command |
| Read from cursor |
Insert+Down Arrow |
| Read all |
Insert+Down Arrow (twice) |
| Stop speech |
Control |
| Say all in focus mode |
NVDA+Shift+Down Arrow |
| Move to containing browse mode document |
NVDA+Control+Space |
JAWS Configuration for VS Code
Recommended JAWS settings
Settings Center → HTML/PDF/Accessibility:
- "Auto Forms Mode": Checked
- "ARIA Live Region Verbosity": Polite or Assertive (depending on preference)
- "Report tooltip text": Unchecked (use
Alt+F2 instead)
Settings Center → Reading:
- "Punctuation Level": Most (for code)
- "Speak Long Lines Continuously": Yes
Settings Center → Text Processing:
- "Blank Line Announcement": Tone (less verbose than speech)
JAWS scripts for VS Code
Custom JAWS scripts exist for VS Code. Check: jaws-vscode-scripts (GitHub) for community-maintained scripts.
VS Code-specific JAWS commands
| Action |
JAWS Command |
| Say current line |
Insert+Up Arrow |
| Read from cursor |
Insert+Page Down |
| Read to end |
Insert+Page Down (twice) |
| Toggle virtual cursor |
Insert+Z |
| List links |
Insert+F7 |
| List headings |
Insert+F6 |
VoiceOver Configuration for VS Code (macOS)
Recommended VoiceOver Utility settings
Verbosity → Text:
- "Punctuation": All (for code and Markdown)
- "Capitalization": Speak cap (useful for acronyms and code)
- "Reading Units": Set to sentenceboundary for prose, word for code
Verbosity → Announcements:
- "Content Changes": On (for live regions like Copilot Chat)
- "Status Messages": On
Navigation:
- "Quick Nav": OFF when inside editor (use
Left+Right Arrow to toggle)
- "Auto-interact with elements": Off (manual control preferred)
Sound:
- "Enable positional audio": On (helps orient focus location)
- "Mute sound effects": Off (audio cues are helpful)
VS Code-specific VoiceOver commands
| Action |
VoiceOver Command |
| Read from cursor |
VO+A |
| Read all |
VO+Shift+Down Arrow (in text area) |
| Stop reading |
Control |
| Interact with element |
VO+Shift+Down Arrow |
| Stop interacting |
VO+Shift+Up Arrow |
| Jump to heading |
VO+Command+H |
| Open rotor |
VO+U |
| Navigate rotor |
Left/Right Arrow, then Up/Down Arrow |
Quick Nav navigation (when enabled)
| Command |
Action |
H |
Next heading |
Shift+H |
Previous heading |
L |
Next link |
T |
Next table |
B |
Next button |
F |
Next form control |
Note: Quick Nav should be OFF when editing text (conflicts with text navigation).
5. Complete Keyboard Shortcuts
For screen reader navigation shortcuts when using GitHub in a browser (NVDA, JAWS, VoiceOver), see Appendix B - Screen Reader Cheat Sheet.
Global Navigation
| Action |
Windows/Linux |
macOS |
| Command Palette |
Ctrl+Shift+P |
Cmd+Shift+P |
| Quick Open (Go to File) |
Ctrl+P |
Cmd+P |
| Settings |
Ctrl+, |
Cmd+, |
| Keyboard Shortcuts |
Ctrl+K Ctrl+S |
Cmd+K Cmd+S |
| Toggle Sidebar |
Ctrl+B |
Cmd+B |
| Toggle Panel (terminal/output) |
Ctrl+J |
Cmd+J |
| Toggle Full Screen |
F11 |
Ctrl+Cmd+F |
| Zen Mode |
Ctrl+K Z |
Cmd+K Z |
| Close Window |
Ctrl+W |
Cmd+W |
| New Window |
Ctrl+Shift+N |
Cmd+Shift+N |
| Action |
Windows/Linux |
macOS |
| Explorer |
Ctrl+Shift+E |
Cmd+Shift+E |
| Search |
Ctrl+Shift+F |
Cmd+Shift+F |
| Source Control |
Ctrl+Shift+G |
Cmd+Shift+G |
| Run and Debug |
Ctrl+Shift+D |
Cmd+Shift+D |
| Extensions |
Ctrl+Shift+X |
Cmd+Shift+X |
Editor - File Operations
| Action |
Windows/Linux |
macOS |
| New File |
Ctrl+N |
Cmd+N |
| Open File |
Ctrl+O |
Cmd+O |
| Save |
Ctrl+S |
Cmd+S |
| Save As |
Ctrl+Shift+S |
Cmd+Shift+S |
| Save All |
Ctrl+K S |
Cmd+Option+S |
| Close Editor |
Ctrl+W |
Cmd+W |
| Close All Editors |
Ctrl+K W |
Cmd+K W |
| Reopen Closed Editor |
Ctrl+Shift+T |
Cmd+Shift+T |
| Switch Between Editors |
Ctrl+Tab |
Ctrl+Tab |
| Focus First Editor |
Ctrl+1 |
Cmd+1 |
| Focus Second Editor |
Ctrl+2 |
Cmd+2 |
| Split Editor |
Ctrl+\ |
Cmd+\ |
Editor - Navigation
| Action |
Windows/Linux |
macOS |
| Go to Line |
Ctrl+G |
Ctrl+G |
| Go to Symbol |
Ctrl+Shift+O |
Cmd+Shift+O |
| Go to Definition |
F12 |
F12 |
| Peek Definition |
Alt+F12 |
Option+F12 |
| Go to References |
Shift+F12 |
Shift+F12 |
| Go Back (navigate history) |
Alt+Left |
Ctrl+- |
| Go Forward |
Alt+Right |
Ctrl+Shift+- |
| Scroll Up |
Ctrl+Up |
Cmd+Up |
| Scroll Down |
Ctrl+Down |
Cmd+Down |
| Move to Top of File |
Ctrl+Home |
Cmd+Home or Cmd+Up |
| Move to Bottom of File |
Ctrl+End |
Cmd+End or Cmd+Down |
| Move to Beginning of Line |
Home |
Cmd+Left |
| Move to End of Line |
End |
Cmd+Right |
| Expand Selection |
Shift+Alt+Right |
Shift+Option+Right |
| Shrink Selection |
Shift+Alt+Left |
Shift+Option+Left |
Editor - Editing
| Action |
Windows/Linux |
macOS |
| Cut Line |
Ctrl+X |
Cmd+X |
| Copy Line |
Ctrl+C |
Cmd+C |
| Paste |
Ctrl+V |
Cmd+V |
| Undo |
Ctrl+Z |
Cmd+Z |
| Redo |
Ctrl+Shift+Z or Ctrl+Y |
Cmd+Shift+Z |
| Delete Line |
Ctrl+Shift+K |
Cmd+Shift+K |
| Insert Line Below |
Ctrl+Enter |
Cmd+Enter |
| Insert Line Above |
Ctrl+Shift+Enter |
Cmd+Shift+Enter |
| Move Line Up |
Alt+Up |
Option+Up |
| Move Line Down |
Alt+Down |
Option+Down |
| Copy Line Up |
Shift+Alt+Up |
Shift+Option+Up |
| Copy Line Down |
Shift+Alt+Down |
Shift+Option+Down |
| Join Lines |
Ctrl+J |
Cmd+J |
| Toggle Line Comment |
Ctrl+/ |
Cmd+/ |
| Toggle Block Comment |
Shift+Alt+A |
Shift+Option+A |
| Format Document |
Shift+Alt+F |
Shift+Option+F |
| Format Selection |
Ctrl+K Ctrl+F |
Cmd+K Cmd+F |
Editor - Find and Replace
| Action |
Windows/Linux |
macOS |
| Find |
Ctrl+F |
Cmd+F |
| Replace |
Ctrl+H |
Cmd+H |
| Find Next |
F3 or Enter |
Cmd+G or Enter |
| Find Previous |
Shift+F3 |
Cmd+Shift+G |
| Select All Occurrences |
Ctrl+Shift+L |
Cmd+Shift+L |
| Add Selection to Next Find Match |
Ctrl+D |
Cmd+D |
| Toggle Match Case |
Alt+C |
Option+C |
| Toggle Whole Word |
Alt+W |
Option+W |
| Toggle Regex |
Alt+R |
Option+R |
Editor - Multi-Cursor
| Action |
Windows/Linux |
macOS |
| Add Cursor Above |
Ctrl+Alt+Up |
Cmd+Option+Up |
| Add Cursor Below |
Ctrl+Alt+Down |
Cmd+Option+Down |
| Add Cursor to Line Ends |
Shift+Alt+I |
Shift+Option+I |
| Undo Last Cursor Operation |
Ctrl+U |
Cmd+U |
Terminal
| Action |
Windows/Linux |
macOS |
| Toggle Terminal |
Ctrl+Backtick |
Ctrl+Backtick |
| Create New Terminal |
Ctrl+Shift+Backtick |
Ctrl+Shift+Backtick |
| Focus Terminal |
Ctrl+Backtick |
Ctrl+Backtick |
| Kill Terminal |
Ctrl+Shift+K (in terminal) |
Cmd+Shift+K |
| Scroll Up in Terminal |
Ctrl+Shift+Up |
Cmd+Shift+Up |
| Scroll Down in Terminal |
Ctrl+Shift+Down |
Cmd+Shift+Down |
Source Control (Git)
| Action |
Windows/Linux |
macOS |
| Open Source Control |
Ctrl+Shift+G |
Cmd+Shift+G |
| Commit (in message field) |
Ctrl+Enter |
Cmd+Enter |
| Stage File |
Ctrl+Enter (on file) |
Cmd+Enter |
| Refresh Source Control |
Ctrl+R (in SC panel) |
Cmd+R |
Diff Viewer
| Action |
Windows/Linux |
macOS |
| Next Diff Hunk |
F7 |
F7 |
| Previous Diff Hunk |
Shift+F7 |
Shift+F7 |
| Open Accessible Diff Viewer |
Alt+F2 |
Option+F2 |
Copilot
| Action |
Windows/Linux |
macOS |
| Accept Suggestion |
Tab |
Tab |
| Reject Suggestion |
Escape |
Escape |
| Accept Word |
Ctrl+Right |
Cmd+Right |
| Next Suggestion |
Alt+] |
Option+] |
| Previous Suggestion |
Alt+[ |
Option+[ |
| Open Suggestions List |
Ctrl+Enter |
Cmd+Enter |
| Open Suggestion in Accessible View |
Alt+F2 |
Option+F2 |
| Insert Suggestion from Accessible View |
Ctrl+/ |
Cmd+/ |
| Open Copilot Chat |
Ctrl+Alt+I or Chat: Open Chat |
Use Chat: Open Chat from the Command Palette if your keymap differs |
| Inline Chat |
Ctrl+I |
Cmd+I |
| Quick Chat |
Ctrl+Shift+Alt+I |
Cmd+Shift+Ctrl+I |
Accessibility Features
| Action |
Windows/Linux |
macOS |
| Toggle Screen Reader Mode |
Shift+Alt+F1 |
Shift+Option+F1 |
| Accessible Help |
Alt+H |
Option+H |
| Accessible View |
Alt+F2 |
Option+F2 |
| Announce Cursor Position |
Ctrl+Alt+Shift+G |
Cmd+Option+Shift+G |
| Open Accessibility Help |
Ctrl+Shift+P → "Help: Accessibility Help" |
Same |
Problems Panel
| Action |
Windows/Linux |
macOS |
| Show Problems |
Ctrl+Shift+M |
Cmd+Shift+M |
| Go to Next Error/Warning |
F8 |
F8 |
| Go to Previous Error/Warning |
Shift+F8 |
Shift+F8 |
Markdown Preview
| Action |
Windows/Linux |
macOS |
| Toggle Preview |
Ctrl+Shift+V |
Cmd+Shift+V |
| Open Preview to Side |
Ctrl+K V |
Cmd+K V |
6. Accessibility Signals Types and Customization
Accessibility signals are events that trigger announcements or audio cues. Beyond audio cues, VS Code has verbal announcements for various events.
Announcement Verbosity Settings
Control how much information VS Code announces:
| Setting |
Values |
Default |
Controls |
accessibility.verbosity.chatQuestionCarousel |
true, false |
true |
ARIA hint in the Agent mode question carousel telling you about Alt+T (Focus Terminal) |
accessibility.verbosity.diffEditor |
verbose, minimal, off |
verbose |
Diff viewer context announcements |
accessibility.verbosity.editor |
verbose, minimal, off |
verbose |
General editor announcements |
accessibility.verbosity.hover |
verbose, minimal, off |
verbose |
Hover popup announcements |
accessibility.verbosity.inlineCompletions |
verbose, minimal, off |
verbose |
Copilot suggestion announcements |
accessibility.verbosity.keyboardShortcuts |
true, false |
true |
Screen reader navigation hint in the Keyboard Shortcuts search results |
accessibility.verbosity.terminal |
verbose, minimal, off |
verbose |
Terminal operation announcements |
verbose: Announces full context and details
minimal: Announces only essential information
off: No automatic announcements (use Accessible View manually)
Custom Announcement Timing
Control when and how often announcements occur:
| Setting |
Values |
Default |
Description |
accessibility.signals.debouncePositionChanges |
number (ms) |
500 |
Delay before announcing position changes (prevents spam during rapid navigation) |
accessibility.signals.onDidChangeFocus |
boolean |
true |
Announce focus changes |
accessibility.signals.onDidChangeModelContent |
boolean |
false |
Announce content changes (very verbose) |
Signal Priorities
When multiple signals occur simultaneously, VS Code prioritizes them:
- Errors (highest priority) - always announced
- Warnings - announced after errors
- Completions - announced if no errors/warnings
- Focus changes - announced last
This prevents overlapping announcements.
Learning Cards: Accessibility Signals
Screen reader users
- Start with
auto for most signals -- they play only when screen reader mode is active, keeping things quiet otherwise
- The
lineHasError and taskFailed signals are the highest-value audio cues; enable these first
- Use
accessibility.signals.volume (0-100) to balance signal volume against your screen reader speech
Low vision users
- Audio cues supplement visual indicators you might miss -- enable
lineHasWarning and lineHasError for sounds on the current line
- The
save and format signals confirm file operations completed without needing to check the status bar visually
- Pair audio cues with high-contrast gutter icons for a dual-channel (sight + sound) feedback loop
Sighted users
- Audio cues can speed up your workflow even with full vision -- the
taskCompleted chime saves you from watching terminal output
- Search "accessibility.signals" in Settings UI to see all toggles in one filtered view with checkboxes
- Custom sound files (WAV/MP3, under 2 seconds) can replace defaults if you want distinctive tones per event
7. Settings.json Configuration Examples
The configuration examples below are JSON blocks you paste into your settings.json file. To apply a complete set at once, consider using VS Code Profiles -- named configuration bundles that let you switch your entire setup instantly. See Chapter 11, Section 9: Profiles for how to create, switch, export, and share profiles.
Minimal Screen Reader Profile
For users who prefer minimal announcements and use Accessible View manually
{
"editor.accessibilitySupport": "on",
"editor.minimap.enabled": false,
"editor.renderWhitespace": "none",
"editor.wordWrap": "on",
"diffEditor.renderSideBySide": false,
"accessibility.verbosity.diffEditor": "minimal",
"accessibility.verbosity.editor": "minimal",
"accessibility.verbosity.hover": "minimal",
"accessibility.verbosity.inlineCompletions": "minimal",
"accessibility.signals.lineHasError": "on",
"accessibility.signals.taskCompleted": "on",
"accessibility.signals.taskFailed": "on"
}
Maximum Feedback Profile
For users who want all audio and verbal announcements
{
"editor.accessibilitySupport": "on",
"editor.minimap.enabled": false,
"editor.renderWhitespace": "none",
"editor.wordWrap": "on",
"diffEditor.renderSideBySide": false,
"accessibility.verbosity.diffEditor": "verbose",
"accessibility.verbosity.editor": "verbose",
"accessibility.verbosity.hover": "verbose",
"accessibility.verbosity.inlineCompletions": "verbose",
"accessibility.verbosity.terminal": "verbose",
"accessibility.signals.lineHasError": "on",
"accessibility.signals.lineHasWarning": "on",
"accessibility.signals.taskCompleted": "on",
"accessibility.signals.taskFailed": "on",
"accessibility.signals.diffLineInserted": "on",
"accessibility.signals.diffLineDeleted": "on",
"accessibility.signals.chatResponseReceived": "on",
"accessibility.signals.chatResponsePending": "on",
"accessibility.signals.save": "on",
"accessibility.signals.clear": "on",
"accessibility.signals.format": "on",
"accessibility.signals.terminalBell": "on",
"accessibility.signals.terminalCommandFailed": "on",
"terminal.integrated.enableBell": true
}
Copilot-Optimized Profile
For users working heavily with GitHub Copilot
{
"editor.accessibilitySupport": "on",
"editor.minimap.enabled": false,
"editor.wordWrap": "on",
"accessibility.verbosity.inlineCompletions": "minimal",
"accessibility.verbosity.panelChat": "minimal",
"accessibility.signals.lineHasInlineSuggestion": "on",
"accessibility.signals.chatResponsePending": "on",
"accessibility.signals.chatResponseReceived": "on",
"accessibility.signals.chatRequestSent": "on",
"github.copilot.enable": {
"*": true,
"yaml": true,
"plaintext": false,
"markdown": true
}
}
Note: The github.copilot.enable object controls which file types get Copilot suggestions.
Git/Diff-Optimized Profile
For users doing heavy PR review and diff work
{
"editor.accessibilitySupport": "on",
"diffEditor.renderSideBySide": false,
"diffEditor.ignoreTrimWhitespace": true,
"diffEditor.wordWrap": "on",
"diffEditor.diffAlgorithm": "advanced",
"accessibility.verbosity.diffEditor": "verbose",
"accessibility.signals.diffLineInserted": "on",
"accessibility.signals.diffLineDeleted": "on",
"accessibility.signals.diffLineModified": "on",
"scm.diffDecorations": "gutter",
"scm.diffDecorationsGutterWidth": 2
}
For users on slower machines or with large repositories
{
"editor.accessibilitySupport": "on",
"editor.minimap.enabled": false,
"editor.renderWhitespace": "none",
"editor.guides.indentation": false,
"editor.guides.bracketPairs": false,
"editor.occurrencesHighlight": false,
"editor.selectionHighlight": false,
"editor.hover.enabled": true,
"editor.hover.delay": 1000,
"files.exclude": {
"**/.git": true,
"**/.svn": true,
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true,
"**/node_modules": true,
"**/.vscode": false
},
"search.exclude": {
"**/node_modules": true,
"**/bower_components": true,
"**/*.code-search": true
}
}
Quick Copy: Complete Recommended Settings
Paste this into your settings.json for a balanced screen reader profile
{
"editor.accessibilitySupport": "on",
"editor.minimap.enabled": false,
"editor.renderWhitespace": "none",
"editor.wordWrap": "on",
"diffEditor.renderSideBySide": false,
"diffEditor.ignoreTrimWhitespace": true,
"diffEditor.wordWrap": "on",
"accessibility.verbosity.diffEditor": "verbose",
"accessibility.verbosity.editor": "verbose",
"accessibility.verbosity.hover": "verbose",
"accessibility.verbosity.inlineCompletions": "minimal",
"accessibility.verbosity.panelChat": "minimal",
"accessibility.signals.lineHasError": "on",
"accessibility.signals.lineHasWarning": "auto",
"accessibility.signals.taskCompleted": "on",
"accessibility.signals.taskFailed": "on",
"accessibility.signals.diffLineInserted": "on",
"accessibility.signals.diffLineDeleted": "on",
"accessibility.signals.chatResponseReceived": "on",
"terminal.integrated.enableBell": true,
"workbench.editor.enablePreview": false
}
8. VS Code 1.120 Chat, Agents Window, and Markdown Diff Updates
VS Code 1.120 adds several accessibility-relevant changes for learners who use Copilot, review documentation diffs, or manage agent sessions. For the full Copilot and Agents window workflow, see Appendix K: VS Code 1.120 Agents Window and Impactful Updates.
What Changed
The following table summarizes the 1.120 changes that affect accessible VS Code workflows.
| Feature |
Accessibility Impact |
Suggested Use |
| Agents window, Preview |
Gives agent sessions their own window with sessions, chat, customizations, files, and changes |
Use Command Palette access, worktree isolation, and Changes panel review |
| Terminal command risk assessment, Experimental |
Adds a risk badge and command explanation to some terminal confirmations |
Treat as extra context, not permission to skip reading the command |
| Terminal output compression, Preview |
Reduces long terminal output sent to chat, which can reduce context noise |
Use for large diffs or install logs; ask for raw output when exact text matters |
| Markdown preview for diffs, Preview |
Lets documentation diffs render as Markdown instead of only source text |
Useful for sighted and low-vision review of headings, lists, links, and tables |
| Plan mode inline control |
Lets supported agents show and edit plans inline before implementation |
Useful when reviewing an agent plan before file changes start |
| Model picker grouped by provider |
Makes model lists easier to scan when many models are available |
Keep beginners on Auto; use provider grouping for advanced model selection |
| BYOK token usage and thinking effort |
Gives advanced users more visibility and control for bring-your-own-key models |
Not needed for beginners; useful for cost and context management |
Markdown HTML id completion and validation |
Improves completion and validation for internal links to HTML IDs in Markdown |
Helpful when maintaining long workshop docs with many anchors |
| Smart select for Markdown tables |
Expands selection from cell to row to whole table |
Helpful for keyboard users editing large reference tables |
Screen Reader Workflow
- Open the Agents window with Chat: Open Agents Window from the Command Palette.
- Use
Alt+F1 in the focused area to find context-specific accessibility help.
- Use
F6 and Shift+F6 to move among major workbench parts.
- Use
Alt+F2 for Accessible View when chat responses, terminal output, hovers, or diffs are easier to read in a stable buffer.
- Use
F7 and Shift+F7 for diff navigation before accepting agent changes.
- When terminal risk assessment is enabled, listen to the risk label and explanation, then still read the exact command before approving it.
Low Vision Workflow
- Set zoom and theme before starting a dense Agents window session.
- Use modal diff view when side-by-side changes are too compressed.
- Try Markdown preview diffs for documentation changes where rendered headings, lists, and tables are easier to inspect.
- Widen the Sessions list, Chat area, and Changes panel as needed before reviewing work.
- Consider separate Agents window settings if your editor and agent review layouts need different zoom or density.
Sighted Workflow
- Use changed-file counts and session status badges as quick scope checks.
- Open each changed file from the Changes panel before accepting a session result.
- Use rendered Markdown diffs for documentation PRs and source diffs for syntax-sensitive edits.
- Use the integrated browser or terminal in the Agents window to validate generated work before committing or merging.
Settings Reference
The following settings are useful to know when teaching VS Code 1.120 workflows.
| Setting |
What It Controls |
chat.tools.riskAssessment.enabled |
Shows risk assessment for terminal command confirmations |
chat.tools.compressOutput.enabled |
Compresses large terminal output before it is sent to the model |
chat.planWidget.inlineEditor.enabled |
Enables inline plan editing for supported agent flows |
workbench.diffEditorAssociations |
Can set rendered Markdown preview as the default diff editor for Markdown |
extensions.supportAgentsWindow |
Lets you opt specific installed extensions into the Agents window |
chat.notifyWindowOnResponseReceived |
Controls OS notifications when chat responses arrive |
chat.notifyWindowOnConfirmation |
Controls OS notifications when an agent needs confirmation |
Example setting for rendered Markdown diffs:
{
"workbench.diffEditorAssociations": {
"*.md": "vscode.markdown.preview.editor"
}
}
Next: Appendix H: GitHub Desktop
Back: Appendix F: Git Security
Teaching chapter: Chapter 11: VS Code Interface
Authoritative Sources
Use these official references when you need the current source of truth for facts in this chapter.
Section-Level Source Map
Use this map to verify facts for each major section in this file.
- Complete Technical Reference for Screen Reader Users: GitHub Docs, home, GitHub Changelog, VS Code Copilot chat overview, VS Code agent overview, VS Code custom instructions
- 1. Complete Accessibility Settings Reference: GitHub Docs, home, GitHub Changelog, VS Code Copilot chat overview, VS Code agent overview, VS Code custom instructions
- 2. Audio Cues - All Options: GitHub Docs, home, GitHub Changelog, VS Code Copilot chat overview, VS Code agent overview, VS Code custom instructions
- 3. Accessible Diff Viewer - Complete Guide: GitHub Docs, home, GitHub Changelog, VS Code Copilot chat overview, VS Code agent overview, VS Code custom instructions
- 4. Screen Reader-Specific Configurations: GitHub Docs, home, GitHub Changelog, VS Code Copilot chat overview, VS Code agent overview, VS Code custom instructions
- 5. Complete Keyboard Shortcuts: GitHub Docs, home, GitHub Changelog, VS Code Copilot chat overview, VS Code agent overview, VS Code custom instructions
- 6. Accessibility Signals Types and Customization: GitHub Docs, home, GitHub Changelog, VS Code Copilot chat overview, VS Code agent overview, VS Code custom instructions
- 7. Settings.json Configuration Examples: GitHub Docs, home, GitHub Changelog, VS Code Copilot chat overview, VS Code agent overview, VS Code custom instructions
- Quick Copy: Complete Recommended Settings: GitHub Docs, home, GitHub Changelog, VS Code Copilot chat overview, VS Code agent overview, VS Code custom instructions
- 8. VS Code 1.120 Chat, Agents Window, and Markdown Diff Updates: GitHub Docs, home, GitHub Changelog, VS Code Copilot chat overview, VS Code agent overview, VS Code custom instructions