Skip to content

Latest commit

 

History

History
361 lines (204 loc) · 11.7 KB

README.md

File metadata and controls

361 lines (204 loc) · 11.7 KB

KeyboardKit

Version Platform Swift 5.3 MIT License Twitter: @danielsaidi

About KeyboardKit

KeyboardKit helps you build custom keyboard extensions for iOS and iPadOS, using SwiftUI.

KeyboardKit extends the native keyboard extension APIs to provide you with a lot more functionality. It also provides you with views and utils to help you mimic native keyboards.

The end result can look something like this...or entirely different:

KeyboardKit is flexible and doesn't force your keyboard to look or behave in a certain way. You can go with a standard system keyboard, tweak the standard design a little (or a lot) or use completely custom views or designs.

If you're new to iOS keyboard extensions, this great guide will help you get started. You can also have a look at the demo app for inspiration.

Installation

The best way to add KeyboardKit to your app is to use the Swift Package Manager:

https://github.com/KeyboardKit/KeyboardKit.git

You can add the library to the main app, the keyboard extension and any other targets that needs it.

Getting started

Once KeyboardKit is added to your project, you can start using it in your application and keyboard extension.

Read more here

Documentation

The KeyboardKit documentation contains extensive information, code examples etc. and makes it easy to overview the various parts of the library.

You can either download the documentation or build it directly in Xcode, using Product/Build Documentation.

🇸🇪 Localization

KeyboardKit is localized in the following languages:

  • 🇺🇸 English

  • 🇦🇱 Albanian

  • 🇦🇪 Arabic

  • 🇧🇾 Belarusian

  • 🇨🇿 Czech

  • 🇭🇷 Croatian

  • 🇩🇰 Danish

  • 🇳🇱 Dutch

  • 🇧🇪 Dutch (Belgium)

  • 🇬🇧 English (UK)

  • 🇺🇸 English (US)

  • 🇪🇪 Estonian

  • 🇫🇮 Finnish

  • 🇫🇷 French

  • 🇧🇪 French (Belgium)

  • 🇨🇭 French (Switzerland)

  • 🇩🇪 German

  • 🇦🇹 German (Austria)

  • 🇨🇭 German (Switzerland)

  • 🇬🇷 Greek

  • 🇭🇺 Hungarian

  • 🇮🇸 Icelandic

  • 🇮🇪 Irish

  • 🇮🇹 Italian

  • 🇹🇯 Kurdish Sorani

  • 🇱🇻 Latvian

  • 🇱🇹 Lithuanian

  • 🇳🇴 Norwegian

  • 🇮🇷 Persian

  • 🇵🇱 Polish

  • 🇵🇹 Portuguese

  • 🇧🇷 Portuguese (Brazil)

  • 🇷🇴 Romanian

  • 🇷🇺 Russian

  • 🇸🇮 Slovenian

  • 🇪🇸 Spanish

  • 🇸🇪 Swedish

  • 🇹🇷 Turkish

  • 🇺🇦 Ukrainian

KeyboardKit also supports localized keyboards, where the keyboard layout, callout actions etc. behave just like they should for a certain locale.

Read more here

Features

Even though KeyboardKit contains a lot of features, you can use its' extensions and views alone to simplify working with keyboard extensions. For instance, there are a bunch of UITextDocumentProxy extensions that make your life easier, and views that don't require you to use the rest of the library.

Check out the demo apps and source code for examples and more information.

💥 Actions

KeyboardKit comes with many keyboard-specific actions, like character inputs, emojis, backspace, space, newline, image etc. You can even create your own actions.

Read more here

🎨 Appearance

KeyboardKit comes with an appearance engine that lets you easily style your keyboards.

Read more here

🔊 Audio

KeyboardKit defines system audio types and ways to play them.

Read more here

💡Autocomplete

KeyboardKit can present autocomplete suggestions as users type.

Read more here

🗯 Callouts

KeyboardKit lets you show input callouts as users type, as well as action callouts with alternate actions for the currently pressed key.

Read more here

😊 Emojis

KeyboardKit defines emojis and emoji categories that you can use in your own keyboards.

Read more here

🧩 Extensions

KeyboardKit provides a bunch of extensions to native types.

Read more here

⌨️ External Keyboards

KeyboardKit lets you detect whether or not an external keyboard is used.

Read more here

👋 Feedback

KeyboardKit keyboards can give audio and haptic feedback as users type.

Read more about audio feedback and haptic feedback.

👆 Gestures

KeyboardKit comes with keyboard-specific gestures that you can use in your own keyboards.

Read more here

👋 Haptics

KeyboardKit defines haptic feedback types and ways to trigger them.

Read more here

🔤 Input

KeyboardKit comes with an input set engine that make it easy to create alphabetic, numeric and symbolic keyboards in different languages.

Read more here

⌨️ Keyboard Layouts

KeyboardKit comes with a layout engine that makes it easy to create specific keyboard layouts for various devices, orientations and locales.

Read more here

💱 Keyboard Types

KeyboardKit comes with many different keyboard types, like alphabetic, numeric, symbolic, emoji etc. You can even create your own types.

Read more here

🌐 Locales

KeyboardKit defines keyboard-specific locales and provides localized content for the supported locales.

Read more here

👁 Previews

KeyboardKit defines a bunch of preview-specific types that simplify previewing keyboard views in SwiftUI.

Read more here

➡️ Proxy

KeyboardKit defines a bunch of extensions to UITextDocumentProxy and ways to route text to other sources.

Read more here

⬅️ RTL

KeyboardKit supports RTL (right-to-left) locales, but your extension need to be configured to support it.

Read more here

🎨 Styles

KeyboardKit defines a bunch of styles that simplify customizing the look of various keyboard components and buttons.

Read more here

🖼 Views

KeyboardKit comes with a bunch of keyboard-specific views, like keyboards, toobars, buttons etc

Read more here

KeyboardKit Pro

KeyboardKit Pro is a license-based extensions that unlocks pro features, such as additional locales, autocomplete, convenience views etc. It can save you a lot of time when developing more complex keyboards.

KeyboardKit Pro is also a way to support this project, which is otherwise completely free and developed by a single person (with great help from the community). If you appreciate this project, consider going Pro.

Note that KeyboardKit Pro extends this library by using the same extension points as is available to everyone.

Go Pro here!

Demo Application

This repository contains a demo app that lets you try out KeyboardKit and KeyboardKit Pro.

The standard keyboard demonstrates different system keyboards, like alphabetical (lowercased, uppercased and capslocked), numerical, symbols and emojis.

The "RTL" keyboard is the same as the standard keyboard, but with its Info.plist specifying RTL and an RTL primary language.

The demo app is not intended to be production ready, but rather to give you inspiration. Just keep in mind that your keyboards can look anyway you like. They don't have to look like a system keyboard.

To run the demo app, open and run the Demo/Demo.xcodeproj project, then enable the keyboards under system settings. Enable full access to support all features, like audio and haptic feedback.

Contact

KeyboardKit is developed by Daniel Saidi, with great help from the community.

Feel free to reach out if you have questions or if you want to contribute in any way:

Sponsors and Clients

KeyboardKit is free, but please consider sponsoring the project to keep it going, if you find it useful.

This project is proudly sponsored by the following companies:

Oribi Logo Anomaly Software Logo Milo Creative Logo phonetoroam Logo

You can support KeyboardKit by sponsoring the project on GitHub Sponsors, signing up for a KeyboardKit Pro license or hiring me for consultation.

License

KeyboardKit is available under the MIT license. See the LICENSE file for more info.