KeyboardKit is a Swift library that helps you build custom keyboards with Swift and SwiftUI. It extends the native keyboard APIs and provides you with a lot more functionality than is otherwise available.
The end result can look something like this...or entirely different:
KeyboardKit Pro extends KeyboardKit with pro features, such as localized input sets, keyboard layouts and callout actions, which lets you create fully localized system keyboards for all keyboard locales with a single line of code.
KeyboardKit Pro also unlocks a local and a remote autocomplete providers, emoji skintone support, the possibility to read all the text from the text document proxy, additional views etc.
KeyboardKit Pro requires a commercial license. Licenses can be purchased from the website or from Gumroad.
tvOS 14 and
However, the distribution is
iOS only for non-enterprise licenses!
Please reach out if you need to use KeyboardKit Pro on multiple platforms.
KeyboardKit Pro can be installed with the Swift Package Manager:
Since KeyboardKit Pro installs as a binary, it only has to be added to the main app target.
The online documentation has a getting-started guide that will help you get started with the library.
The online documentation has articles, code examples etc. that let you overview the various parts of the library and understand how they all connect to each other.
The online documentation is currently iOS-specific, which means that some parts will not be available if you run KeyboardKit Pro on other platforms.
KeyboardKit Pro is localized in 60 keyboard-specific locales (read more):
🇦🇱 🇦🇪 🇦🇲 🇧🇾 🇧🇬 🇦🇩 🏳️ 🇭🇷 🇨🇿 🇩🇰
🇳🇱 🇧🇪 🇺🇸 🇬🇧 🇺🇸 🇪🇪 🇫🇴 🇵🇭 🇫🇮 🇫🇷
🇧🇪 🇨🇭 🇬🇪 🇩🇪 🇦🇹 🇨🇭 🇬🇷 🇺🇸 🇮🇱 🇭🇺
🇮🇸 🇮🇩 🇮🇪 🇮🇹 🇹🇯 🇹🇯 🇹🇯 🇱🇻 🇱🇹 🇲🇰
🇲🇾 🇲🇹 🇲🇳 🇳🇴 🇮🇷 🇵🇱 🇵🇹 🇧🇷 🇷🇴 🇷🇺
🇷🇸 🇷🇸 🇸🇰 🇸🇮 🇪🇸 🇰🇪 🇸🇪 🇹🇷 🇺🇦 🇺🇿
KeyboardKit unlocks localized input sets, keyboard layouts and callout actions for all locales that your license contains.
Besides the core features, KeyboardKit Pro extends KeyboardKit with a bunch of pro features:
UITextDocumentProxyextensions for reading all text from the proxy.
You find KeyboardKit Pro-specific information at the end of these articles.
The main project repository has a
Demo folder with a demo apps that lets you try out different KeyboardKit features.
The demo app has 5 keyboard extensions:
SystemKeyboardwith the standard, English locale.
SystemKeyboardwith unicode-based input keys.
SystemKeyboardwith custom keys, layout and appearance.
Prouses KeyboardKit Pro and has a
SystemKeyboardwith all LRT locales.
ProRtluses KeyboardKit Pro and has a
SystemKeyboardwith all RTL locales.
Just open and run the demo app, then enable the keyboards you want to try under System Settings. Note that you need to enable full access to try some features, like audio and haptic feedback.
KeyboardKit is trusted and proudly sponsored by the following companies:
KeyboardKit is open-source and completely free, but you can sponsor this project on GitHub Sponsors, upgrade to KeyboardKit Pro or get in touch for paid support.
Feel free to reach out if you have questions or if you want to contribute in any way:
KeyboardKit Pro is closed source. See the LICENSE file for more info.
|Last commit: 10 hours ago|
This version focuses on making it easier to style keyboards.
This version adds a theme engine to KeyboardKit Pro. The new
KeyboardThemeAppearance can be used with the new
KeyboardTheme to style keyboards with themes, which is a lot easier than defining custom appearances.
This version comes with three themes -
.tron. You can use them in your own keyboads, or tweak them to create your own visual styles. More themes are coming in future versions.
Due to a bug found in the new autocomplete provider, the old
StandardAutocompleteProvider will be replaced in the next minor version.
AutocompleteContexthas a new
isEnabledproperty that can be used to disable autocomplete.
KeyboardAppearancehas a new
KeyboardAppearancehas a new
KeyboardBackgroundStyleis a new style that can be used to the background of a keyboard.
KeyboardButtonStyleproperties are now optional to allow for overrides.
KeyboardButtonStylehas a new
pressedOverlayColorproperty that can be used to highlight buttons.
KeyboardButtonStylehas a new
extended(with:)function to let you extend a style with another style.
View+SystemKeyboardButtonhas a new
isPressedparameter to let you define pressed state.
KeyboardInputViewControllerwill use the new autocomplete context property to disable autocomplete if needed.
KeyboardThemeis a new type that can be used to define keyboard themes.
KeyboardThemeAppearanceis a new appearance that can be used with
LocalAutocompleteProviderthat was introduced in 7.1 has been made public.
LocalAutocompleteProvidernow ignores empty strings when wrapping in quotes.
LocalAutocompleteProvidernow replaces hyphens with space when suggesting splitting up the word.
KeyboardTheme.cottonCandyis a pink and blue trip to fluffy delight.
KeyboardTheme.neonNightsis a metropolitian color explosion.
KeyboardTheme.tronis a black and blue, digital adrenaline rush.
SystemKeyboarduses the new appearance background and autocomplete toolbar styles.
CalloutStylehas been renamed to
ActionCalloutStylehas been renamed to
InputCalloutStylehas been renamed to
This version adds an
isKeyboardFloating property to the keyboard context. It's currently not used to change the visual representation of floating keyboards, but please verify that it works as expected.
KeyboardContexthas a new
isKeyboardFloatingproperty that can be used to determine if the keyboard is floating.
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics