diff --git a/apps/web/src/terminal/ghostty/surface.test.ts b/apps/web/src/terminal/ghostty/surface.test.ts index 18cf959012092a7512a2c6a2a91fd56956cb8573..c11529e0c46c8da1682d47afc07edc4e697c3e15 100644 --- a/apps/web/src/terminal/ghostty/surface.test.ts +++ b/apps/web/src/terminal/ghostty/surface.test.ts @@ -253,6 +253,22 @@ describe("isTerminalPasteShortcut", () => { true, ); }); + + it("supports the conventional Shift+Insert paste shortcut", () => { + expect(isTerminalPasteShortcut(event({ key: "Insert", shiftKey: true }), "Linux x86_64")).toBe( + true, + ); + expect(isTerminalPasteShortcut(event({ key: "Insert" }), "Linux x86_64")).toBe(false); + expect( + isTerminalPasteShortcut( + event({ key: "Insert", ctrlKey: true, shiftKey: true }), + "Linux x86_64", + ), + ).toBe(false); + expect(isTerminalPasteShortcut(event({ key: "Insert", shiftKey: true }), "MacIntel")).toBe( + false, + ); + }); }); describe("isTerminalCompositionCommitInput", () => { diff --git a/apps/web/src/terminal/ghostty/surface.ts b/apps/web/src/terminal/ghostty/surface.ts index 2ac3c68d15869f612147def6a4812f9111ba32a6..9492e2d02628324e304fd6b5a877deebbe1366a5 100644 --- a/apps/web/src/terminal/ghostty/surface.ts +++ b/apps/web/src/terminal/ghostty/surface.ts @@ -340,7 +340,11 @@ export function isTerminalPasteShortcut( event: Pick, platform = navigator.platform, ) { - if (event.key.toLowerCase() !== "v") return false; + const key = event.key.toLowerCase(); + if (key === "insert" && !isMacPlatform(platform)) { + return event.shiftKey && !event.ctrlKey && !event.metaKey; + } + if (key !== "v") return false; return isMacPlatform(platform) ? event.metaKey : event.ctrlKey && event.shiftKey; }