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 6.6.0
KeyboardKit Pro extends KeyboardKit with pro features.
⭐️ 42
🕓 1 week ago
iOS macOS watchOS tvOS
.package(url: "https://github.com/KeyboardKit/KeyboardKitPro.git", from: "6.6.0")

Version Platform Swift 5.5 Closed-Source License Twitter: @getkeyboardkit

About KeyboardKit Pro

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 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 License

KeyboardKit Pro requires a commercial license to be used.

Licenses can be purchased from the website or from Gumroad.

Supported Platforms

KeyboardKit Pro supports iOS 13, macOS 11, tvOS 13 and watchOS 6.

Although KeyboardKit Pro builds on all platform, some features are unavailable on some 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.

Getting started

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.

Note that extensions to native types are not included in this documentation. Future versions of this library will refactor the extensions in a way that makes them appear in the documentation.

✨ Features

KeyboardKit is localized in 50+ keyboard-specific locales (read more):

🇺🇸 🇦🇱 🇦🇪 🇧🇾 🇧🇬 🇦🇩 🇭🇷 🇨🇿 🇩🇰 🇳🇱
🇧🇪 🇬🇧 🇺🇸 🇪🇪 🇫🇴 🇵🇭 🇫🇮 🇫🇷 🇨🇭 🇬🇪
🇩🇪 🇦🇹 🇬🇷 🇭🇺 🇮🇸 🇮🇪 🇮🇹 🇹🇯 🇱🇻 🇱🇹
🇲🇰 🇲🇹 🇲🇳 🇳🇴 🇮🇷 🇵🇱 🇵🇹 🇧🇷 🇷🇴 🇷🇺
🇷🇸 🇸🇰 🇸🇮 🇪🇸 🇰🇪 🇸🇪 🇹🇷 🇺🇦 🇺🇸 🇧🇪

Besides the core features, KeyboardKit Pro extends KeyboardKit with a bunch of pro features:

  • 💡 Autocomplete - KeyboardKit Pro unlocks an on-device autocomplete provider as well as an api-based one.
  • 🗯 Callouts - KeyboardKit Pro unlocks locale-specific callout actions for all locales above.
  • 😊 Emojis - KeyboardKit Pro unlocks skin tone variants and secondary callout actions for emojis.
  • 🔤 Input Sets - KeyboardKit Pro unlocks locale-specific input sets for all locales above.
  • ➡️ Proxy - KeyboardKit Pro unlocks UITextDocumentProxy extensions for getting all text from the proxy.
  • 🖼 Views - KeyboardKit Pro unlocks additonal views that simplify building great keyboards.

KeyboardKit Pro lets you create fully localized system keyboards with a single line of code and makes it easy to add more information to the main app.

Demo Application

This project contains a Demo folder with a demo app that lets you try out KeyboardKit Pro.

The demo app supports 50+ locales, LTR and RTL locales, autocomplete etc. It has two keyboards:

  • System LTR uses a SystemKeyboard with all left-to-right locales.
  • System RTL uses a SystemKeyboard with all right-to-left locales.

Just open and run the project, 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 Icon phonetoroam Icon Vitalis Icon LetterKey Icon Anomaly Software Icon Milo Creative Icon

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.


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

Release Notes

1 week ago

This version adds a brand new gesture engine, which aims to make typing feel a lot more like in the native keyboards.

This version also adds new emoji capabilities, such as a unicode id and name, as well as support for skin tone variants (Pro feature). These new capabilities are used by the emoji keyboards, which can now show input callouts and skin tone variants when you type on an emoji keyboard.

How to disable the new gesture engine

Since typing is such an important part of this library, the new gesture engine can be toggled off if you find problems with it:

FeatureToggle.shared.toggleFeature(.newButtonGestureEngine, .off)

Note that the new gesture engine is only available in iOS 14+. Devices running iOS 13 will still get the current gesture engine, even if you toggle on this feature.

👑 KeyboardKit Pro

  • Emoji implements the new ProEmojiInfo protocol.
  • ProCalloutActionProvider now returns skin tone variant actions for emojis.
  • ProEmojiInfo is a new protocol for Pro emoji information.
  • ProEmojiInfo has hasSkinToneVariants, neutralSkinToneVariant, skinToneVariants and skinToneVariantsActions properties.

✨ New features

  • ActionCalloutContext.shared is now public.
  • Emoji has new unicodeIdentifier and unicodeName properties.
  • EmojiKeyboard and EmojiCategoryKeyboard now supports keyboard gestures and skin tone callouts.
  • EmojiKeyboard has a new applyGestures parameter, that you can set to true to apply standard keyboard gestures.
  • EmojiKeyboard has a new standardKeyboardActionHandler property.
  • EmojiKeyboardItem is a new view for rendering a keyboard item view.
  • GestureButton is a new view that lets you handle many different gestures with a single button.
  • InputCalloutContext.shared is now public.
  • InputCalloutContext has a new, configurable minimumVisibleDuration property that controls the minimum visibility of the input callout.
  • KeyboardAction has a new image property.
  • KeyboardAction has a new isEmojiAction property.
  • SpaceCursorDragGestureHandler is now open to inheritance.

💡 Behavior changes

  • EmojiKeyboard uses smaller emojis for standard iPad in portrait.
  • InputCallout no longer allows hit testing.
  • KeyboardAction.backspace now triggers on press instead of tap.
  • KeyboardGestures now has private state to avoid press gesture problems when providing a constant binding.
  • SystemKeyboardButtonRowItem now avoids applying a negative width.
  • View+KeyboardGestures now render a plain button that triggers the press, release and tap action on tvOS.

🐛 Bug fixes

  • KeyboardGestures now use internal state to avoid problems when passing in a constant binding.
  • LocaleProvider now wraps Swift 5.7 code in a compile version version check.
  • SystemKeyboardButtonRowItem now protects itself against getting a negative width.
  • Words with an autocompleting autocomplete suggestion will no longer autocomplete when ending a space cursor drag on them.

🗑 Deprecations

  • KeyboardAction .isShift has been renamed to isShiftAction.
  • KeyboardAction .isUppercaseShift has been renamed to isUppercasedShiftAction.
  • KeyboardImageButton has been deprecated and will be removed in KeyboardKit 7.
  • SystemAudio types have been renamed to AudioFeedback to make the concept match haptic feedback types.
  • SystemAudio play has been renamed to trigger to make it match the haptic feedback trigger.
  • SystemAudioPlayer types have been renamed to SystemAudioEngine to make the concept match other feedback engines.
  • View+KeyboardGestures no longer need a keyboard context.

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