Add Cmd+Enter shortcut to toggle fullscreen
This commit is contained in:
parent
d517be8ddd
commit
ede4e2fc99
2 changed files with 84 additions and 0 deletions
|
|
@ -302,6 +302,17 @@ func shouldDispatchBrowserReturnViaFirstResponderKeyDown(
|
|||
return keyCode == 36 || keyCode == 76
|
||||
}
|
||||
|
||||
func shouldToggleMainWindowFullScreenForCommandEnterShortcut(
|
||||
flags: NSEvent.ModifierFlags,
|
||||
keyCode: UInt16
|
||||
) -> Bool {
|
||||
let normalizedFlags = flags
|
||||
.intersection(.deviceIndependentFlagsMask)
|
||||
.subtracting([.numericPad, .function, .capsLock])
|
||||
guard normalizedFlags == [.command] else { return false }
|
||||
return keyCode == 36 || keyCode == 76
|
||||
}
|
||||
|
||||
func commandPaletteSelectionDeltaForKeyboardNavigation(
|
||||
flags: NSEvent.ModifierFlags,
|
||||
chars: String,
|
||||
|
|
@ -4574,6 +4585,17 @@ final class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCent
|
|||
return true
|
||||
}
|
||||
|
||||
if shouldToggleMainWindowFullScreenForCommandEnterShortcut(
|
||||
flags: event.modifierFlags,
|
||||
keyCode: event.keyCode
|
||||
) {
|
||||
guard let targetWindow = mainWindowForShortcutEvent(event) else {
|
||||
return false
|
||||
}
|
||||
targetWindow.toggleFullScreen(nil)
|
||||
return true
|
||||
}
|
||||
|
||||
// When the terminal has active IME composition (e.g. Korean, Japanese, Chinese
|
||||
// input), don't intercept non-Cmd key events — let them flow through to the
|
||||
// input method. Cmd-based shortcuts (Cmd+T, Cmd+Shift+L, etc.) should still
|
||||
|
|
|
|||
|
|
@ -1934,6 +1934,68 @@ final class BrowserReturnKeyDownRoutingTests: XCTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
final class FullScreenShortcutTests: XCTestCase {
|
||||
func testMatchesCommandReturn() {
|
||||
XCTAssertTrue(
|
||||
shouldToggleMainWindowFullScreenForCommandEnterShortcut(
|
||||
flags: [.command],
|
||||
keyCode: 36
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
func testMatchesCommandKeypadEnterWithNumericPadFlag() {
|
||||
XCTAssertTrue(
|
||||
shouldToggleMainWindowFullScreenForCommandEnterShortcut(
|
||||
flags: [.command, .numericPad],
|
||||
keyCode: 76
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
func testIgnoresCapsLockForCommandEnter() {
|
||||
XCTAssertTrue(
|
||||
shouldToggleMainWindowFullScreenForCommandEnterShortcut(
|
||||
flags: [.command, .capsLock],
|
||||
keyCode: 36
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
func testRejectsNonEnterKeyCodes() {
|
||||
XCTAssertFalse(
|
||||
shouldToggleMainWindowFullScreenForCommandEnterShortcut(
|
||||
flags: [.command],
|
||||
keyCode: 13
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
func testRejectsAdditionalModifiers() {
|
||||
XCTAssertFalse(
|
||||
shouldToggleMainWindowFullScreenForCommandEnterShortcut(
|
||||
flags: [.command, .shift],
|
||||
keyCode: 36
|
||||
)
|
||||
)
|
||||
XCTAssertFalse(
|
||||
shouldToggleMainWindowFullScreenForCommandEnterShortcut(
|
||||
flags: [.command, .control],
|
||||
keyCode: 36
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
func testRejectsWhenCommandIsMissing() {
|
||||
XCTAssertFalse(
|
||||
shouldToggleMainWindowFullScreenForCommandEnterShortcut(
|
||||
flags: [],
|
||||
keyCode: 36
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
final class BrowserZoomShortcutActionTests: XCTestCase {
|
||||
func testZoomInSupportsEqualsAndPlusVariants() {
|
||||
XCTAssertEqual(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue