@@ -445,7 +445,11 @@ export class Terminal extends CoreTerminal implements ITerminal {
445
445
this . textarea = document . createElement ( 'textarea' ) ;
446
446
this . textarea . classList . add ( 'xterm-helper-textarea' ) ;
447
447
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
+ }
449
453
this . textarea . setAttribute ( 'autocorrect' , 'off' ) ;
450
454
this . textarea . setAttribute ( 'autocapitalize' , 'off' ) ;
451
455
this . textarea . setAttribute ( 'spellcheck' , 'false' ) ;
@@ -1057,10 +1061,10 @@ export class Terminal extends CoreTerminal implements ITerminal {
1057
1061
this . coreService . triggerDataEvent ( result . key , true ) ;
1058
1062
1059
1063
// 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 ) {
1064
1068
return this . cancel ( event , true ) ;
1065
1069
}
1066
1070
0 commit comments