@jupyterlab/terminal 4.6.0-alpha.3 → 4.6.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/tokens.d.ts CHANGED
@@ -51,6 +51,10 @@ export declare namespace ITerminal {
51
51
  * changes if the terminal theme is 'inherit'.
52
52
  */
53
53
  themeChanged: ISignal<this, void>;
54
+ /**
55
+ * A signal emitted when users should be reminded how to leave terminal focus.
56
+ */
57
+ escapeHintRequested: ISignal<this, void>;
54
58
  }
55
59
  /**
56
60
  * Options for the terminal widget.
package/lib/tokens.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAI3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAW1C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,KAAK,CACvC,uCAAuC,EACvC;;8BAE4B,CAC7B,CAAC;AAEF;;;GAGG;AACH,MAAM,KAAW,SAAS,CAwJzB;AAxJD,WAAiB,SAAS;IAoHxB;;OAEG;IACU,wBAAc,GAAa;QACtC,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,gDAAgD;QAC5D,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,KAAK;QACtB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,EAAE;QAClB,gBAAgB,EAAE,KAAK,EAAE,kEAAkE;QAC3F,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,KAAK;KACvB,CAAC;AAmBJ,CAAC,EAxJgB,SAAS,KAAT,SAAS,QAwJzB"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAI3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAW1C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,KAAK,CACvC,uCAAuC,EACvC;;8BAE4B,CAC7B,CAAC;AAEF;;;GAGG;AACH,MAAM,KAAW,SAAS,CA6JzB;AA7JD,WAAiB,SAAS;IAyHxB;;OAEG;IACU,wBAAc,GAAa;QACtC,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,gDAAgD;QAC5D,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,KAAK;QACtB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,EAAE;QAClB,gBAAgB,EAAE,KAAK,EAAE,kEAAkE;QAC3F,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,KAAK;KACvB,CAAC;AAmBJ,CAAC,EA7JgB,SAAS,KAAT,SAAS,QA6JzB"}
package/lib/widget.d.ts CHANGED
@@ -82,10 +82,18 @@ export declare class Terminal extends Widget implements ITerminal.ITerminal {
82
82
  * changes if the terminal theme is 'inherit'.
83
83
  */
84
84
  get themeChanged(): ISignal<this, void>;
85
+ /**
86
+ * A signal emitted when users should be reminded how to leave terminal focus.
87
+ */
88
+ get escapeHintRequested(): ISignal<this, void>;
85
89
  /**
86
90
  * Set the size of the terminal when attached if dirty.
87
91
  */
88
92
  protected onAfterAttach(msg: Message): void;
93
+ /**
94
+ * Remove event listeners when the widget is detached.
95
+ */
96
+ protected onBeforeDetach(msg: Message): void;
89
97
  /**
90
98
  * Set the size of the terminal when shown if dirty.
91
99
  */
@@ -124,6 +132,12 @@ export declare class Terminal extends Widget implements ITerminal.ITerminal {
124
132
  */
125
133
  private _setSessionSize;
126
134
  private _setThemeAttribute;
135
+ /**
136
+ * Handle the `keydown` event for the widget.
137
+ */
138
+ private _evtKeyDown;
139
+ private _scheduleEscapeReset;
140
+ private _clearEscapeResetTimer;
127
141
  private _fitAddon;
128
142
  private _searchAddon;
129
143
  private _needsResize;
@@ -136,4 +150,20 @@ export declare class Terminal extends Widget implements ITerminal.ITerminal {
136
150
  private _termOpened;
137
151
  private _trans;
138
152
  private _themeChanged;
153
+ private _escapeHintRequested;
154
+ private _escapePressedOnce;
155
+ private _escapeResetTimer;
156
+ private _terminalId;
157
+ private _escapeInstructionsId;
158
+ /**
159
+ * Handle the DOM events for the widget.
160
+ *
161
+ * @param event -The DOM event sent to the widget.
162
+ *
163
+ * #### Notes
164
+ * This method implements the DOM `EventListener` interface and is
165
+ * called in response to events on the terminal widget's node. It should
166
+ * not be called directly by user code.
167
+ */
168
+ handleEvent(event: Event): void;
139
169
  }
package/lib/widget.js CHANGED
@@ -16,6 +16,14 @@ const TERMINAL_CLASS = 'jp-Terminal';
16
16
  * The class name added to a terminal body.
17
17
  */
18
18
  const TERMINAL_BODY_CLASS = 'jp-Terminal-body';
19
+ /**
20
+ * The class name for screen reader only text.
21
+ */
22
+ const SR_ONLY_CLASS = 'jp-sr-only';
23
+ /**
24
+ * The delay in milliseconds to reset the escape key press.
25
+ */
26
+ const ESCAPE_FOCUS_DELAY_MS = 350;
19
27
  /**
20
28
  * A widget which manages a terminal session.
21
29
  */
@@ -38,6 +46,9 @@ export class Terminal extends Widget {
38
46
  this._ready = new PromiseDelegate();
39
47
  this._termOpened = false;
40
48
  this._themeChanged = new Signal(this);
49
+ this._escapeHintRequested = new Signal(this);
50
+ this._escapePressedOnce = false;
51
+ this._escapeResetTimer = null;
41
52
  translator = translator || nullTranslator;
42
53
  this._trans = translator.load('jupyterlab');
43
54
  this.session = session;
@@ -51,9 +62,18 @@ export class Terminal extends Widget {
51
62
  };
52
63
  this.addClass(TERMINAL_CLASS);
53
64
  this._setThemeAttribute(theme);
65
+ this._terminalId = Private.id++;
66
+ this.id = `jp-Terminal-${this._terminalId}`;
67
+ this._escapeInstructionsId = `jp-Terminal-escape-instructions-${this._terminalId}`;
68
+ const escapeInstructions = document.createElement('p');
69
+ escapeInstructions.id = this._escapeInstructionsId;
70
+ escapeInstructions.className = SR_ONLY_CLASS;
71
+ escapeInstructions.textContent = this._trans.__('Press Escape twice to leave terminal focus. Press Enter to return focus to the terminal input.');
72
+ this.node.appendChild(escapeInstructions);
54
73
  // Buffer session message while waiting for the terminal
55
74
  let buffer = '';
56
75
  const bufferMessage = (sender, msg) => {
76
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
57
77
  switch (msg.type) {
58
78
  case 'stdout':
59
79
  if (msg.content) {
@@ -77,7 +97,6 @@ export class Terminal extends Widget {
77
97
  this._fitAddon = fitAddon;
78
98
  this._searchAddon = searchAddon;
79
99
  this._initializeTerm();
80
- this.id = `jp-Terminal-${Private.id++}`;
81
100
  this.title.label = this._trans.__('Terminal');
82
101
  this._isReady = true;
83
102
  this._ready.resolve();
@@ -120,6 +139,7 @@ export class Terminal extends Widget {
120
139
  return;
121
140
  }
122
141
  this._options[option] = value;
142
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
123
143
  switch (option) {
124
144
  case 'fontFamily':
125
145
  this._term.options.fontFamily = value;
@@ -247,12 +267,27 @@ export class Terminal extends Widget {
247
267
  get themeChanged() {
248
268
  return this._themeChanged;
249
269
  }
270
+ /**
271
+ * A signal emitted when users should be reminded how to leave terminal focus.
272
+ */
273
+ get escapeHintRequested() {
274
+ return this._escapeHintRequested;
275
+ }
250
276
  /**
251
277
  * Set the size of the terminal when attached if dirty.
252
278
  */
253
279
  onAfterAttach(msg) {
280
+ this.node.addEventListener('keydown', this, true);
254
281
  this.update();
255
282
  }
283
+ /**
284
+ * Remove event listeners when the widget is detached.
285
+ */
286
+ onBeforeDetach(msg) {
287
+ this.node.removeEventListener('keydown', this, true);
288
+ this._clearEscapeResetTimer();
289
+ this._escapePressedOnce = false;
290
+ }
256
291
  /**
257
292
  * Set the size of the terminal when shown if dirty.
258
293
  */
@@ -272,7 +307,7 @@ export class Terminal extends Widget {
272
307
  * A message handler invoked on an `'update-request'` message.
273
308
  */
274
309
  onUpdateRequest(msg) {
275
- var _a;
310
+ var _a, _b, _c, _d;
276
311
  if (!this.isVisible || !this.isAttached || !this._isReady) {
277
312
  return;
278
313
  }
@@ -280,6 +315,8 @@ export class Terminal extends Widget {
280
315
  if (!this._termOpened) {
281
316
  this._term.open(this.node);
282
317
  (_a = this._term.element) === null || _a === void 0 ? void 0 : _a.classList.add(TERMINAL_BODY_CLASS);
318
+ (_b = this._term.textarea) === null || _b === void 0 ? void 0 : _b.setAttribute('aria-describedby', this._escapeInstructionsId);
319
+ (_d = (_c = this._term.element) === null || _c === void 0 ? void 0 : _c.querySelector('.xterm-viewport')) === null || _d === void 0 ? void 0 : _d.setAttribute('aria-describedby', this._escapeInstructionsId);
283
320
  this._termOpened = true;
284
321
  }
285
322
  if (this._needsResize) {
@@ -335,12 +372,32 @@ export class Terminal extends Widget {
335
372
  term.onTitleChange((title) => {
336
373
  this.title.label = title;
337
374
  });
338
- // Do not add any Ctrl+C/Ctrl+V handling on macOS,
339
- // where Cmd+C/Cmd+V works as intended.
340
- if (Platform.IS_MAC) {
341
- return;
342
- }
343
375
  term.attachCustomKeyEventHandler(event => {
376
+ // Send Shift+Enter as a line feed (\n) rather than carriage
377
+ // return (\r), so terminal applications can distinguish
378
+ // between Enter (execute) and Shift+Enter (newline). Handle
379
+ // only keydown and call preventDefault() so the browser
380
+ // suppresses the follow-up keypress event that xterm.js would
381
+ // otherwise turn into a \r.
382
+ // Skip during IME composition so composed text isn't split by
383
+ // an injected \n.
384
+ if (event.type === 'keydown' &&
385
+ event.shiftKey &&
386
+ event.key === 'Enter' &&
387
+ !event.isComposing &&
388
+ event.keyCode !== 229) {
389
+ event.preventDefault();
390
+ this.session.send({
391
+ type: 'stdin',
392
+ content: ['\n']
393
+ });
394
+ return false;
395
+ }
396
+ // Do not add any Ctrl+C/Ctrl+V handling on macOS,
397
+ // where Cmd+C/Cmd+V works as intended.
398
+ if (Platform.IS_MAC) {
399
+ return true;
400
+ }
344
401
  if (event.ctrlKey && event.key === 'c' && term.hasSelection()) {
345
402
  // Return so that the usual OS copy happens
346
403
  // instead of interrupt signal.
@@ -357,6 +414,7 @@ export class Terminal extends Widget {
357
414
  * Handle a message from the terminal session.
358
415
  */
359
416
  _onMessage(sender, msg) {
417
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
360
418
  switch (msg.type) {
361
419
  case 'stdout':
362
420
  if (msg.content) {
@@ -406,6 +464,91 @@ export class Terminal extends Widget {
406
464
  }
407
465
  this.node.setAttribute('data-term-theme', theme ? theme.toLowerCase() : 'inherit');
408
466
  }
467
+ /**
468
+ * Handle the `keydown` event for the widget.
469
+ */
470
+ _evtKeyDown(event) {
471
+ var _a;
472
+ const xtermViewport = (_a = this._term.element) === null || _a === void 0 ? void 0 : _a.querySelector('.xterm-viewport');
473
+ const xtermTextarea = this._term.textarea;
474
+ const activeElement = document.activeElement;
475
+ const viewportFocused = !!activeElement &&
476
+ !!xtermViewport &&
477
+ (activeElement === xtermViewport ||
478
+ xtermViewport.contains(activeElement));
479
+ const textareaFocused = !!xtermTextarea && activeElement === xtermTextarea;
480
+ if (event.key === 'Escape') {
481
+ if (!textareaFocused) {
482
+ this._clearEscapeResetTimer();
483
+ this._escapePressedOnce = false;
484
+ return;
485
+ }
486
+ if (!this._escapePressedOnce) {
487
+ this._escapePressedOnce = true;
488
+ this._scheduleEscapeReset();
489
+ return;
490
+ }
491
+ event.preventDefault();
492
+ event.stopPropagation();
493
+ this._clearEscapeResetTimer();
494
+ this._escapePressedOnce = false;
495
+ if (xtermTextarea) {
496
+ // This ensures pressing Tab does not return to the textarea and avoids
497
+ // becoming a tab trap.
498
+ xtermTextarea.tabIndex = -1;
499
+ }
500
+ xtermViewport === null || xtermViewport === void 0 ? void 0 : xtermViewport.setAttribute('tabindex', '0');
501
+ xtermViewport === null || xtermViewport === void 0 ? void 0 : xtermViewport.focus();
502
+ return;
503
+ }
504
+ this._clearEscapeResetTimer();
505
+ this._escapePressedOnce = false;
506
+ if (viewportFocused && event.key === 'Enter') {
507
+ event.preventDefault();
508
+ event.stopPropagation();
509
+ if (xtermTextarea) {
510
+ xtermTextarea.tabIndex = 0;
511
+ xtermTextarea.focus();
512
+ }
513
+ return;
514
+ }
515
+ if (viewportFocused && event.key === 'Tab' && xtermTextarea) {
516
+ xtermTextarea.tabIndex = -1;
517
+ }
518
+ }
519
+ _scheduleEscapeReset() {
520
+ this._clearEscapeResetTimer();
521
+ this._escapeResetTimer = window.setTimeout(() => {
522
+ this._escapePressedOnce = false;
523
+ this._escapeHintRequested.emit();
524
+ this._escapeResetTimer = null;
525
+ }, ESCAPE_FOCUS_DELAY_MS);
526
+ }
527
+ _clearEscapeResetTimer() {
528
+ if (this._escapeResetTimer !== null) {
529
+ window.clearTimeout(this._escapeResetTimer);
530
+ this._escapeResetTimer = null;
531
+ }
532
+ }
533
+ /**
534
+ * Handle the DOM events for the widget.
535
+ *
536
+ * @param event -The DOM event sent to the widget.
537
+ *
538
+ * #### Notes
539
+ * This method implements the DOM `EventListener` interface and is
540
+ * called in response to events on the terminal widget's node. It should
541
+ * not be called directly by user code.
542
+ */
543
+ handleEvent(event) {
544
+ switch (event.type) {
545
+ case 'keydown':
546
+ this._evtKeyDown(event);
547
+ break;
548
+ default:
549
+ break;
550
+ }
551
+ }
409
552
  }
410
553
  /**
411
554
  * A namespace for private data.
package/lib/widget.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"widget.js","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"widget.js","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyterlab/terminal",
3
- "version": "4.6.0-alpha.3",
3
+ "version": "4.6.0-alpha.5",
4
4
  "description": "JupyterLab - Terminal Emulator Widget",
5
5
  "homepage": "https://github.com/jupyterlab/jupyterlab",
6
6
  "bugs": {
@@ -41,9 +41,9 @@
41
41
  "watch": "tsc -b --watch"
42
42
  },
43
43
  "dependencies": {
44
- "@jupyterlab/apputils": "^4.7.0-alpha.3",
45
- "@jupyterlab/services": "^7.6.0-alpha.3",
46
- "@jupyterlab/translation": "^4.6.0-alpha.3",
44
+ "@jupyterlab/apputils": "^4.7.0-alpha.5",
45
+ "@jupyterlab/services": "^7.6.0-alpha.5",
46
+ "@jupyterlab/translation": "^4.6.0-alpha.5",
47
47
  "@lumino/coreutils": "^2.2.2",
48
48
  "@lumino/domutils": "^2.0.4",
49
49
  "@lumino/messaging": "^2.0.4",
@@ -58,7 +58,7 @@
58
58
  "color": "^5.0.0"
59
59
  },
60
60
  "devDependencies": {
61
- "@jupyterlab/testing": "^4.6.0-alpha.3",
61
+ "@jupyterlab/testing": "^4.6.0-alpha.5",
62
62
  "@types/jest": "^29.2.0",
63
63
  "jest": "^29.2.0",
64
64
  "jest-canvas-mock": "^2.5.2",
package/src/tokens.ts CHANGED
@@ -70,6 +70,11 @@ export namespace ITerminal {
70
70
  * changes if the terminal theme is 'inherit'.
71
71
  */
72
72
  themeChanged: ISignal<this, void>;
73
+
74
+ /**
75
+ * A signal emitted when users should be reminded how to leave terminal focus.
76
+ */
77
+ escapeHintRequested: ISignal<this, void>;
73
78
  }
74
79
  /**
75
80
  * Options for the terminal widget.
package/src/widget.ts CHANGED
@@ -34,6 +34,16 @@ const TERMINAL_CLASS = 'jp-Terminal';
34
34
  */
35
35
  const TERMINAL_BODY_CLASS = 'jp-Terminal-body';
36
36
 
37
+ /**
38
+ * The class name for screen reader only text.
39
+ */
40
+ const SR_ONLY_CLASS = 'jp-sr-only';
41
+
42
+ /**
43
+ * The delay in milliseconds to reset the escape key press.
44
+ */
45
+ const ESCAPE_FOCUS_DELAY_MS = 350;
46
+
37
47
  /**
38
48
  * A widget which manages a terminal session.
39
49
  */
@@ -70,6 +80,16 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
70
80
  this.addClass(TERMINAL_CLASS);
71
81
 
72
82
  this._setThemeAttribute(theme);
83
+ this._terminalId = Private.id++;
84
+ this.id = `jp-Terminal-${this._terminalId}`;
85
+ this._escapeInstructionsId = `jp-Terminal-escape-instructions-${this._terminalId}`;
86
+ const escapeInstructions = document.createElement('p');
87
+ escapeInstructions.id = this._escapeInstructionsId;
88
+ escapeInstructions.className = SR_ONLY_CLASS;
89
+ escapeInstructions.textContent = this._trans.__(
90
+ 'Press Escape twice to leave terminal focus. Press Enter to return focus to the terminal input.'
91
+ );
92
+ this.node.appendChild(escapeInstructions);
73
93
 
74
94
  // Buffer session message while waiting for the terminal
75
95
  let buffer = '';
@@ -77,6 +97,7 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
77
97
  sender: TerminalNS.ITerminalConnection,
78
98
  msg: TerminalNS.IMessage
79
99
  ): void => {
100
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
80
101
  switch (msg.type) {
81
102
  case 'stdout':
82
103
  if (msg.content) {
@@ -102,7 +123,6 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
102
123
  this._searchAddon = searchAddon;
103
124
  this._initializeTerm();
104
125
 
105
- this.id = `jp-Terminal-${Private.id++}`;
106
126
  this.title.label = this._trans.__('Terminal');
107
127
  this._isReady = true;
108
128
  this._ready.resolve();
@@ -165,7 +185,7 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
165
185
  }
166
186
 
167
187
  this._options[option] = value;
168
-
188
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
169
189
  switch (option) {
170
190
  case 'fontFamily':
171
191
  this._term.options.fontFamily = value as string | undefined;
@@ -304,13 +324,30 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
304
324
  return this._themeChanged;
305
325
  }
306
326
 
327
+ /**
328
+ * A signal emitted when users should be reminded how to leave terminal focus.
329
+ */
330
+ get escapeHintRequested(): ISignal<this, void> {
331
+ return this._escapeHintRequested;
332
+ }
333
+
307
334
  /**
308
335
  * Set the size of the terminal when attached if dirty.
309
336
  */
310
337
  protected onAfterAttach(msg: Message): void {
338
+ this.node.addEventListener('keydown', this, true);
311
339
  this.update();
312
340
  }
313
341
 
342
+ /**
343
+ * Remove event listeners when the widget is detached.
344
+ */
345
+ protected onBeforeDetach(msg: Message): void {
346
+ this.node.removeEventListener('keydown', this, true);
347
+ this._clearEscapeResetTimer();
348
+ this._escapePressedOnce = false;
349
+ }
350
+
314
351
  /**
315
352
  * Set the size of the terminal when shown if dirty.
316
353
  */
@@ -340,6 +377,13 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
340
377
  if (!this._termOpened) {
341
378
  this._term.open(this.node);
342
379
  this._term.element?.classList.add(TERMINAL_BODY_CLASS);
380
+ this._term.textarea?.setAttribute(
381
+ 'aria-describedby',
382
+ this._escapeInstructionsId
383
+ );
384
+ this._term.element
385
+ ?.querySelector('.xterm-viewport')
386
+ ?.setAttribute('aria-describedby', this._escapeInstructionsId);
343
387
  this._termOpened = true;
344
388
  }
345
389
 
@@ -407,13 +451,36 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
407
451
  this.title.label = title;
408
452
  });
409
453
 
410
- // Do not add any Ctrl+C/Ctrl+V handling on macOS,
411
- // where Cmd+C/Cmd+V works as intended.
412
- if (Platform.IS_MAC) {
413
- return;
414
- }
415
-
416
454
  term.attachCustomKeyEventHandler(event => {
455
+ // Send Shift+Enter as a line feed (\n) rather than carriage
456
+ // return (\r), so terminal applications can distinguish
457
+ // between Enter (execute) and Shift+Enter (newline). Handle
458
+ // only keydown and call preventDefault() so the browser
459
+ // suppresses the follow-up keypress event that xterm.js would
460
+ // otherwise turn into a \r.
461
+ // Skip during IME composition so composed text isn't split by
462
+ // an injected \n.
463
+ if (
464
+ event.type === 'keydown' &&
465
+ event.shiftKey &&
466
+ event.key === 'Enter' &&
467
+ !event.isComposing &&
468
+ event.keyCode !== 229
469
+ ) {
470
+ event.preventDefault();
471
+ this.session.send({
472
+ type: 'stdin',
473
+ content: ['\n']
474
+ });
475
+ return false;
476
+ }
477
+
478
+ // Do not add any Ctrl+C/Ctrl+V handling on macOS,
479
+ // where Cmd+C/Cmd+V works as intended.
480
+ if (Platform.IS_MAC) {
481
+ return true;
482
+ }
483
+
417
484
  if (event.ctrlKey && event.key === 'c' && term.hasSelection()) {
418
485
  // Return so that the usual OS copy happens
419
486
  // instead of interrupt signal.
@@ -436,6 +503,7 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
436
503
  sender: TerminalNS.ITerminalConnection,
437
504
  msg: TerminalNS.IMessage
438
505
  ): void {
506
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
439
507
  switch (msg.type) {
440
508
  case 'stdout':
441
509
  if (msg.content) {
@@ -493,6 +561,81 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
493
561
  );
494
562
  }
495
563
 
564
+ /**
565
+ * Handle the `keydown` event for the widget.
566
+ */
567
+ private _evtKeyDown(event: KeyboardEvent): void {
568
+ const xtermViewport = this._term.element?.querySelector(
569
+ '.xterm-viewport'
570
+ ) as HTMLElement | null;
571
+ const xtermTextarea = this._term.textarea;
572
+ const activeElement = document.activeElement as HTMLElement | null;
573
+ const viewportFocused =
574
+ !!activeElement &&
575
+ !!xtermViewport &&
576
+ (activeElement === xtermViewport ||
577
+ xtermViewport.contains(activeElement));
578
+ const textareaFocused = !!xtermTextarea && activeElement === xtermTextarea;
579
+
580
+ if (event.key === 'Escape') {
581
+ if (!textareaFocused) {
582
+ this._clearEscapeResetTimer();
583
+ this._escapePressedOnce = false;
584
+ return;
585
+ }
586
+ if (!this._escapePressedOnce) {
587
+ this._escapePressedOnce = true;
588
+ this._scheduleEscapeReset();
589
+ return;
590
+ }
591
+ event.preventDefault();
592
+ event.stopPropagation();
593
+ this._clearEscapeResetTimer();
594
+ this._escapePressedOnce = false;
595
+ if (xtermTextarea) {
596
+ // This ensures pressing Tab does not return to the textarea and avoids
597
+ // becoming a tab trap.
598
+ xtermTextarea.tabIndex = -1;
599
+ }
600
+ xtermViewport?.setAttribute('tabindex', '0');
601
+ xtermViewport?.focus();
602
+ return;
603
+ }
604
+
605
+ this._clearEscapeResetTimer();
606
+ this._escapePressedOnce = false;
607
+
608
+ if (viewportFocused && event.key === 'Enter') {
609
+ event.preventDefault();
610
+ event.stopPropagation();
611
+ if (xtermTextarea) {
612
+ xtermTextarea.tabIndex = 0;
613
+ xtermTextarea.focus();
614
+ }
615
+ return;
616
+ }
617
+
618
+ if (viewportFocused && event.key === 'Tab' && xtermTextarea) {
619
+ xtermTextarea.tabIndex = -1;
620
+ }
621
+ }
622
+
623
+ private _scheduleEscapeReset(): void {
624
+ this._clearEscapeResetTimer();
625
+ this._escapeResetTimer = window.setTimeout(() => {
626
+ this._escapePressedOnce = false;
627
+ this._escapeHintRequested.emit();
628
+ this._escapeResetTimer = null;
629
+ }, ESCAPE_FOCUS_DELAY_MS);
630
+ }
631
+
632
+ private _clearEscapeResetTimer(): void {
633
+ if (this._escapeResetTimer !== null) {
634
+ window.clearTimeout(this._escapeResetTimer);
635
+ this._escapeResetTimer = null;
636
+ }
637
+ }
638
+
496
639
  private _fitAddon: FitAddon;
497
640
  private _searchAddon: SearchAddon;
498
641
  private _needsResize = true;
@@ -505,6 +648,31 @@ export class Terminal extends Widget implements ITerminal.ITerminal {
505
648
  private _termOpened = false;
506
649
  private _trans: TranslationBundle;
507
650
  private _themeChanged = new Signal<this, void>(this);
651
+ private _escapeHintRequested = new Signal<this, void>(this);
652
+ private _escapePressedOnce = false;
653
+ private _escapeResetTimer: number | null = null;
654
+ private _terminalId: number;
655
+ private _escapeInstructionsId: string;
656
+
657
+ /**
658
+ * Handle the DOM events for the widget.
659
+ *
660
+ * @param event -The DOM event sent to the widget.
661
+ *
662
+ * #### Notes
663
+ * This method implements the DOM `EventListener` interface and is
664
+ * called in response to events on the terminal widget's node. It should
665
+ * not be called directly by user code.
666
+ */
667
+ handleEvent(event: Event): void {
668
+ switch (event.type) {
669
+ case 'keydown':
670
+ this._evtKeyDown(event as KeyboardEvent);
671
+ break;
672
+ default:
673
+ break;
674
+ }
675
+ }
508
676
  }
509
677
 
510
678
  /**
package/style/base.css CHANGED
@@ -12,14 +12,21 @@
12
12
  padding: 8px;
13
13
  }
14
14
 
15
+ .jp-Terminal-body .xterm-viewport:focus-visible {
16
+ outline-width: 2px;
17
+ outline-style: solid;
18
+ outline-color: var(--jp-brand-color1);
19
+ outline-offset: -2px;
20
+ }
21
+
15
22
  [data-term-theme='inherit'] .xterm .xterm-screen canvas {
16
- border: 1px solid var(--jp-layout-color0);
23
+ border: var(--jp-border-width) solid var(--jp-layout-color0);
17
24
  }
18
25
 
19
26
  [data-term-theme='light'] .xterm .xterm-screen canvas {
20
- border: 1px solid #fff;
27
+ border: var(--jp-border-width) solid #fff;
21
28
  }
22
29
 
23
30
  [data-term-theme='dark'] .xterm .xterm-screen canvas {
24
- border: 1px solid #000;
31
+ border: var(--jp-border-width) solid #000;
25
32
  }