@@ -178,32 +178,34 @@ class ConsoleAddon extends TerminalAddon<IConsoleMixin> {
178178 buffer . y = y ;
179179 } ) . bind ( inputHandler ) ;
180180
181+ let hasModifiers = ( ev :KeyboardEvent ) => ev . shiftKey || ev . altKey || ev . metaKey || ev . ctrlKey ;
182+
181183 this . _disposables = [
182184 terminal . parser . registerCsiHandler ( { prefix : '<' , final : 'H' } , cursorHome ) ,
183- this . $node . customKeyEventHandlers . register ( ev => ev . key == 'Home' , ( ) => terminal . write ( '\x1b[<H' ) ) ,
185+ this . $node . customKeyEventHandlers . register ( ev => ev . key == 'Home' && ! hasModifiers ( ev ) , ( ) => terminal . write ( '\x1b[<H' ) ) ,
184186
185187 terminal . parser . registerCsiHandler ( { prefix : '<' , final : 'E' } , cursorEnd ) ,
186- this . $node . customKeyEventHandlers . register ( ev => ev . key == 'End' , ( ) => terminal . write ( '\x1b[<E' ) ) ,
188+ this . $node . customKeyEventHandlers . register ( ev => ev . key == 'End' && ! hasModifiers ( ev ) , ( ) => terminal . write ( '\x1b[<E' ) ) ,
187189
188190 terminal . parser . registerCsiHandler ( { prefix : '<' , final : 'L' } , cursorBackwardWrapped ) ,
189- this . $node . customKeyEventHandlers . register ( ev => ev . key == 'ArrowLeft' , ( ) => terminal . write ( '\x1b[<L' ) ) ,
191+ this . $node . customKeyEventHandlers . register ( ev => ev . key == 'ArrowLeft' && ! hasModifiers ( ev ) , ( ) => terminal . write ( '\x1b[<L' ) ) ,
190192
191193 terminal . parser . registerCsiHandler ( { prefix : '<' , final : 'R' } , cursorForwardWrapped ) ,
192- this . $node . customKeyEventHandlers . register ( ev => ev . key == 'ArrowRight' , ( ) => terminal . write ( '\x1b[<R' ) ) ,
194+ this . $node . customKeyEventHandlers . register ( ev => ev . key == 'ArrowRight' && ! hasModifiers ( ev ) , ( ) => terminal . write ( '\x1b[<R' ) ) ,
193195
194196 terminal . parser . registerCsiHandler ( { prefix : '<' , final : 'B' } , backspace ) ,
195- this . $node . customKeyEventHandlers . register ( ev => ev . key == 'Backspace' , ( ) => terminal . write ( '\x1b[<B' ) ) ,
197+ this . $node . customKeyEventHandlers . register ( ev => ev . key == 'Backspace' && ! hasModifiers ( ev ) , ( ) => terminal . write ( '\x1b[<B' ) ) ,
196198
197199 terminal . parser . registerCsiHandler ( { prefix : '<' , final : 'D' } , deleteChar ) ,
198- this . $node . customKeyEventHandlers . register ( ev => ev . key == 'Delete' , ( ) => terminal . write ( '\x1b[<D' ) ) ,
200+ this . $node . customKeyEventHandlers . register ( ev => ev . key == 'Delete' && ! hasModifiers ( ev ) , ( ) => terminal . write ( '\x1b[<D' ) ) ,
199201
200202 terminal . parser . registerCsiHandler ( { prefix : '<' , final : 'K' } , eraseInLine ) ,
201203
202- this . $node . customKeyEventHandlers . register ( ev => ev . key == 'Insert' , ev => {
204+ this . $node . customKeyEventHandlers . register ( ev => ev . key == 'Insert' && ! hasModifiers ( ev ) , ev => {
203205 this . $ . insertMode = ! this . $ . insertMode ;
204206 } ) ,
205207
206- this . $node . customKeyEventHandlers . register ( ev => ev . key == 'Enter' , ( ) => {
208+ this . $node . customKeyEventHandlers . register ( ev => ev . key == 'Enter' && ! hasModifiers ( ev ) , ( ) => {
207209 terminal . write ( '\x1b[<N\n' ) ;
208210 } ) ,
209211
0 commit comments