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.
This commit is contained in:
Rocky
2026-08-14 18:22:41 +08:00
parent 0a60006d2d
commit 320dc777c9
46 changed files with 1429 additions and 376 deletions
+29 -1
View File
@@ -144,6 +144,9 @@ public final class KeyboardState: ObservableObject {
@Published public var enabledClipboardSkillIDs: [String] = AIAgentSkillLayout.defaultEnabledIDs
/// Export skill currently waiting on the LLM. Nil for transform skills.
@Published public var pendingClipboardSkillID: String?
/// Clipboard captured when that export skill was tapped, so the body
/// still exists after the 30-second hint window closes.
public var pendingClipboardSkillSource: String?
/// In-keyboard toast (e.g. no todos). Does not leave the host app.
@Published public var skillTipText: String?
/// Host field is a password / secure entry never read pasteboard.
@@ -219,13 +222,38 @@ public final class KeyboardState: ObservableObject {
public enum ReturnKeyRole: Equatable {
case newline
case send
case go
case search
case join
case done
case next
case `continue`
case route
case google
case yahoo
case emergencyCall
public var titleKey: String {
switch self {
case .newline: return "common.newline"
case .send: return "common.send"
case .send: return "common.send"
case .go: return "keyboard.return.go"
case .search: return "keyboard.return.search"
case .join: return "keyboard.return.join"
case .done: return "common.done"
case .next: return "keyboard.return.next"
case .continue: return "common.continue"
case .route: return "keyboard.return.route"
case .google: return "keyboard.return.google"
case .yahoo: return "keyboard.return.yahoo"
case .emergencyCall: return "keyboard.return.emergencyCall"
}
}
/// Green action chrome (system uses blue for Go / Search / Send / Done).
public var usesActionFill: Bool {
self != .newline
}
}
// Action hooks injected by the view controller at install time.