Change:
<!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Please search existing issues to avoid creating duplicates. --<!-- Also please test using the latest insiders build to make sure your issue has not already been fixed: --Hitting + with the terminal focused and a process running (i.e. in a React app) does not kill the process. If someone is able to provide a good starting point, I would be willing to take a stab at this. <!-- Use Help Report Issue to prefill these. --- VSCode Version: 1.53.0-insider OS Version: iPadOS 14.1 (18A8395) Commit: Date: 2021-01-07T05:25:51.740Z (16 hrs ago) Browser: Mozilla/5.0 (iPad; CPU OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/87.0.4280.77 Mobile/15E148 Safari/604.1 iPad, open Codespaces environment in Chrome integrated Terminal application (i.e. like a create-react-app - ) terminal and hit + Process () should stop running Terminal receives new line https://user- <!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes Related:
Perhaps that is not the right sigint.
One other piece of insight: this may not be limited to VSCode. has a product which includes a terminal in the browser. I’m able to reproduce the same issue (see line breaks at the bottom). !
As a temporary workaround, it works if you manually define the shortcut like so: Command Palette for "Preferences: Open Keyboard Shortcuts (JSON)" this: Source:
I found the root reason was iPad Safari report keyCode of ctrl-c as 13, which is not correct, reference from MDN, keyCode is a deprecated property; The key and code property is right, so I suggest just use key property, not keyCode, on the whole html page not just terminal.
I'm still seeing this in codespace, am I testing the right environment?
fixed w
as another workaround, use shortcut instead of , it will interrupt the process as well

Discussion:
import { Extensions as ViewContainerExtensions, IViewContainersRegistry, ViewContainerLocation, IViewsRegistry } from 'vs/workbench/common/views'; import { registerTerminalActions, terminalSendSequenceCommand } from 'vs/workbench/contrib/terminal/browser/terminalActions'; import { TerminalViewPane } from 'vs/workbench/contrib/terminal/browser/terminalView'; <del> import { KEYBINDING_CONTEXT_TERMINAL_SHELL_TYPE_KEY, KEYBINDING_CONTEXT_TERMINAL_FOCUS, TERMINAL_VIEW_ID, TERMINAL_COMMAND_ID } from 'vs/workbench/contrib/terminal/common/terminal'; </del> <ins> import { KEYBINDING_CONTEXT_TERMINAL_SHELL_TYPE_KEY, KEYBINDING_CONTEXT_TERMINAL_FOCUS, TERMINAL_VIEW_ID, TERMINAL_COMMAND_ID, KEYBINDING_CONTEXT_IPAD } from 'vs/workbench/contrib/terminal/common/terminal'; </ins> import { registerColors } from 'vs/workbench/contrib/terminal/common/terminalColorRegistry'; import { setupTerminalCommands } from 'vs/workbench/contrib/terminal/browser/terminalCommands'; import { setupTerminalMenu } from 'vs/workbench/contrib/terminal/common/terminalMenu';

import { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from 'vs/platform/accessibility/common/accessibility'; import { terminalViewIcon } from 'vs/workbench/contrib/terminal/browser/terminalIcons'; import { RemoteTerminalService } from 'vs/workbench/contrib/terminal/browser/remoteTerminalService'; <ins> import { isIPad } from 'vs/base/browser/browser'; </ins> // Register services registerSingleton(ITerminalService, TerminalService, true);

}); } <ins> // send ctrl+c to the iPad when the terminal is focused and ctrl+c is pressed to kill the process if (isIPad) { registerSendSequenceKeybinding(String.fromCharCode('C'.charCodeAt(0) - CTRL_LETTER_OFFSET), { // ctrl+c when: ContextKeyExpr.and(KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_IPAD), primary: KeyMod.CtrlCmd | KeyCode.KEY_C }); } </ins> // Delete word left: ctrl+w registerSendSequenceKeybinding(String.fromCharCode('W'.charCodeAt(0) - CTRL_LETTER_OFFSET), { primary: KeyMod.CtrlCmd | KeyCode.Backspace,

/** A context key that is set to the detected shell for the most recently active terminal, this is set to the last known value when no terminals exist. */ export const KEYBINDING_CONTEXT_TERMINAL_SHELL_TYPE = new RawContextKey<string>(KEYBINDING_CONTEXT_TERMINAL_SHELL_TYPE_KEY, undefined, { type: 'string', description: nls.localize('terminalShellTypeContextKey', "The shell type of the active terminal") }); <ins> export const KEYBINDING_CONTEXT_IPAD_KEY = 'isIPad'; export const KEYBINDING_CONTEXT_IPAD = new RawContextKey(KEYBINDING_CONTEXT_IPAD_KEY, false, nls.localize(KEYBINDING_CONTEXT_IPAD_KEY, 'Whether the device is an ipad')); </ins> export const KEYBINDING_CONTEXT_TERMINAL_ALT_BUFFER_ACTIVE = new RawContextKey<boolean>('terminalAltBufferActive', false, true); /** A context key that is set when the integrated terminal does not have focus. */