VS Code Accessibility Reference
Complete accessibility settings, audio signals, diff viewer, and screen reader configs.
Listen
Transcript
Alex: Welcome back. This episode is a companion reference for VS Code accessibility. The main chapters help you get comfortable; this one is the place you come back to when you need the exact setting, shortcut, or screen reader behavior.
Jamie: So the goal is not to memorize every setting path. It is to know where to look when VS Code starts feeling noisy, quiet, confusing, or hard to navigate.
Alex: Exactly. The appendix supports the VS Code interface and accessibility chapters, and it points back to the official VS Code accessibility documentation as the source of truth. VS Code changes over time, so if a setting name shifts, the current docs and the Settings UI are the final check.
Jamie: And because this is a long reference, there are some practical ways to use it. Go to Line with Ctrl+G, Go to Symbol with Ctrl+Shift+O, jump between tables with T in browse mode, and use larger zoom or a high contrast theme before scanning dense tables. If your setup has the bookmark command on Ctrl+K Ctrl+K, bookmark the file so you can return quickly.
Alex: Most accessibility settings are available in two places: the Settings UI with Ctrl+comma, or settings.json through the Command Palette with Ctrl+Shift+P, then Open User Settings JSON. The Settings UI is safer for browsing. settings.json is faster when you already know the exact setting path.
Jamie: The one I hear about most is `editor.accessibilitySupport`. What does it actually control?
Alex: That setting tells VS Code whether to use screen reader optimizations. `auto` tries to detect NVDA, JAWS, or VoiceOver. `on` forces those optimizations, and `off` disables them. When it is active, VS Code may show a Screen Reader Optimized indicator in the status area and adjust how editor content is exposed to assistive technology.
Jamie: What changes when screen reader mode is active? Is it only an announcement label?
Alex: It is more than a label. VS Code changes how it presents editor text, paging, hover content, suggestions, and some complex views. `editor.accessibilityPageSize` controls how many lines Page Up and Page Down read in screen reader mode. Hover content is still available, but the reliable way to read it is Accessible View with Alt+F2.
Jamie: That helps. And there are settings that are mostly visual, right?
Alex: Yes. Bracket guides, indentation guides, occurrence highlights, and the minimap can be useful visually, but they are not usually helpful through speech. Many screen reader users turn `editor.minimap.enabled` off, set `editor.renderWhitespace` to `none`, and set `editor.wordWrap` to `on`. Some people also set `workbench.editor.enablePreview` to `false` so each file opens in a real tab instead of replacing the preview tab.
Jamie: What about diffs, terminals, and notifications? Those are the places where I lose track fastest.
Alex: For diffs, `diffEditor.diffAlgorithm` set to `advanced` usually creates cleaner change groups, `diffEditor.ignoreTrimWhitespace` set to `true` cuts down noise, and `diffEditor.renderSideBySide` set to `false` gives an inline diff that is easier to read with speech. For the terminal, `terminal.integrated.screenReaderMode` can be `auto` or `on`, `terminal.integrated.enableBell` can add useful sound feedback, and Accessible View can read terminal output. For announcements, the `accessibility.verbosity` settings control how much VS Code says about comments, the diff editor, the editor, hovers, inline chat, inline completions, notebooks, panel chat, settings, keybindings, and the terminal.
Jamie: Audio cues are one of those features people either love immediately or turn off after five minutes. What is the balanced way to approach them?
Alex: Start by opening Settings with Ctrl+comma and searching for audio cue, or edit the same values in settings.json. Most cue settings accept `auto`, `on`, or `off`. `auto` means play the sound only when screen reader mode is active, `on` means always play it, and `off` means never play it.
Jamie: And each sound has a meaning, not just a decorative beep.
Alex: Right. There are signals for clearing the terminal or output, sending a Copilot Chat request, waiting for a chat response, and receiving that response. There are debugger signals for breakpoints, diff signals for deleted, inserted, and modified lines, and editor signals for formatting, errors, warnings, folded code, inline suggestions, and lines that have breakpoints. A low-value signal such as no inlay hints is often left off.
Jamie: Where do text announcements fit in? Are those separate from sound?
Alex: They are related but not identical. Audio cues are non-verbal sounds, while accessibility announcements are text-based status updates that your screen reader can speak. Verbosity settings decide which parts of VS Code talk more, and signal priority helps you keep urgent items like errors more noticeable than routine items. If a message arrives at the wrong time or repeats too much, adjust the related verbosity before you redesign the whole setup.
Jamie: Can people customize the actual sounds?
Alex: Where your VS Code version supports custom signal sounds, use short, clear files in a common audio format and keep them in a stable folder. Avoid long music clips, quiet files, and sounds that are hard to tell apart. The test is simple: when you hear it during real work, you should know immediately whether it means error, warning, diff change, chat response, or terminal event.
Jamie: Diffs are where accessibility settings become very real. Reviewing a pull request is hard if you cannot tell what changed.
Alex: The Accessible Diff Viewer is for exactly that moment. Use it when a visual side-by-side diff is too much, when a pull request has many changes, when whitespace is getting in the way, or when you need a keyboard-friendly way to review code changes.
Jamie: I always hear the word hunk in diff tools. What is a hunk?
Alex: A hunk is a block of related changes. In an accessible diff, you usually get the file, then each hunk, then the lines inside that hunk. Lines are marked by prefix: a plus sign for an inserted line, a minus sign for a deleted line, and an unchanged context line so you know where the change lives.
Jamie: How do you open it without hunting around visually?
Alex: Start from a changed file in Source Control or an open diff. Use the Command Palette to search for accessible diff, and in diff workflows use F7 and Shift+F7 to move between differences when those keybindings are available. If a merge conflict is involved, the accessible diff path is usually clearer than relying on visual conflict decorations alone.
Jamie: The appendix recommends inline view for screen readers. Why is side-by-side harder?
Alex: Side-by-side diff is designed for visual comparison: old file on one side, new file on the other. Speech has to jump between panes, and it is easy to forget which side you are on. Inline view keeps the old and new lines in one flow, so `diffEditor.renderSideBySide` set to `false` is often the better default.
Jamie: Does navigation change by screen reader?
Alex: A little. NVDA and JAWS users often move between focus mode and browse-style reading depending on where focus lands. VoiceOver users may need to interact with groups before moving inside the diff content. In all three cases, listen for hunk boundaries, line prefixes, and context lines; those are the clues that make the change understandable.
Jamie: Let us talk about screen reader-specific setup. People often ask, should I configure VS Code, or should I configure my screen reader?
Alex: Usually both, but lightly. For NVDA, keep it current, make sure focus mode is working well in edit fields, and choose punctuation and indentation feedback that helps you read code. There is no magic add-on required for everyone, but if your organization recommends a current VS Code-related NVDA add-on, install it from a trusted source and test it with your normal files.
Jamie: And the commands to lean on are mostly VS Code commands, not secret screen reader commands.
Alex: Yes. Use Ctrl+Shift+O for symbols, Ctrl+G for a line number, Alt+F2 for Accessible View, Ctrl+Shift+M for Problems, and the Command Palette when you forget a shortcut. NVDA commands still matter for switching interaction modes and reviewing speech, but the most portable workflow comes from VS Code itself.
Jamie: How does JAWS fit into that?
Alex: With JAWS, keep the version current, check that application or forms interaction behaves correctly in the editor, and tune typing echo and verbosity so code is readable but not overwhelming. Some workplaces use JAWS scripts for VS Code; if you do, confirm that the scripts match your VS Code version. JAWS commands can help with virtual cursor behavior, but again, VS Code commands like Go to Symbol, Problems, Source Control, and Accessible View are the core path.
Jamie: And VoiceOver on macOS has its own rhythm.
Alex: It does. In VoiceOver Utility, set keyboard and verbosity options so code editing is responsive, then practice interacting with VS Code groups using Control+Option+Shift+Down Arrow and backing out with Control+Option+Shift+Up Arrow. The rotor can help you inspect structure, and Quick Nav can be useful for reading, but you may need to turn Quick Nav off when VS Code needs arrow-key chords or editor navigation.
Jamie: I want the keyboard map. Not every shortcut in the universe, but the ones that keep work moving.
Alex: Start with global navigation. Ctrl+Shift+P opens the Command Palette, Ctrl+P opens a file by name, Ctrl+Tab moves through open editors, Ctrl+comma opens Settings, and Ctrl+K Ctrl+S opens Keyboard Shortcuts. The main areas are Ctrl+Shift+E for Explorer, Ctrl+Shift+F for Search, Ctrl+Shift+G for Source Control, Ctrl+Shift+D for Run and Debug, Ctrl+Shift+X for Extensions, and Ctrl+backtick for the terminal.
Jamie: What about inside the editor?
Alex: Use Ctrl+N, Ctrl+O, Ctrl+S, and Ctrl+W for new, open, save, and close. Ctrl+G goes to a line, Ctrl+Shift+O goes to a symbol, F12 goes to definition, and Alt+Left or Alt+Right moves through navigation history. Ctrl+F and Ctrl+H handle find and replace, Ctrl+slash toggles a comment, Alt+Up or Alt+Down moves a line, Shift+Alt+Down copies a line, Ctrl+Space opens suggestions, and Ctrl+period opens quick fixes.
Jamie: Multi-cursor editing scares people because it can change several places at once.
Alex: That is fair. Treat it as optional until you are comfortable. Ctrl+D selects the next match, Ctrl+U backs out of the last cursor action, and Escape cancels the multi-cursor state. Some systems use Ctrl+Alt+Up or Down to add cursors above or below, but that can conflict with operating system or screen reader shortcuts, so check Keyboard Shortcuts before relying on it.
Jamie: And the Git, terminal, Copilot, Problems, diff, and Markdown pieces?
Alex: For terminal work, Ctrl+backtick toggles the terminal and Ctrl+Shift+backtick creates a new one. In Source Control, Ctrl+Shift+G takes you to changes, Enter opens a selected file diff, and Ctrl+Enter from the commit message can commit when your setup allows it. Problems is Ctrl+Shift+M, F8 moves to the next problem, Shift+F8 moves to the previous one, Markdown preview is Ctrl+Shift+V or Ctrl+K V to open beside, and Copilot shortcuts such as inline chat and chat view should be verified in Keyboard Shortcuts because extensions and versions can change them. For accessibility features, remember Alt+F2 for Accessible View and F7 or Shift+F7 for diff movement when those bindings are active.
Jamie: Low vision settings deserve their own attention too. Sometimes the issue is not speech; it is size, contrast, and visual clutter.
Alex: Absolutely. Use Ctrl+K Ctrl+T to choose a theme, including high contrast themes, and use Ctrl+equals to zoom in, Ctrl+minus to zoom out, and Ctrl+0 to reset zoom. You can also set editor font size, terminal font size, and window zoom level directly in Settings.
Jamie: Are there tradeoffs when you zoom or change contrast?
Alex: Yes. Larger zoom can make long lines wrap differently, which is why word wrap should be tested in normal files, diffs, and the terminal. The minimap can help some low vision users orient visually, while others turn it off to reduce clutter. Breadcrumbs and the outline can also help you understand where you are in a large file.
Jamie: The appendix includes settings.json profiles. I like that because people have different tolerance levels for feedback.
Alex: A minimal screen reader profile might force `editor.accessibilitySupport` on, enable word wrap, disable the minimap, hide rendered whitespace, use inline diffs, and keep announcements limited. That works well for people who prefer to call Accessible View manually. A maximum feedback profile turns on more signals, leaves verbosity high, enables the terminal bell, and makes screen reader support explicit in the terminal.
Jamie: Then there are profiles for specific kinds of work.
Alex: For Copilot-heavy work, prioritize chat announcements, inline completion announcements, and sounds for chat request sent, response pending, response received, and inline suggestions. For Git and pull request review, prioritize inserted, deleted, and modified diff line signals, the advanced diff algorithm, inline diff view, and whitespace filtering. For slower machines or large repositories, reduce visual extras, keep the minimap off, limit lower-value signals, and avoid settings that create constant background work.
Jamie: And there is a balanced quick-copy setup for people who just want a reasonable starting point.
Alex: Yes. Use that as a starting profile, not a permanent identity. Paste it into settings.json only after you understand what it changes, then adjust one or two settings at a time so you can tell what improved or got worse.
Jamie: VS Code 1.120 also added or refined some chat, agents window, and Markdown diff behavior. What should listeners take from that?
Alex: The important part is that chat and agent workflows are becoming more keyboard and screen reader aware, but they still need settings support. Keep verbosity on for inline chat, panel chat, and inline completions if you use Copilot. For Markdown diffs, use the same accessible diff habits: inline view, clear line prefixes, and Accessible View when the rendered experience is not enough.
Jamie: Troubleshooting is where this reference probably gets used most. Let us start with the scary one: VS Code is not acting like it knows a screen reader is running.
Alex: Set `editor.accessibilitySupport` to `on` and `terminal.integrated.screenReaderMode` to `on`, then restart VS Code if needed. Also make sure your screen reader is running before VS Code starts. If the status indicator still does not appear, check the official VS Code accessibility docs for the current detection behavior.
Jamie: What if the opposite happens and VS Code will not stop talking?
Alex: Reduce the `accessibility.verbosity` settings for the areas causing noise, such as chat, hover, terminal, or inline completions. Set lower-priority signals to `auto` or `off`, especially repeated pending sounds. If you need a quiet baseline, start from the minimal profile and add feedback back slowly.
Jamie: And if there is not enough feedback?
Alex: Turn on signals for errors, warnings, inline suggestions, diff lines, terminal clear events, and chat completion. Use Ctrl+Shift+M to open Problems, then F8 and Shift+F8 to move through issues. If hover text or terminal output is being missed, open Accessible View with Alt+F2.
Jamie: Diffs can still feel confusing even after settings are changed.
Alex: Then switch to inline view, keep whitespace changes filtered unless you are reviewing whitespace on purpose, use the advanced diff algorithm, and open the Accessible Diff Viewer. Listen for the file name, hunk boundary, plus or minus prefix, and context line. If you can describe the changed block in one sentence, you are oriented enough to keep reviewing.
Jamie: Last one: terminal output or shortcuts are not behaving.
Alex: For terminal output, use Accessible View, keep the setting that returns focus to the terminal after closing Accessible View, and enable the terminal bell if sound helps. For shortcut conflicts, open Keyboard Shortcuts with Ctrl+K Ctrl+S, search the command name, and change one binding at a time. Do not reset everything unless you have to.
Jamie: So the appendix is less of a reading assignment and more of a workbench reference.
Alex: Exactly. Keep it nearby, choose the amount of feedback that fits your brain and your tools, and test settings in real tasks: opening files, editing code, reading a diff, using the terminal, and reviewing chat output. A good VS Code setup is the one that lets you return to the work without fighting the interface.
Workshop Content
Companion Podcast and Transcript
Use audio and transcript companions to review concepts in a conversational format.
VS Code Accessibility Reference
Companion audio: this episode reinforces key ideas and may not be a word-for-word reading of this page.
Open audio file (external) Full transcript source (external)
Transcript preview
Alex: Welcome back. This episode is a companion reference for VS Code accessibility. The main chapters help you get comfortable; this one is the place you come back to when you need the exact setting, shortcut, or screen reader behavior.
Jamie: So the goal is not to memorize every setting path. It is to know where to look when VS Code starts feeling noisy, quiet, confusing, or hard to navigate.
Alex: Exactly. The appendix supports the VS Code interface and accessibility chapters, and it points back to the official VS Code accessibility documentation as the source of truth. VS Code changes over time, so if a setting name shifts, the current docs and the Settings UI are the final check.
Jamie: And because this is a long reference, there are some practical ways to use it. Go to Line with Ctrl+G, Go to Symbol with Ctrl+Shift+O, jump between tables with T in browse mode, and use larger zoom or a high contrast theme before scanning dense tables. If your setup has the bookmark command on Ctrl+K Ctrl+K, bookmark the file so you can return quickly.
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) orCtrl+Shift+O(Go to Symbol) to jump directly to a setting name - Every table is structured with headers; use
Tin 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+Oto 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
Hunk = a block of related changes
| 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:
Enteron file in Source Control, orF7in an open diff Alt+F2to open Accessible Diff Viewer- Navigate with
Up/Down Arrow(line by line) - Use
Hkey to jump between hunks (each hunk has a heading) Escapeto close and return to editor
VoiceOver
VO+Arrowto navigate to diff file →VO+Spaceto openOption+F2for Accessible Diff ViewerVO+Arrowkeys to navigate linesVO+Command+Hto jump between hunk headingsEscapeto 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
falsein settings.json)
Learning Cards: Accessible Diff Viewer
Screen reader users
- Press
F7in any diff editor to jump to the first changed hunk -- thenF7/Shift+F7to 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.diffLineInsertedanddiffLineDeletedfor 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+F2instead) - "Report notifications": Checked
- "Report object descriptions": Checked
- "Report tooltips": Unchecked (reduces interruptions; use
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+F2instead)
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 Arrowto toggle) - "Auto-interact with elements": Off (manual control preferred)
- "Quick Nav": OFF when inside editor (use
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 |
Sidebar Panels
| 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 detailsminimal: Announces only essential informationoff: 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
autofor most signals -- they play only when screen reader mode is active, keeping things quiet otherwise - The
lineHasErrorandtaskFailedsignals 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
lineHasWarningandlineHasErrorfor sounds on the current line - The
saveandformatsignals 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
taskCompletedchime 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
}
Performance-Optimized Profile
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+F1in the focused area to find context-specific accessibility help. - Use
F6andShift+F6to move among major workbench parts. - Use
Alt+F2for Accessible View when chat responses, terminal output, hovers, or diffs are easier to read in a stable buffer. - Use
F7andShift+F7for 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.
- GitHub Docs, home
- GitHub Changelog
- VS Code Copilot chat overview
- VS Code agent overview
- VS Code custom instructions
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