Overview
Great keyboard apps use the main app to show the user the state of the keyboard, if it’s enabled in System Settings, if Full Access is enabled, etc.
KeyboardKit adds many utilities to make this easier, such as URL extensions and navigation links.
Keyboard Settings
KeyboardKit has a Keyboard.Settings
class that has a store
that is used to persist data for various contexts. You can make it use an App Group to sync data between an app and its keyboard.
How to sync settings between the app and the keyboard
To sync data between the main app target and its keyboard extension, you have to create an App Group and link it to both the app and the keyboard.
You can then add the App Group ID to your KeyboardApp
and use that app to set up your main app and its keyboard extension, to make KeyboardKit set up automatic App Group syncing.
How to open System Settings
KeyboardKit defines a systemSettings
URL that can be used to open your app’s settings in System Settings, where users can enable your keyboard, enable Full Access, etc.
if let url = URL.systemSettings {
Link("Open System Settings", destination: url)
}
You can also open System Settings with a KeyboardActionHandler
, by triggering a url
action. If your app only navigates to the Settings root app, try adding an empty settings bundle to it.
How to access System Settings values
A common question is to be able to access various settings from System Settings, for instance to access autocapitalization & autocorrect preferences.
This is not possible, at least not with the public APIs. This is most probably due to privacy concerns, and unfortunately means that your app must provide its own keyboard settings.
Documentation
The information on this page is shortened to be easier to overview. For more information see the online documentation, or the KeyboardKit Pro documentation.
Core Features
KeyboardKit is packed with features. You can upgrade to KeyboardKit Pro to unlock pro features.
Essentials
KeyboardKit provides essential features, utilities & views.
Actions
KeyboardKit makes it easy to handle keyboard actions.
App
KeyboardKit makes it easy to set up your app and its keyboard.
Callouts
KeyboardKit can show input and secondary action callouts.
Emojis
KeyboardKit defines emojis, emoji categories, skin tones, etc.
Feedback
KeyboardKit can trigger audio & haptic feedback.
Gestures
KeyboardKit can trigger & handle rich keyboard gestures.
Layout
KeyboardKit has fully dynamic & customizable layout engine.
Localization
KeyboardKit supports 70 locales, with localized resources.
Navigation
KeyboardKit lets you open urls and apps from the keyboard.
Previews
KeyboardKit has built-in support for SwiftUI previews.
Proxy Utilities
KeyboardKit lets the document proxy do a LOT more.
Settings
KeyboardKit has tools for in-app settings & System Settings.
Status
KeyboardKit detects if a keyboard is enabled, has full access, etc.
Styling
KeyboardKit lets you style your keyboards to great extent.
👑 Pro Features
KeyboardKit Pro unlocks powerful pro features to take your keyboard extension to the next level.
Essentials
KeyboardKit Pro unlocks more essential views & utilities.
AI Support
KeyboardKit Pro unlocks features that are needed for AI.
App
KeyboardKit Pro unlocks app-specific screens & views.
Autocomplete
KeyboardKit Pro unlocks local & remote autocomplete.
Callouts
KeyboardKit Pro unlocks callout actions for all locales.
Dictation
KeyboardKit Pro can trigger dictation from the keyboard.
Emoji Keyboard
KeyboardKit Pro unlocks an emoji keyboard & search capabilities.
External Keyboards
KeyboardKit Pro can detect if an external keyboard is being used.
Host
KeyboardKit Pro can identify and open specific host applications.
Layout
KeyboardKit Pro unlocks input sets & layouts for all locales.
Localization
KeyboardKit Pro unlocks support for 70 locales.
Previews
KeyboardKit Pro unlocks in-app keyboard & theme previews.
Proxy Utilities
KeyboardKit Pro makes the proxy able to read the full document.
Text Input
KeyboardKit Pro unlocks tools to let you type within the keyboard
Themes
KeyboardKit Pro unlocks a theme engine & many standard themes.