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 lets you create keyboards that mimic the iOS stock keyboard in a single line of code. These keyboards can be customized to great extent to change their input keys, keyboard layout, design, behavior etc.
You can also use entirely custom views with the rich features of KeyboardKit, to create completely custom keyboard extensions. Most of the KeyboardKit features can be used on all major Apple platforms as well.
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 and understand how they all connect to each other.
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
.
KeyboardKit is localized in 60 keyboard-specific locales (read more):
๐ฆ๐ฑ ๐ฆ๐ช ๐ฆ๐ฒ ๐ง๐พ ๐ง๐ฌ ๐ฆ๐ฉ ๐ณ๏ธ ๐ญ๐ท ๐จ๐ฟ ๐ฉ๐ฐ
๐ณ๐ฑ ๐ง๐ช ๐บ๐ธ ๐ฌ๐ง ๐บ๐ธ ๐ช๐ช ๐ซ๐ด ๐ต๐ญ ๐ซ๐ฎ ๐ซ๐ท
๐ง๐ช ๐จ๐ญ ๐ฌ๐ช ๐ฉ๐ช ๐ฆ๐น ๐จ๐ญ ๐ฌ๐ท ๐บ๐ธ ๐ฎ๐ฑ ๐ญ๐บ
๐ฎ๐ธ ๐ฎ๐ฉ ๐ฎ๐ช ๐ฎ๐น ๐น๐ฏ ๐น๐ฏ ๐น๐ฏ ๐ฑ๐ป ๐ฑ๐น ๐ฒ๐ฐ
๐ฒ๐พ ๐ฒ๐น ๐ฒ๐ณ ๐ณ๐ด ๐ฎ๐ท ๐ต๐ฑ ๐ต๐น ๐ง๐ท ๐ท๐ด ๐ท๐บ
๐ท๐ธ ๐ท๐ธ ๐ธ๐ฐ ๐ธ๐ฎ ๐ช๐ธ ๐ฐ๐ช ๐ธ๐ช ๐น๐ท ๐บ๐ฆ ๐บ๐ฟ
KeyboardKit comes packed features to help you build amazing and powerful keyboards:
- ๐ฅ Actions - KeyboardKit comes with keyboard actions like characters, emojis, actions, custom ones etc.
- ๐จ Appearance - KeyboardKit comes with an appearance engine that lets you easily style your keyboards.
- ๐ก Autocomplete - KeyboardKit can present autocomplete suggestions as the user types.
- ๐ฏ Callouts - KeyboardKit can show input callouts, as well as long press callouts with secondary actions.
- ๐ Emojis - KeyboardKit defines emojis and emoji categories that you can use in your own keyboards.
- โจ๏ธ External Keyboards - KeyboardKit lets you detect whether or not an external keyboard is used.
- ๐ Feedback - KeyboardKit keyboards can give and haptic feedback feedback as the user types.
- ๐ Gestures - KeyboardKit comes with keyboard-specific gestures that you can use in your own keyboards.
- ๐ค Input - KeyboardKit supports creating
alphabetic
,numeric
andsymbolic
and custom input sets. - ๐ฃ Layout - KeyboardKit supports creating keyboard layouts for various devices, locales etc.
- โจ๏ธ Keyboard - KeyboardKit supports different keyboard types, can inspect a keyboard's state etc.
- ๐ Locales- KeyboardKit defines keyboard-specific locales with localized content and assets.
- ๐ Previews - KeyboardKit defines a bunch of tools that simplify previewing keyboard views in SwiftUI.
- โก๏ธ Proxy - KeyboardKit defines a bunch of extensions to
UITextDocumentProxy
. - ๐ Routing - KeyboardKit lets you route text to other destinations than the main app.
- โฌ ๏ธ RTL - KeyboardKit supports RTL (right-to-left) locales, such as Arabic, Persian, Kurdish etc.
- โ๏ธ Settings - KeyboardKit has tools for accessing and linking to an app's keyboard settings.
KeyboardKit Pro extends KeyboardKit with pro features, such as additional locales, autocomplete engines, more extensions, additional views etc. It lets you create fully localized system keyboards with a single line of code.
KeyboardKit Pro requires a commercial license. Licenses can be purchased from the website or from Gumroad.
This project contains a Demo
folder with a demo apps that lets you try out different KeyboardKit features.
The demo app has 5 keyboard extensions:
English
has aSystemKeyboard
with the standard, English locale.Unicode
has aSystemKeyboard
with unicode-based input keys.Custom
has aSystemKeyboard
with custom keys, layout and appearance.Pro
uses KeyboardKit Pro and has aSystemKeyboard
with all LRT locales.ProRtl
uses KeyboardKit Pro and has aSystemKeyboard
with 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:
![Oribi Oribi Icon](https://raw.githubusercontent.com/GiddyNaya/KeyboardKit/master/Resources/sponsors/oribi.png)
![phonetoroam phonetoroam Icon](https://raw.githubusercontent.com/GiddyNaya/KeyboardKit/master/Resources/sponsors/phonetoroam.png)
![Vitalis Vitalis Icon](https://raw.githubusercontent.com/GiddyNaya/KeyboardKit/master/Resources/sponsors/vitalis.png)
![LetterKey LetterKey Icon](https://raw.githubusercontent.com/GiddyNaya/KeyboardKit/master/Resources/sponsors/letterkey.png)
![Anomaly Software Anomaly Software Icon](https://raw.githubusercontent.com/GiddyNaya/KeyboardKit/master/Resources/sponsors/anomaly.png)
![Milo Creative Milo Creative Icon](https://raw.githubusercontent.com/GiddyNaya/KeyboardKit/master/Resources/sponsors/milo.png)
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:
- Website: getkeyboardkit.com
- Mastodon: @keyboardkit@techhub.social
- Twitter: @getkeyboardkit
- E-mail: info@getkeyboardkit.com
KeyboardKit is available under the MIT license. See the LICENSE file for more info.