Files
OSGKeyboard/OSGKeyboardShared/Typing/PeriodShortcut.swift
T
Rocky 320dc777c9 feat(keyboard): add Notes skill and system-style typing
Add save-to-Notes export and direct map handoff while aligning multi-touch typing, period shortcuts, return actions, and navigation visuals with system behavior.
2026-08-14 18:22:41 +08:00

29 lines
1.2 KiB
Swift

// PeriodShortcut.swift
// OSGKeyboard · Shared
//
// iOS "." Shortcut: a second Space shortly after a Space that follows a
// word character becomes ". " and arms sentence Shift.
import Foundation
public enum PeriodShortcut: Sendable {
/// Window for the second Space tap. Slow consecutive spaces stay spaces.
public static let doubleTapInterval: TimeInterval = 0.45
/// Whether `precedingText` (already including the first space) can take
/// the shortcut: `…X ` where X is a letter or number, not a terminator.
public static func shouldReplacePreviousSpace(precedingText: String) -> Bool {
guard precedingText.last == " " else { return false }
guard let previous = precedingText.dropLast().last else { return false }
if previous.isWhitespace || previous.isNewline { return false }
return previous.isLetter || previous.isNumber
}
/// After inserting a space, arm only when that space followed a word char.
public static func shouldArm(afterSpaceFollowing precedingBeforeSpace: String) -> Bool {
guard let last = precedingBeforeSpace.last else { return false }
if last.isWhitespace || last.isNewline { return false }
return last.isLetter || last.isNumber
}
}