KeyboardKit is a Swift SDK that lets you create fully customizable keyboards with a few lines of code, using SwiftUI.
MIT License
Bot releases are hidden (Show)
This version makes it easier to create a themed style provider, and adds a new .numberPad
keyboard type.
Keyboard.KeyboardType
has a new .numberPad
type.KeyboardStyleProvider.themed
has new convenience apis.KeyboardContext
will now get its initial keyboard type set to the document text proxy's keyboard type.This version adds a new SystemKeyboardBottomRow
component, adds some new actions and fixes a bug.
KeyboardAction
has a new .text
action to insert long text.KeyboardLayout
has a new .bottomRowSystemItemWidth
property.SystemKeyboardComponent
is a new protocol that defines shared typealiases.KeyboardAction.url
is now a system key.SystemKeyboardBottomRow
is a new Pro component.SystemKeyboard
no longer shows the emoji key for insufficient KeyboardKit Pro licenses.This version adjusts an autocomplete behavior.
KeyboardInputViewController
no longer hard resets the autocomplet econtext when the text is empty.KeyboardGesture
has a new .end
gesture, which is used to fix a bug that could cause space drag to never end.This version moves many types into their related namespaces, to make the SDK surface smaller and easier to overview. Since this involves many renamings, the Deprecations
section below only lists deprecated types.
The library has deprecation types to help you migrate to the new type names, so you should not run into any breaking changes when migrating from earlier versions to this one.
The KeyboardState
namespace has been renamed to KeyboardStatus
, since it was often confused with Keyboard.KeyboardState
. Keyboard.KeyboardState
& Keyboard.KeyboardServices
have also been renamed to the shorter Keyboard.State
and Keyboard.Services
, since it reads better in code.
There are new namespaces too. For instance, KeyboardApp
has app-related types, KeyboardFeedback
has feedback-related types, and KeyboardSettings
has settings-related types.
This version also makes it easier to register custom audio & haptic feedback, in a way that requires less or no customizations in the action handler. Just register any custom feedback for any gesture on any action, and it will be triggered by the standard action handler. You can also play URL-based sound effects from custom audio files.
This version also makes the action and input callout bubbles look more native, and adds support for adding an input toolbar between the system keyboard and autocomplete toolbar.
Finally, KeyboardKit Pro makes more locales use the new iPad Pro layout. It also provides a brand new KeyboardApp.HomeScreen
that can be used as an app home screen, and a new KeyboardStatus.Section
that can show all relevant statuses for a keyboard app.
EmojiKeyboard
sub-components are now throwing as well.KeyboardStatus.Label
now uses its style to change icons.@available
deprecations to help adjust your code.Feedback.Audio
has a new customUrl
that can play URL-based audio.Feedback.AudioConfiguration
has new ways to register custom feedback.Feedback.HapticConfiguration
has new ways to register custom feedback.FeedbackContext
has new ways to register custom audio/haptic feedback.KeyboardLayout
has a new copy()
function that creates a mutable copy.KeyboardLayout
has new functions for using and tweaking the bottom row.KeyboardLayout
has a new inputToolbarLayout()
value builder function.KeyboardLayout
has a new functions for getting the total layout height.SystemKeyboard
's service-based initializer now allows a layout override.View
has a new keyboardInputToolbarDisplayMode
modifier for input toolbars.Callouts
now use curves that look a lot more native.Keyboard.Button
no longer has a minimum scale factor.KeyboardApp
is a new namespace for app-related types.KeyboardApp.HomeScreen
is a new app home screen view template.KeyboardLayout.Configuration
now defines number toolbar height.KeyboardFeedback
is a new namespace for feedback-related types.KeyboardSettings
is a new namespace for settings-related types.KeyboardStatus.Label
now uses filled icon variants, by default.KeyboardStyle.StandardProvider
now applies a light weight to backspace.KeyboardStyle.StandardProvider
now applies more adaptive content insets.SystemKeyboard
has been optimized in how it renders the system keyboard.KeyboardApp.HomeScreen
is a new app-specific home screen template.KeyboardStatus
has a new Section
view that can display keyboard statuses.KeyboardTextField
and KeyboardTextView
can now trigger a custom onSubmit
function.SystemKeyboard
now has an addNumberToolbar
parameter to add a number toolbar in KeyboardKit Pro.Catalan
, Czech
, Danish
, Faroese
, Finnish
, Georgian
, German
, German (Austria)
, German (Switzerland)
, Greek
, Hawaiian
, Icelandic
, Inari Sรกmi
, Macedonian
, Maltese
, Mongolian
, Northern Sรกmi
, Norwegian
, Russian
, Serbian
, Slovak
, Turkish
, Ukrainian
.Callouts.ButtonArea
has been deprecated.Callouts.Curve
has been deprecated.Emoji.Grid
has been moved to EmojiKit
.KeyboardStyleProvider.buttonContentBottomMargin
is no longer used.This version moves may types into namespaces, to make the SDK smaller and easier to overview. Since this involves many renamings, the Deprecations
section only lists deprecated types. The library has deprecation types to help you migrate to the new type names.
The KeyboardState
namespace is renamed to KeyboardStatus
, since it was often confused with Keyboard.KeyboardState
. Keyboard.KeyboardState
& Keyboard.KeyboardServices
are also renamed to the shorter Keyboard.State
and Keyboard.Services
.
KeyboardKit Pro makes more locales use the iPad Pro layout, and has a new KeyboardApp.HomeScreen
that can be used as a keyboard app home screen. There is also a new URL-support for audio feedback. Only your imagination can now stop you from creating crazy sound boards.
EmojiKeyboard
sub-components are now throwing as well.KeyboardStatus.Label
now uses its style to change icons.@available
deprecations to help adjust your code.Feedback.Audio
has a new customUrl
that can play URL-based audio.Feedback.AudioConfiguration
has new ways to register custom feedback.Feedback.HapticConfiguration
has new ways to register custom feedback.KeyboardApp
is a new namespace for app-related types.KeyboardApp.HomeScreen
is a new app home screen view template.KeyboardFeedback
is a new namespace for feedback-related types.KeyboardSettings
is a new namespace for settings-related types.KeyboardStatus.Label
now uses filled icon variants, by default.KeyboardStyle.StandardProvider
now applies a light weight to backspace.KeyboardApp.HomeScreen
screen template view.Catalan
, Czech
, Danish
, Faroese
, Finnish
, Georgian
, German
, German (Austria)
, German (Switzerland)
, Greek
, Hawaiian
, Icelandic
, Inari Sรกmi
, Macedonian
, Maltese
, Mongolian
, Northern Sรกmi
, Norwegian
, Russian
, Serbian
, Slovak
, Turkish
, Ukrainian
.Emoji.Grid
has been moved to EmojiKit
.This version moves many types into namespaces, to make the SDK smaller and easier to overview. It also renames some types to make the naming more intuitive. Since this involves many renamings, the Deprecations
section only lists deprecated types.
The KeyboardState
namespace has been renamed to KeyboardStatus
, since it was often confused with Keyboard.KeyboardState
. Keyboard.KeyboardState
& Keyboard.KeyboardServices
are also renamed to the shorter Keyboard.State
and Keyboard.Services
.
EmojiKeyboard
sub-components are now throwing as well.KeyboardStatus.Label
now uses its style to change icons.@available
deprecations to help adjust your code.Feedback.Audio
has a new customUrl
that can play URL-based audio.Feedback.AudioConfiguration
has new ways to register custom feedback.Feedback.HapticConfiguration
has new ways to register custom feedback.KeyboardApp
is a new namespace for app-related types.KeyboardApp.HomeScreen
is a new app home screen view template.KeyboardFeedback
is a new namespace for feedback-related types.KeyboardSettings
is a new namespace for settings-related types.KeyboardStatus.Label
now uses filled icon variants, by default.KeyboardStyle.StandardProvider
now applies a light weight to backspace.KeyboardApp.HomeScreen
screen template view.Catalan
, Czech
, Danish
, Faroese
, Finnish
, Georgian
, German
, German (Austria)
, German (Switzerland)
, Greek
, Hawaiian
, Icelandic
, Inari Sรกmi
, Macedonian
, Maltese
, Mongolian
, Northern Sรกmi
, Norwegian
, Russian
, Serbian
, Slovak
, Turkish
, Ukrainian
.Emoji.Grid
has been moved to EmojiKit
.This version adjusts licenses for KeyboardKit Pro.
This version bumps to Swift 5.9 and adds support for visionOS.
This version renames some views and refactors view styling to be injected with view modifiers instead of with the initializer.
This version also convers many emoji features to open-source variants, and no longer requires a license to use these features.
Views that require complex style resolving still use the style provider concept.
.keyboardButtonStyle
only injects style with the environment.Emoji
types are no longer throwing. If you use them, remove try
.Emoji
keyboard views no longer apply the init style. Use the view modifier instead.Autocomplete.ToolbarStyle
has support for more styling.Autocomplete.ToolbarItemStyle
has support for more styling.DeviceType
defines a new .vision
device to support visionOS.Keyboard.Background
implements View
and can be used as a plain view.Keyboard.Toolbar
is a new view that applies a min height to its content.Keyboard.ToolbarStyle
is a new style that can be applied with a view modifier.StandardKeyboardBehavior
modifies some functions to be open
to modifications.AutocompleteToolbar
has been renamed to Autocomplete.Toolbar
.InputSet.standardNumeric
has been renamed to InputSet.numeric
.InputSet.standardSymbolic
has been renamed to InputSet.symbolic
.KeyboardButton.Button
and all related views have been moved to Keyboard
.KeyboardStyle
styles have all been renamed, e.g. Autocomplete.ToolbarStyle
.NextKeyboardButton
has been moved and renamed to Keyboard.NextKeyboardButton
..keyboardButtonStyle
has been renamed to .keyboardButton
..withEnvironment(fromState:)
has been renamed to .keyboardState(_:)
..withEnvironment(fromController:)
has been renamed to .keyboardState(from:)
.Emoji
functions and types are moved to the base library.Dictation.BarVisualizer
now applies more things with its style.Dictation.BarVisualizer
now applies style with the environment.Emoji
renames a lof of types & categories, and many things non-throwing.Emoji.Picker
has been deprecated in favor of the EmojiKit open-source view.LazyHGrid
/LazyVGrid
emoji initializers are replaced by the new Emoji.Grid
.KeyboardButton
has been deprecated and all views have been moved to Keyboard
.KeyboardStyle.AutocompleteToolbarItemBackground
is replaced by Autocomplete.ToolbarItem
.Autocomplete.ToolbarItem
nested views are replaced by just using Autocomplete.ToolbarItem
.