KeyboardKit is a Swift SDK that lets you create fully customizable keyboards in a few lines of code, using SwiftUI.
KeyboardKit extends Apple's native APIs and provides you with a lot more functionality. It lets you mimic the native iOS keyboard and tweak its style and behavior, or create completely custom keyboards.
Custom iOS keyboard extensions can be used with all other apps that support text input. It's the only way for your product, brand or technology to directly interact with other apps on iOS. Don't miss out!
KeyboardKit Pro extends KeyboardKit with pro features like fully localized keyboards & services, autocomplete & autocorrect, an emoji keyboard, AI supporting capabilities, themes, dictation, and much, much more. Go pro today to take your keyboard to the next level.
KeyboardKit Pro is closed source and requires a commercial license.
Licenses can be purchased from the website or from Gumroad.
KeyboardKit Pro can be installed with the Swift Package Manager:
https://github.com/KeyboardKit/KeyboardKitPro.git
Unlike KeyboardKit, KeyboardKit Pro is a binary target and must only be linked to the app target.
After installing KeyboardKit Pro, just make your KeyboardViewController
inherit KeyboardInputViewController
instead of UIInputViewController
:
import KeyboardKitPro
class KeyboardController: KeyboardInputViewController {}
This gives your controller access to new lifecycle functions like viewWillSetupKeyboard
, observable state like state.keyboardContext
, services like services.actionHandler
, and much more.
If you just want to use the default SystemKeyboard
view, which mimics a native iOS keyboard, you only have to register your license key on launch:
func viewDidLoad() {
super.viewDidLoad()
let license = try? setupPro(
withLicenseKey: "your-key",
locales: [...], // Define which locales to use
) { license in
// Make any license-based configurations here
}
}
To replace or customize the default SystemKeyboard
, just override viewWillSetupKeyboard
and call setupPro
with a view
builder:
class KeyboardViewController: KeyboardInputViewControllerย {
override func viewWillSetupKeyboard() {
super.viewWillSetupKeyboard()
try? setupPro(
withLicenseKey: "your-key",
locales: [...], // Define which locales to use
licenseConfiguration: { license in
// Make any configurations and service adjustments here
},
view: { [weak self] controller in // <-- Use [weak self] or [unowned self] if you need self here.
SystemKeyboard(
state: controller.state,
services: controller.services,
buttonContent: { $0.view },
buttonView: { $0.view },
emojiKeyboard: { $0.view },
toolbar: { _ in MyCustomToolbar() }
)
}
)
}
}
For more information, please see the getting started guide.
KeyboardKit supports 68 keyboard-specific locales:
๐ฆ๐ฑ ๐ฆ๐ช ๐ฆ๐ฒ ๐ง๐พ ๐ง๐ฌ ๐ฆ๐ฉ ๐ณ๏ธ ๐ญ๐ท ๐จ๐ฟ ๐ฉ๐ฐ
๐ณ๐ฑ ๐ง๐ช ๐บ๐ธ ๐ฌ๐ง ๐บ๐ธ ๐ช๐ช ๐ซ๐ด ๐ต๐ญ ๐ซ๐ฎ ๐ซ๐ท
๐จ๐ฆ ๐ง๐ช ๐จ๐ญ ๐ฌ๐ช ๐ฉ๐ช ๐ฆ๐น ๐จ๐ญ ๐ฌ๐ท ๐บ๐ธ ๐ฎ๐ฑ
๐ญ๐บ ๐ฎ๐ธ ๐ณ๏ธ ๐ฎ๐ฉ ๐ฎ๐ช ๐ฎ๐น ๐ฐ๐ฟ ๐น๐ฏ ๐น๐ฏ ๐น๐ฏ
๐ฑ๐ป ๐ฑ๐น ๐ฒ๐ฐ ๐ฒ๐พ ๐ฒ๐น ๐ฒ๐ณ ๐ณ๏ธ ๐ณ๐ด ๐ณ๐ด ๐ฎ๐ท
๐ต๐ฑ ๐ต๐น ๐ง๐ท ๐ท๐ด ๐ท๐บ ๐ท๐ธ ๐ท๐ธ ๐ธ๐ฐ ๐ธ๐ฎ ๐ช๐ธ
๐ฆ๐ท ๐ฒ๐ฝ ๐ฐ๐ช ๐ธ๐ช ๐น๐ท ๐บ๐ฆ ๐บ๐ฟ ๐ด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ
KeyboardKit provides a basic keyboard layout and callout actions, whileย KeyboardKit Pro provides localized layouts, callouts and behaviors for all supported locales.
KeyboardKit Pro extends KeyboardKit with Pro features:
- โจ๏ธ Essentials - KeyboardKit Pro unlocks more essential tools, system keyboard previews, etc.
- ๐ฅ Actions - KeyboardKit Pro auto-registers the most recently used emojis.
- ๐ค AI - KeyboardKit Pro unlocks features that are needed for AI.
- ๐ฑ App - KeyboardKit Pro unlocks app-specific screens & views.
- ๐ก Autocomplete - KeyboardKit Pro unlocks on-device & remote autocomplete.
- ๐ฏ Callouts - KeyboardKit Pro unlocks localized callouts for all locales.
- ๐ค Dictation - KeyboardKit Pro can perform dictation from the keyboard.
- ๐ Emojis - KeyboardKit Pro unlocks a powerful emoji keyboard.
- โจ๏ธ External - KeyboardKit Pro can detect if an external keyboard is connected.
- ๐ Feedback - KeyboardKit Pro unlocks tools for toogling feedback on & off.
- ๐ Host - KeyboardKit Pro can identify specific host applications.
- ๐ฃ Layout - KeyboardKit Pro unlocks localized layouts for all locales.
- ๐ Localization - KeyboardKit Pro unlocks 68 locale-specific services and system keyboards.
- ๐ Previews - KeyboardKit Pro unlocks system keyboard and theme previews.
- โก๏ธ Proxy - KeyboardKit Pro unlocks ways for
UIKit/UITextDocumentProxy
to read the full document. - ๐ Text - KeyboardKit Pro unlocks tools to let you type within the keyboard.
- ๐ญ Themes - KeyboardKit Pro unlocks a theme engine with many pre-defined themes.
Every article in the documentation describes in detail what KeyboardKit Pro unlocks for that part of the SDK.
The online documentation has more information, articles, code examples, etc.
The KeyboardKit repository has a demo app that shows how to display keyboard state, link to system settings, etc.
The demo app has two demo keyboards:
Keyboard
uses KeyboardKit and a customizedSystemKeyboard
.KeyboardPro
uses KeyboardKit Pro and enables all locales, autocomplete, themes, etc.
Just open and run the demo app in the Demo
folder, then enable the keyboards under System Settings. Note that you need to enable full access for some features to work.
If you want to try KeyboardKit Pro without having to write any code or build the demo app from Xcode, there is a KeyboardKit app in the App Store, that lets you try out many pro features.
Feel free to reach out if you have questions or if you want to contribute in any way:
- Website: keyboardkit.com
- Mastodon: @keyboardkit@techhub.social
- Twitter: @getkeyboardkit
- E-mail: info@keyboardkit.com
KeyboardKit Pro is closed source. See the LICENSE file for more info.
Commercial licenses can be purchased from the website or from Gumroad.