@@ -474,56 +474,42 @@ const useReloading = (isDisconnected: boolean) => {
474
474
return ;
475
475
}
476
476
477
- // Keep track of modifier keys since we want to avoid reconnecting while
478
- // modifiers are held. This covers cases where the terminal unexpectedly
479
- // tries to reconnect like when pressing ctrl+w, ctrl+r, and so on. This
480
- // will not work if you pressed a modifier before the disconnect and are
481
- // still holding it; if we need to account for that we will need to listen
482
- // for modifier keys while connected as well.
483
- const modifierKeyState : Record < string , boolean > = {
484
- Alt : false ,
485
- AltGraph : false ,
486
- CapsLock : false ,
487
- Control : false ,
488
- Fn : false ,
489
- FnLock : false ,
490
- Meta : false ,
491
- NumLock : false ,
492
- ScrollLock : false ,
493
- Shift : false ,
494
- Symbol : false ,
495
- SymbolLock : false ,
496
- } ;
497
-
498
- const isModifier = ( event : KeyboardEvent ) : boolean => {
499
- return event . key in modifierKeyState ;
500
- } ;
501
-
502
- const isModified = ( ) : boolean => {
503
- return Object . values ( modifierKeyState ) . includes ( true ) ;
504
- } ;
477
+ // Modifier keys should not trigger a reload.
478
+ const ignoredKeys = [
479
+ "Alt" ,
480
+ "AltGraph" ,
481
+ "CapsLock" ,
482
+ "Control" ,
483
+ "Fn" ,
484
+ "FnLock" ,
485
+ "Meta" ,
486
+ "NumLock" ,
487
+ "ScrollLock" ,
488
+ "Shift" ,
489
+ "Symbol" ,
490
+ "SymbolLock" ,
491
+ ] ;
505
492
506
493
const keyDownHandler = ( event : KeyboardEvent ) => {
507
- if ( isModifier ( event ) ) {
508
- modifierKeyState [ event . key ] = true ;
509
- } else if ( ! isModified ( ) ) {
494
+ // In addition to ignored keys, avoid reloading while modifiers are held
495
+ // to cover cases where the terminal unexpectedly tries to reconnect like
496
+ // when pressing ctrl+w, ctrl+r, and so on.
497
+ if (
498
+ ! ignoredKeys . includes ( event . key ) &&
499
+ ! event . altKey &&
500
+ ! event . ctrlKey &&
501
+ ! event . metaKey &&
502
+ ! event . shiftKey
503
+ ) {
510
504
setStatus ( "reloading" ) ;
511
505
window . location . reload ( ) ;
512
506
}
513
507
} ;
514
508
515
- const keyUpHandler = ( event : KeyboardEvent ) => {
516
- if ( isModifier ( event ) ) {
517
- modifierKeyState [ event . key ] = false ;
518
- }
519
- } ;
520
-
521
509
document . addEventListener ( "keydown" , keyDownHandler , true ) ;
522
- document . addEventListener ( "keyup" , keyUpHandler , true ) ;
523
510
524
511
return ( ) => {
525
512
document . removeEventListener ( "keydown" , keyDownHandler , true ) ;
526
- document . removeEventListener ( "keyup" , keyUpHandler , true ) ;
527
513
} ;
528
514
} , [ status , isDisconnected ] ) ;
529
515
0 commit comments