Overview
iOS keyboards use a UITextDocumentProxy to integrate with the currently active text field. It lets you insert and delete text, get the selected text, move the input cursor, etc.
The native proxy APIs are however quite limited, and make it hard to get detailed information about the text and perform many standard keyboard operations.
KeyboardKit therefore extends the proxy with more capabilities. KeyboardInputViewController
also has a custom .textDocumentProxy
that lets you do even more.
KeyboardKit Pro adds even more proxy capabilities, such as being able to read the full document, instead of the limited text you get access to by default.
Mamespace
KeyboardKit has a Proxy
namespace with proxy-related types. It currently only contains utils when itβs part of a KeyboardKit Pro build.
Extensions
KeyboardKit extends the native UITextDocumentProxy
with additional capabilities, such as the ability to get more content from the document, analyze words & sentences, end the current sentence, etc.
Here are some examples of extensions that KeyboardKit adds to it:
currentWord
deleteBackward(range:)
deleteBackward(times:)
documentContext
endSentence(withText:)
fullDocumentContext(config:)
hasUnclosedQuotationBeforeInput(for:)
isCursorAtNewSentence
isCursorAtNewWord
isCursorAtTheEndOfTheCurrentWord
isReadingFullDocumentContext
replaceCurrentWord(with:)
sentenceBeforeInput
sentenceDelimiters
wordBeforeInput
wordDelimiters
See the documentation for more information and a complete list of extension.
π KeyboardKit Pro
KeyboardKit Pro unlocks additional text document proxy capabilities, like the ability to read the full document context, instead of the limited text you get access to by default.
Full Document Context
Appleβs native text document proxy doesnβt return all the text within the document. It instead cuts off the available text at any time, e.g. at the previous or next paragraph.
KeyboardKit Pro therefore lets you read all text from the proxy, using a proxy extension that reads the full document content by moving the input cursor in intricate ways:
let proxy = keyboardContext.textDocumentProxy
let result = try await proxy.fullDocumentContext(config: ...)
Note that this is a best effort operation that isnβt guaranteed to return a complete result. You can therefore configure the function to yield better results.
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.