KeyboardKit helps you build custom keyboard extensions with Swift and SwiftUI. It extends the native keyboard APIs and provides you with a lot more functionality than is otherwise available.
The result can look like this or completely different:
KeyboardKit supports using entirely custom views, but provides you with a large set of tools and views that make it easy to replicate the native iOS keyboards.
If you're new to iOS keyboard extensions, this great guide will help you get started. You can also have a look at the demo apps for inspiration.
KeyboardKit supports iOS 13, macOS 11, tvOS 13 and watchOS 6.
Although KeyboardKit builds on all platform, some features are unavailable on some platforms.
KeyboardKit can be installed with the Swift Package Manager:
https://github.com/KeyboardKit/KeyboardKit.git
or with CocoaPods:
pod KeyboardKit
You can add the library to the main app, the keyboard extension and any other targets that need it.
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.
The online documentation is currently iOS-specific. To generate documentation for other platforms, open the package in Xcode, select a simulator then run Product/Build Documentation.
Note that extensions to native types are not included in this documentation. Future versions of this library will aim at adding protocols for these extensions, to make them appear in the documentation.
KeyboardKit is localized in 50+ keyboard-specific locales:
🇺🇸 🇦🇱 🇦🇪 🇧🇾 🇧🇬 🇦🇩 🇭🇷 🇨🇿 🇩🇰 🇳🇱
🇧🇪 🇬🇧 🇺🇸 🇪🇪 🇫🇴 🇵🇭 🇫🇮 🇫🇷 🇨🇭 🇬🇪
🇩🇪 🇦🇹 🇬🇷 🇭🇺 🇮🇸 🇮🇪 🇮🇹 🇹🇯 🇱🇻 🇱🇹
🇲🇰 🇲🇹 🇲🇳 🇳🇴 🇮🇷 🇵🇱 🇵🇹 🇧🇷 🇷🇴 🇷🇺
🇷🇸 🇸🇰 🇸🇮 🇪🇸 🇰🇪 🇸🇪 🇹🇷 🇺🇦 🇺🇸 🇧🇪
KeyboardKit comes packed with features to help you build powerful keyboards.
KeyboardKit comes with many keyboard-specific actions, like character inputs, emojis, backspace, space, newline, image etc. You can even create your own actions.
KeyboardKit comes with an appearance engine that lets you easily style your keyboards.
KeyboardKit can present autocomplete suggestions as users type.
KeyboardKit lets you show input callouts as users type, as well as action callouts with alternate actions for the currently pressed key.
KeyboardKit defines emojis and emoji categories that you can use in your own keyboards.
KeyboardKit provides a bunch of extensions to native types.
KeyboardKit lets you detect whether or not an external keyboard is used.
KeyboardKit keyboards can give audio and haptic feedback as users type.
Read more about audio feedback and haptic feedback.
KeyboardKit comes with keyboard-specific gestures that you can use in your own keyboards.
KeyboardKit comes with an input set engine that make it easy to create alphabetic, numeric and symbolic keyboards in different languages.
KeyboardKit comes with a layout engine that makes it easy to create specific keyboard layouts for various devices, orientations and locales.
KeyboardKit comes with many different keyboard types, like alphabetic, numeric, symbolic, emoji etc. You can even create your own types.
KeyboardKit defines keyboard-specific locales and provides localized content for the supported locales.
KeyboardKit defines a bunch of preview-specific types that simplify previewing keyboard views in SwiftUI.
KeyboardKit defines a bunch of extensions to UITextDocumentProxy and ways to route text to other sources.
KeyboardKit supports RTL (right-to-left) locales, but your extension need to be configured to support it.
KeyboardKit defines a bunch of styles that simplify customizing the look of various keyboard components.
KeyboardKit comes with a bunch of keyboard-specific views, like keyboards, toobars, buttons etc
KeyboardKit Pro is a license-based extensions that unlocks pro features, such as additional locales, autocomplete, convenience views etc. It can save you a lot of time when developing more complex keyboards.
KeyboardKit Pro is also a way to support this project, which is otherwise completely free and developed by a single person (with great help from the community). If you appreciate this project, consider going Pro.
This repository contains a Demo folder with two demo apps that lets you try out KeyboardKit.
The Demo app uses KeyboardKit and lets you type in a light and dark text field. It has three keyboards:
Englishuses aSystemKeyboardto mimic a native English keyboard.Unicodeuses aSystemKeyboardand a custom, unicode-based input set.Customshows you how to easily customize input sets and layouts.
The Demo - Pro app uses KeyboardKit Pro and supports 50+ locales, autocomplete etc. It has two keyboards:
System LTRuses aSystemKeyboardwith all left-to-right locales.System RTLuses aSystemKeyboardwith all right-to-left locales.
To run the demo apps, open and run these projects, 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.
Feel free to reach out if you have questions or if you want to contribute in any way:
- E-mail: info@getkeyboardkit.com
- Twitter: @getkeyboardkit
- Web site: getkeyboardkit.com
You can sponsor this project on GitHub Sponsors or get in touch for paid support.
KeyboardKit is proudly sponsored by the following companies:
KeyboardKit is free, but please consider sponsoring the project or upgrading to KeyboardKit Pro if you find it useful.
KeyboardKit is available under the MIT license. See the LICENSE file for more info.


