@@ -1162,9 +1162,10 @@ export class CoreBrowserTerminal extends CoreTerminal implements ITerminal {
11621162 this . textarea ! . value = '' ;
11631163 }
11641164
1165+ const wasModifierOnly = this . _keyboardService . useWin32InputMode && wasModifierKeyOnlyEvent ( event ) ;
11651166 this . _onKey . fire ( { key : result . key , domEvent : event } ) ;
11661167 this . _showCursor ( ) ;
1167- this . coreService . triggerDataEvent ( result . key , true ) ;
1168+ this . coreService . triggerDataEvent ( result . key , ! wasModifierOnly ) ;
11681169
11691170 // Cancel events when not in screen reader mode so events don't get bubbled up and handled by
11701171 // other listeners. When screen reader mode is enabled, we don't cancel them (unless ctrl or alt
@@ -1207,7 +1208,8 @@ export class CoreBrowserTerminal extends CoreTerminal implements ITerminal {
12071208 // Handle key release for Kitty keyboard protocol
12081209 const result = this . _keyboardService . evaluateKeyUp ( ev ) ;
12091210 if ( result ?. key ) {
1210- this . coreService . triggerDataEvent ( result . key , true ) ;
1211+ const wasModifierOnly = this . _keyboardService . useWin32InputMode && wasModifierKeyOnlyEvent ( ev ) ;
1212+ this . coreService . triggerDataEvent ( result . key , ! wasModifierOnly ) ;
12111213 }
12121214
12131215 this . updateCursorStyle ( ev ) ;
@@ -1405,5 +1407,10 @@ export class CoreBrowserTerminal extends CoreTerminal implements ITerminal {
14051407function wasModifierKeyOnlyEvent ( ev : KeyboardEvent ) : boolean {
14061408 return ev . keyCode === 16 || // Shift
14071409 ev . keyCode === 17 || // Ctrl
1408- ev . keyCode === 18 ; // Alt
1410+ ev . keyCode === 18 || // Alt
1411+ ev . keyCode === 91 || // Meta (Left)
1412+ ev . keyCode === 92 || // Meta (Right)
1413+ ev . keyCode === 93 || // Meta (Menu)
1414+ ev . keyCode === 224 || // Meta (Firefox)
1415+ ev . key === 'Meta' ;
14091416}
0 commit comments