KeyboardKit helps you create custom keyboard extensions for iOS and ipadOS.
KeyboardKit provides you with a rich set of tools and actions, haptic and audio feedback, input sets, layouts etc. and lets you create keyboards with characters, numbers, symbols, emojis, images or entirely custom logic.
You can create native looking keyboards like the example below, or completely custom ones:
If you're new to iOS keyboard extensions, this great guide can help you get started. You can also have a look at the demo apps for examples on how to use this library.
https://github.com/danielsaidi/KeyboardKit.git
target 'MyApp' do
pod 'KeyboardKit'
end
target 'MyKeyboard' do
pod 'KeyboardKit'
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'No'
end
end
endWith KeyboardKit, you should inherit KeyboardInputViewController instead of UIInputViewController. It provides you with many tools that helps you build custom keyboard extension.
KeyboardKit supports both UIKit and SwiftUI, so you can pick the option that suits your needs best.
KeyboardKit contains a rich set of tools to create UIKit-based keyboards. Read more here.
You can also follow this tutorial.
SwiftUI is the main focus going forward, but UIKit support will be around and be improved if needed.
KeyboardKit can be extended with KeyboardKitSwiftUI to create SwiftUI-based keyboards. Read more here.
You can also follow this tutorial.
SwiftUI is the main focus going forward, and will be the main technology from version 4.0.
KeyboardKit supports many different keyboard actions, like character inputs, emoji inputs, backspace, newline, space, image etc. You can even create your own, custom actions.
KeyboardKit supports many different keyboard types, like alphabetic, numeric, symbolic, emoji etc. You can even create your own, custom keyboard types.
KeyboardKit provides you with locale-specific input sets, which makes it easy to create alphabetic, numeric and symbolic keyboards in many languages.
KeyboardKit comes with a set of locale-specific input sets for e.g. English, German, Italian and Swedish.
KeyboardKit can combine an input set with surrounding actions to create a keyboard layout, which is the total set of actions on a keyboard.
KeyboardKit comes with a set of locale and device-specific keyboard layouts for iPhones and iPads.
KeyboardKit supports autocomplete and can present autocomplete suggestions to users as they type.
KeyboardKit supports haptic feedback and can give users haptic feedback as they type.
KeyboardKit supports audio feedback and can give users audio feedback as they type.
KeyboardKit comes with many keyboard-specific extensions. Check out the demo apps and source code for examples and more information.
This repository contains two demo apps that demonstrate different keyboard types, like alphabetical (lower/uppercased and caps locked), numerical, symbols, emojis and images.
KeyboardKitDemoKeyboardusesUIKitto implement various keyboards that mimics system keyboards.KeyboardKitDemoKeyboard_SwiftUIusesSwiftUIto implement the same keyboards in another way.
Since KeyboardKitSwiftUI is still under development, the SwiftUI demo app lacks a lot of functionality that the UIKit app supports.
To run the demo app, open and run the KeyboardKit.xcodeproj project, then enable the keyboards under system settings. Don't forget to enable full access to support all 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: daniel.saidi@gmail.com
- Twitter: @danielsaidi
- Web site: danielsaidi.com
KeyboardKit is proudly supported by:
Your company can support KeyboardKit by either sponsoring the project on GitHub Sponsors or by paying for consultation. I'ld be happy to help you out with your keyboard needs.
KeyboardKit is available under the MIT license. See LICENSE file for more info.


