Swiftpack.co - KeyboardKit/KeyboardKitPro as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by KeyboardKit.
KeyboardKit/KeyboardKitPro 7.9.4
KeyboardKit Pro helps you create custom keyboards for iOS and iPadOS.
โญ๏ธ 70
๐Ÿ•“ 10 hours ago
iOS macOS watchOS tvOS
.package(url: "https://github.com/KeyboardKit/KeyboardKitPro.git", from: "7.9.4")

KeyboardKit Logo

Version Swift 5.6 Swift UI MIT License Twitter: @@getkeyboardkit Mastodon: @keyboardkit@techhub.social

About KeyboardKit Pro

KeyboardKit helps you create custom keyboards for iOS and iPadOS, using Swift and SwiftUI. It extends Apple's native keyboard APIs and provides you with more functionality.

KeyboardKit Pro extends KeyboardKit with pro features, such as localized input sets, layouts and callout actions, autocomplete, dictation, proxy extensions, emoji skintone and version info, etc.

KeyboardKit supports iOS 14, macOS 11, tvOS 14 and watchOS 7.


KeyboardKit Pro requires a commercial license. Licenses can be purchased from the website or from Gumroad.


KeyboardKit Pro can be installed with the Swift Package Manager:


KeyboardKit Pro only has to be added to the main app target.

Supported Locales

KeyboardKit is localized in 60+ keyboard-specific locales:

๐Ÿ‡ฆ๐Ÿ‡ฑ ๐Ÿ‡ฆ๐Ÿ‡ช ๐Ÿ‡ฆ๐Ÿ‡ฒ ๐Ÿ‡ง๐Ÿ‡พ ๐Ÿ‡ง๐Ÿ‡ฌ ๐Ÿ‡ฆ๐Ÿ‡ฉ ๐Ÿณ๏ธ ๐Ÿ‡ญ๐Ÿ‡ท ๐Ÿ‡จ๐Ÿ‡ฟ ๐Ÿ‡ฉ๐Ÿ‡ฐ
๐Ÿ‡ณ๐Ÿ‡ฑ ๐Ÿ‡ง๐Ÿ‡ช ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡ฌ๐Ÿ‡ง ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡ช๐Ÿ‡ช ๐Ÿ‡ซ๐Ÿ‡ด ๐Ÿ‡ต๐Ÿ‡ญ ๐Ÿ‡ซ๐Ÿ‡ฎ ๐Ÿ‡ซ๐Ÿ‡ท
๐Ÿ‡ง๐Ÿ‡ช ๐Ÿ‡จ๐Ÿ‡ญ ๐Ÿ‡ฌ๐Ÿ‡ช ๐Ÿ‡ฉ๐Ÿ‡ช ๐Ÿ‡ฆ๐Ÿ‡น ๐Ÿ‡จ๐Ÿ‡ญ ๐Ÿ‡ฌ๐Ÿ‡ท ๐Ÿ‡บ๐Ÿ‡ธ ๐Ÿ‡ฎ๐Ÿ‡ฑ ๐Ÿ‡ญ๐Ÿ‡บ
๐Ÿ‡ฎ๐Ÿ‡ธ ๐Ÿ‡ฎ๐Ÿ‡ฉ ๐Ÿ‡ฎ๐Ÿ‡ช ๐Ÿ‡ฎ๐Ÿ‡น ๐Ÿ‡ฐ๐Ÿ‡ฟ ๐Ÿ‡น๐Ÿ‡ฏ ๐Ÿ‡น๐Ÿ‡ฏ ๐Ÿ‡น๐Ÿ‡ฏ ๐Ÿ‡ฑ๐Ÿ‡ป ๐Ÿ‡ฑ๐Ÿ‡น
๐Ÿ‡ฒ๐Ÿ‡ฐ ๐Ÿ‡ฒ๐Ÿ‡พ ๐Ÿ‡ฒ๐Ÿ‡น ๐Ÿ‡ฒ๐Ÿ‡ณ ๐Ÿ‡ณ๐Ÿ‡ด ๐Ÿ‡ฎ๐Ÿ‡ท ๐Ÿ‡ต๐Ÿ‡ฑ ๐Ÿ‡ต๐Ÿ‡น ๐Ÿ‡ง๐Ÿ‡ท ๐Ÿ‡ท๐Ÿ‡ด
๐Ÿ‡ท๐Ÿ‡บ ๐Ÿ‡ท๐Ÿ‡ธ ๐Ÿ‡ท๐Ÿ‡ธ ๐Ÿ‡ธ๐Ÿ‡ฐ ๐Ÿ‡ธ๐Ÿ‡ฎ ๐Ÿ‡ช๐Ÿ‡ธ ๐Ÿ‡ฐ๐Ÿ‡ช ๐Ÿ‡ธ๐Ÿ‡ช ๐Ÿ‡น๐Ÿ‡ท ๐Ÿ‡บ๐Ÿ‡ฆ

KeyboardKit Pro unlocks localized input sets, layouts and callouts for all locales.


KeyboardKit Pro extends KeyboardKit with a bunch of features:

  • ๐Ÿ’ก Autocomplete - KeyboardKit Pro unlocks a local and a remote autocomplete provider.
  • ๐Ÿ—ฏ Callouts - KeyboardKit Pro unlocks locale-specific callout actions for all locales.
  • ๐ŸŽค Dictation - (BETA) KeyboardKit unlocks a dictation engine that can perform keyboard dictation.
  • ๐Ÿ˜Š Emojis - KeyboardKit Pro unlocks emoji skin tone variants, secondary actions and version information.
  • ๐Ÿ”ฃ Layout - KeyboardKit Pro unlocks locale-specific input sets and keyboard layouts for all locales.
  • โžก๏ธ Proxy Extensions - KeyboardKit Pro unlocks UITextDocumentProxy extensions for reading all text from the proxy.
  • ๐ŸŽจ Styling - KeyboardKit Pro unlocks a theme-based appearance engine with many pre-defined themes.

Getting started

The online documentation has a getting-started guide that helps you get started.

After installing KeyboardKit Pro, just import KeyboardKitPro and make your KeyboardViewController inherit KeyboardInputViewController instead of UIInputViewController:

import KeyboardKitPro

class KeyboardController: KeyboardInputViewController {}

This gives your controller access to additional functionality, such as new lifecycle functions like viewWillSetupKeyboard(), observable state like keyboardContext, services like keyboardActionHandler and much more.

The default KeyboardInputViewController behavior is to setup an English SystemKeyboard. It will then call viewWillSetupKeyboard() when the keyboard view should be created or updated.

If you want to use the default system keyboad with the locales and features that your license unlocks, you can just register your license key:

func viewDidLoad() {
    let license = try? setupPro(withLicenseKey: "your-key")

To set up KeyboardKit Pro with a custom view, you can override viewWillSetupKeyboard() and call setupPro(withLicenseKey:licenseConfiguration:view:) to customize the SystemKeyboard or use a custom view:

class KeyboardViewController: KeyboardInputViewControllerย {

    override func viewWillSetupKeyboard() {
        try? setupPro(
            withLicenseKey: "LICENSE-KEY",
            licenseConfiguration: { license in
                // Use the license as needed here
            view: { controller in
                VStack(spacing: 0) {
                        controller: controller,
                        autocompleteToolbar: .none

The view builder provides an unowned controller reference to avoid reference cycles and memory leaks.

For more information, please see the online documentation and getting-started guide.


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.

Demo Application

The main project repository has a demo app that lets you try out KeyboardKit and KeyboardKit Pro.

  • The main app shows how to display keyboard state, link to system settings, etc.
  • The English keyboard uses KeyboardKit and a SystemKeyboard with a standard, English locale.
  • The Unicode keyboard uses KeyboardKit and a SystemKeyboard with unicode-based input keys.
  • The Custom keyboard uses KeyboardKit and a SystemKeyboard with custom keys, layouts and styles.
  • The Pro keyboard uses KeyboardKit Pro and a SystemKeyboard with all LRT locales, autocomplete etc.

Just open and run the demo app in the Demo folder, 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 open-source and completely free, but you can sponsor this project on GitHub Sponsors, upgrade to [KeyboardKit Pro][Pro] or get in touch for freelance work, paid support etc.


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.


Stars: 70
Last commit: 17 hours ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Release Notes

17 hours ago

This version adjusts things in KeyboardKit Pro.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics