Shift-ctrl-C sends interrupt if no text is selected #14013

Open
opened 2026-01-31 03:58:31 +00:00 by claunia · 2 comments
Owner

Originally created by @gpvos on GitHub (May 28, 2021).

Windows Terminal version (or Windows build number)

1.7.1033.0

Other Software

Both Command Prompt (10.0.19042.985) and Ubuntu (20.04.2 LTS). Probably others as well.

Steps to reproduce

  1. Make sure you have not selected any text.
  2. Be unaware of the above.
  3. Press shift-ctrl-C

Expected Behavior

Nothing happens. Alternatively, emptying the clipboard would also be acceptable, although less desirable.

Actual Behavior

Interrupt is sent to running program, as if ctrl-C is pressed. Suddenly and unexpectedly, I have to restart my program, or restart editing my command line. If I had wanted that, I'd have pressed ctrl-C, not the text copying command, which is something entirely different. Why would you conflate these two?

Originally created by @gpvos on GitHub (May 28, 2021). ### Windows Terminal version (or Windows build number) 1.7.1033.0 ### Other Software Both Command Prompt (10.0.19042.985) and Ubuntu (20.04.2 LTS). Probably others as well. ### Steps to reproduce 1. Make sure you have not selected any text. 2. Be unaware of the above. 3. Press shift-ctrl-C ### Expected Behavior Nothing happens. Alternatively, emptying the clipboard would also be acceptable, although less desirable. ### Actual Behavior Interrupt is sent to running program, as if ctrl-C is pressed. Suddenly and unexpectedly, I have to restart my program, or restart editing my command line. If I had wanted that, I'd have pressed ctrl-C, not the text copying command, which is something entirely different. Why would you conflate these two?
claunia added the Area-SettingsIssue-TaskProduct-TerminalArea-TerminalControl labels 2026-01-31 03:58:31 +00:00
Author
Owner

@zadjii-msft commented on GitHub (May 28, 2021):

I could have sworn we had another thread tracking this somewhere on the repo...

This is how conhost behaves as well. So this is probably behavior that's existed for 20+ years now in the vintage console. Undoubtably, there's someone out there who's muscle memory now involves using ctrl+shift+c to send interrupts.

Plus, since before 1.0, we've been shipping ctrl+c as copy in the user's settings.json by default. For all the users who still have that set (probably a large population), changing this behavior now would probably a pretty major breaking change. They wouldn't be able to send an interrupt at all anymore.

The only possible thing I could think of as a solution here is

  • add another parameter to copy, neverPassThroughToClientApp, which would prevent the key from falling through to the client even when there's no selection
  • opt the defaults.json copy in to that setting, but not the userDefaults.json one.

Though that sure does seem like a cludge. Any more clever solutions?

@zadjii-msft commented on GitHub (May 28, 2021): I could have sworn we had another thread tracking this somewhere on the repo... This is how conhost behaves as well. So this is probably behavior that's existed for 20+ years now in the vintage console. Undoubtably, there's someone out there who's muscle memory now involves using <kbd>ctrl+shift+c</kbd> to send interrupts. Plus, since before 1.0, we've been shipping <kbd>ctrl+c</kbd> as `copy` in the user's `settings.json` by default. For all the users who still have that set (probably a large population), changing this behavior now would probably a pretty _major_ breaking change. They wouldn't be able to send an interrupt _at all_ anymore. The only possible thing I could think of as a solution here is * add _another_ parameter to copy, `neverPassThroughToClientApp`, which would prevent the key from falling through to the client even when there's no selection * opt the `defaults.json` copy in to that setting, but not the `userDefaults.json` one. Though that sure does seem like a cludge. Any more clever solutions?
Author
Owner

@gpvos commented on GitHub (May 28, 2021):

Sorry, I did search.

I have a default install, but of a more recent version. I certainly did not change this key setting. In conhost, I used , so I was pretty happy with this new simpler key combination that is easier to remember than shift-insert or ctrl-insert where I keep forgetting which is which. In my memory, this used to not fall back to interrupt, and this behaviour changed somewhere in the last half year or so.

In essence, yes, I am asking for a new parameter to the copy command, or a separate command. Changing the default is not necessary for me, but I do want to have this option.

@gpvos commented on GitHub (May 28, 2021): Sorry, I did search. I have a default install, but of a more recent version. I certainly did not change this key setting. In conhost, I used <alt-space E K>, so I was pretty happy with this new simpler key combination that is easier to remember than shift-insert or ctrl-insert where I keep forgetting which is which. In my memory, this used to not fall back to interrupt, and this behaviour changed somewhere in the last half year or so. In essence, yes, I am asking for a new parameter to the copy command, or a separate command. Changing the default is not necessary for me, but I do want to have this option.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#14013