@@ -445,7 +445,11 @@ export class Terminal extends CoreTerminal implements ITerminal {
445445 this . textarea = document . createElement ( 'textarea' ) ;
446446 this . textarea . classList . add ( 'xterm-helper-textarea' ) ;
447447 this . textarea . setAttribute ( 'aria-label' , Strings . promptLabel ) ;
448- this . textarea . setAttribute ( 'aria-multiline' , 'false' ) ;
448+ if ( ! Browser . isChromeOS ) {
449+ // ChromeVox on ChromeOS does not like this. See
450+ // https://issuetracker.google.com/issues/260170397
451+ this . textarea . setAttribute ( 'aria-multiline' , 'false' ) ;
452+ }
449453 this . textarea . setAttribute ( 'autocorrect' , 'off' ) ;
450454 this . textarea . setAttribute ( 'autocapitalize' , 'off' ) ;
451455 this . textarea . setAttribute ( 'spellcheck' , 'false' ) ;
@@ -1057,10 +1061,10 @@ export class Terminal extends CoreTerminal implements ITerminal {
10571061 this . coreService . triggerDataEvent ( result . key , true ) ;
10581062
10591063 // Cancel events when not in screen reader mode so events don't get bubbled up and handled by
1060- // other listeners. When screen reader mode is enabled, this could cause issues if the event
1061- // is handled at a higher level, this is a compromise in order to echo keys to the screen
1062- // reader.
1063- if ( ! this . optionsService . rawOptions . screenReaderMode ) {
1064+ // other listeners. When screen reader mode is enabled, we don't cancel them (unless ctrl or alt
1065+ // is also depressed) so that the cursor textarea can be updated, which triggers the screen
1066+ // reader to read it .
1067+ if ( ! this . optionsService . rawOptions . screenReaderMode || event . altKey || event . ctrlKey ) {
10641068 return this . cancel ( event , true ) ;
10651069 }
10661070
0 commit comments