Skip to content

Commit 86dee3a

Browse files
javier-godoypaodb
authored andcommitted
fix: ignore events with modifier keys in console-mixin
1 parent 7bb3c41 commit 86dee3a

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/main/resources/META-INF/frontend/fc-xterm/xterm-console-mixin.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)