Skip to content

Commit 8e67c00

Browse files
authored
Merge pull request #5617 from xtermjs/anthonykim1/kittyGraphicsProtocol
Add register apc handler
2 parents 14b6a71 + ee3b362 commit 8e67c00

14 files changed

Lines changed: 913 additions & 34 deletions

src/browser/TestUtils.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,9 @@ export class MockTerminal implements ITerminal {
107107
public registerOscHandler(ident: number, callback: (data: string) => boolean | Promise<boolean>): IDisposable {
108108
throw new Error('Method not implemented.');
109109
}
110+
public registerApcHandler(ident: number, callback: (data: string) => boolean | Promise<boolean>): IDisposable {
111+
throw new Error('Method not implemented.');
112+
}
110113
public registerLinkProvider(linkProvider: ILinkProvider): IDisposable {
111114
throw new Error('Method not implemented.');
112115
}

src/common/CoreTerminal.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,11 @@ export abstract class CoreTerminal extends Disposable implements ICoreTerminal {
242242
return this._inputHandler.registerOscHandler(ident, callback);
243243
}
244244

245+
/** Add handler for APC escape sequence. See xterm.d.ts for details. */
246+
public registerApcHandler(ident: number, callback: (data: string) => boolean | Promise<boolean>): IDisposable {
247+
return this._inputHandler.registerApcHandler(ident, callback);
248+
}
249+
245250
protected _setup(): void {
246251
this._handleWindowsPtyOptionChange();
247252
}

src/common/InputHandler.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { ICoreService, IBufferService, IOptionsService, ILogService, ICoreMouseS
1919
import { UnicodeService } from 'common/services/UnicodeService';
2020
import { OscHandler } from 'common/parser/OscParser';
2121
import { DcsHandler } from 'common/parser/DcsParser';
22+
import { ApcHandler } from 'common/parser/ApcParser';
2223
import { IBuffer } from 'common/buffer/Types';
2324
import { parseColor } from 'common/input/XParseColor';
2425
import { Emitter } from 'vs/base/common/event';
@@ -712,6 +713,13 @@ export class InputHandler extends Disposable implements IInputHandler {
712713
return this._parser.registerOscHandler(ident, new OscHandler(callback));
713714
}
714715

716+
/**
717+
* Forward registerApcHandler from parser.
718+
*/
719+
public registerApcHandler(ident: number, callback: (data: string) => boolean | Promise<boolean>): IDisposable {
720+
return this._parser.registerApcHandler(ident, new ApcHandler(callback));
721+
}
722+
715723
/**
716724
* BEL
717725
* Bell (Ctrl-G).

src/common/Types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export interface ICoreTerminal {
2222
registerDcsHandler(id: IFunctionIdentifier, callback: (data: string, param: IParams) => boolean | Promise<boolean>): IDisposable;
2323
registerEscHandler(id: IFunctionIdentifier, callback: () => boolean | Promise<boolean>): IDisposable;
2424
registerOscHandler(ident: number, callback: (data: string) => boolean | Promise<boolean>): IDisposable;
25+
registerApcHandler(ident: number, callback: (data: string) => boolean | Promise<boolean>): IDisposable;
2526
}
2627

2728
export interface IDisposable {
@@ -475,6 +476,7 @@ export interface IInputHandler {
475476
registerDcsHandler(id: IFunctionIdentifier, callback: (data: string, param: IParams) => boolean | Promise<boolean>): IDisposable;
476477
registerEscHandler(id: IFunctionIdentifier, callback: () => boolean | Promise<boolean>): IDisposable;
477478
registerOscHandler(ident: number, callback: (data: string) => boolean | Promise<boolean>): IDisposable;
479+
registerApcHandler(ident: number, callback: (data: string) => boolean | Promise<boolean>): IDisposable;
478480

479481
/** C0 BEL */ bell(): boolean;
480482
/** C0 LF */ lineFeed(): boolean;

0 commit comments

Comments
 (0)