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 visible (Hide)
Welcome to KeyboardKit 8.0 - a massive update to the KeyboardKit SDK!
KeyboardKit 8.0 is all about cleaning up the library to make it better structured and easier to use.
This release removes previously deprecated code, moves types into namespaces, and removes low-value utilities, including types solely used for DocC exposure (since this will be supported in future Xcode 15 builds).
Central types like SystemKeyboard
are easier to use. Passing state and services instead of a controller reduces the risk for memory leaks. It also no longer needs a width, but will take up as much space as it needs.
These updates has helped enabling new features, like fading the keyboard buttons while moving the cursor with space and other quality of life improvements and fixes. Accessibility has been drastically improved and the emoji keyboard redesigned.
Most emoji features are now Pro features, including the emoji keyboard. The SystemKeyboard
automatically removes the emoji key if no emoji keyboard is available.
The documentation has been extensively updated to provide more information and code examples. Please report any inconsistencies found, as many changes have been made.
I hope that you will love this major update to KeyboardKit!
If you're a KeyboardKit 7 user, the best way to migrate to KeyboardKit 8 is to first upgrade to the last available 7.9 version. This version contains deprecations that helps you prepare for some of the changes in KeyboardKit 8.
As you then upgrade to KeyboardKit 8, the 8.0 release has many TEMPORARY deprecations to assist migration from KeyboardKit 7. These temporary deprecations will be removed in 8.1.
You may run into some breaking changes, since there are some type changes that can't be handled by these deprecations. I have tried to keep these to a minimum, but see the breaking changes section below if you run into any problems.
Here's a list of some things that may be important to know
KeyboardInputViewController
has moved state properties into a state
property.KeyboardInputViewController
has moved service properties into a services
property.StandardKeyboardActionHandler
no longer remembers tapped emojis. This is done with the pro handler.SystemKeyboard
provides MUCH easier customization, but requires explicit view builders.SystemKeyboard
now hides the emoji
keyboard key if emojiKeyboard
is an EmptyView
.SystemKeyboard
no longer has an emoji keyboard by deafult, since it's now a Pro feature.SystemKeyboard
no longer auto-hides the toolbar. You can do this in the toolbar
builder.InputSetBasedKeyboardLayoutProvider
is a new provider.KeyboardAction
now has a standardAccessibilityLabel
.KeyboardAction.emoji
can now be created with a string.KeyboardActionHandler
now handles autocomplete suggestions.KeyboardButton
now has edgeInsets
and an isPressed
binding.KeyboardContext
has proxy properties that mirror the controller.KeyboardInputViewController
has a new setupProError
property.KeyboardLayout.Item
has a new width(forRowWidth:inputWidth:)
function.KeyboardLocale
has new initializer that supports fuzzy name initialization.KeyboardLocale
has new, convenient collection extensions to get locales.KeyboardStyle.Background
now supports specifying images in more ways.KeyboardStyle.Background
now supports specifying the image content mode.KeyboardStyle.Button
now supports background color AND background style.KeyboardStyle.EmojiKeyboard
has a lot more configuration parameters now.SpaceDragGestureHandler
properties are now mutable to allow customizations.SystemKeyboard
has new view builders to make it MUCH easier to customize it.SystemKeyboard
now fades out the buttons when a space cursor drag is active.StandardKeyboardActionHandler
can now be created on all supported platforms.StandardKeyboardActionHandler
has a new emojiRegistration
property.StandardKeyboardActionHandler
has a new tryRegisterEmoji(after:on:)
.StandardKeyboardActionHandler
has a new tryPerformAutocomplete(after:on:)
.StandardKeyboardStyleProvider
now adjusts styles when a space drag is active.View.keyboardButton
supports custom insets and applies a menu to nextLocale
.View.keyboardButton
applies accessibility labels for actions that define them.View.keyboardButton
is a new extension that applies both a style and gestures.View.keyboardCalloutContainer
is a new extension that will apply both callouts.View.keyboardLayoutItemSize
is a new extension that applies a layout item size.AutocompleteProvider
is now async.EmojiKeyboard
uses the standard context style as default.Gesture.KeyboardButtonGestures
no longer blocks space releases.InputSet
has been converted to a struct. All subsets are removed.KeyboardAction
no longer defines a default .nextKeyboard
action.KeyboardController
has fewer functions, since it's not used as much.KeyboardInputViewController
is no longer used to insert suggestions.SystemKeyboard
no longer needs you to provide it with an explicit width.SystemKeyboard
now guides you to use the controller-based setup function.KeyboardInputViewController
textDidChange
performs operations after a delay.EmojiKeyboard
has a new state/services initializer.EmojiKeyboard
has menu icons that look more native.Emojis.Categories
filters out all unavailable emojis.Emojis.Version
has more ways to handle emoji versions.ExternalKeyboardContext
class is now a Pro feature.FeedbackToggle
parameter is renamed to configuration.FullDocumentContextReader
has been removed (use proxy).KeyboardTextField
& KeyboardTextView
are now Pro features.LocalAutocompleteProvider
autocorrects i
to I
in English.ProCalloutActionProvider
is a new Pro callout action provider.RemoteAutocompleteProvider
is now available to all license tiers.SystemKeyboardPreview
replaces all other system keyboard previews.SystemKeyboardButtonPreview
is a new system keyboard button preview.KeyboardInputViewController
has a license config action for both setups.Emojis.Version
fixes an iOS availability bug for Unicode v15.FeedbackConfiguration
used an incorrect disabled audio config by default.KeyboardAction.backspace
didn't properly trigger autocapitalization.SystemKeyboard
now uses images for .space
from the style provider.textDidChange
performs autocomplete after an async delay, to let the proxy update.textDidChange
applies autocapitalization after an async delay, to let the proxy update.AudioFeedback.Engine
is no longer open to inheritance.Autocomplete.ToolbarItemSubtitle
init takes a suggestion.CalloutContext.ActionContext
no longer uses an action handler.CasingAnalyzer
has been removed (use String
extensions).DisabledCalloutActionProvider
has been removed.EmojiKeyboardItem
has been removed.EmojiProvider
has been removed.EnglishCalloutActionProvider
is now a Pro feature.EnglishKeyboardLayoutProvider
has been removed.ExternalKeyboardContext
is now a Pro feature.FeatureToggle
has been removed.HapticFeedback.Engine
is no longer open to inheritance.KeyboardAction.emojiCategory
has been removed.KeyboardCharacterProvider
has been removed (use String
extensions).KeyboardColor
has been made internal.KeyboardColorReader
has been removed (use Color
extensions).KeyboardContext
no longer has a controller-based init (use sync(with:)
).KeyboardContext
textDocumentProxy
is read-only, but originalTextDocumentProxy
can be set.KeyboardHostingController
has been made internal.KeyboardSettingsUrlProvider
has been removed (use URL.keyboardSettings
).KeyboardStyle.EmojiKeyboard
has different parameters for the new menu design.KeyboardTextContext
was not used and has been removed to avoid complexity.Routing
text input components are now Pro features.KeyboardTextField
was not used and has been removed to avoid complexity.LocaleDirectionAnalyzer
has been removed (use Locale
extensions).LocaleNameProvider
has been removed (use Locale
extensions).NextKeyboardController
has been made internal.QuotationAnalyzer
has been removed (use String
extensions).SentenceAnalyzer
has been removed (use String
extensions).StandardCalloutActionProvider.standardProvider
has been removed.StaticKeyboardLayoutProvider
has been removed.SystemKeyboard
now requires explicit view builders.SystemKeyboardItem
can no longer be initialized outside the library.ToggleToolbar
is now a Pro feature.View.keyboardButtonStyle(...)
no longer has an isPressed
parameter.WordAnalyzer
has been removed (use String
extensions).Welcome to KeyboardKit 8.0 - a massive update to the KeyboardKit SDK!
KeyboardKit 8.0 is all about cleaning up the library to make it better structured and easier to use. It removes previously deprecated code, moves types into namespaces, and removes low-value utilities, including types solely used for DocC exposure (since this will be supported in future Xcode 15 builds).
Central types like SystemKeyboard
are easier to use. Passing state and services instead of a controller reduces the risk for memory leaks. It also no longer needs a width, but will take up as much space as it needs.
These updates has helped enabling new features, like fading the keyboard buttons while moving the cursor with space and other quality of life improvements and fixes. Accessibility has been drastically improved and the emoji keyboard redesigned.
Most emoji features are now Pro features, including the emoji keyboard. The SystemKeyboard
automatically removes the emoji key if no emoji keyboard is available.
The documentation has been extensively updated to provide more information and code examples. Please report any inconsistencies found, as many changes have been made.
I hope that you will love this major update to KeyboardKit!
If you're a KeyboardKit 7 user, the best way to migrate to KeyboardKit 8 is to first upgrade to the last available 7.9 version. This version contains deprecations that helps you prepare for some of the changes in KeyboardKit 8.
As you then upgrade to KeyboardKit 8, the 8.0 release has many TEMPORARY deprecations to assist migration from KeyboardKit 7. These temporary deprecations will be removed in 8.1.
You may run into some breaking changes, since there are some type changes that can't be handled by these deprecations. I have tried to keep these to a minimum, but see the breaking changes section below if you run into any problems.
Here's a list of some things that may be important to know
KeyboardInputViewController
has moved state properties into a state
property.KeyboardInputViewController
has moved service properties into a services
property.StandardKeyboardActionHandler
no longer remembers tapped emojis. This is done with the pro handler.SystemKeyboard
provides MUCH easier customization, but requires explicit view builders.SystemKeyboard
now hides the emoji
keyboard key if emojiKeyboard
is an EmptyView
.SystemKeyboard
no longer has an emoji keyboard by deafult, since it's now a Pro feature.SystemKeyboard
no longer auto-hides the toolbar. You can do this in the toolbar
builder.InputSetBasedKeyboardLayoutProvider
is a new provider.KeyboardAction
now has a standardAccessibilityLabel
.KeyboardAction.emoji
can now be created with a string.KeyboardActionHandler
now handles autocomplete suggestions.KeyboardButton
now has edgeInsets
and an isPressed
binding.KeyboardContext
has proxy properties that mirror the controller.KeyboardInputViewController
has a new setupProError
property.KeyboardLayout.Item
has a new width(forRowWidth:inputWidth:)
function.KeyboardLocale
has new initializer that supports fuzzy name initialization.KeyboardLocale
has new, convenient collection extensions to get locales.KeyboardStyle.Background
now supports specifying images in more ways.KeyboardStyle.Background
now supports specifying the image content mode.KeyboardStyle.Button
now supports background color AND background style.KeyboardStyle.EmojiKeyboard
has a lot more configuration parameters now.SpaceDragGestureHandler
properties are now mutable to allow customizations.SystemKeyboard
has new view builders to make it MUCH easier to customize it.SystemKeyboard
now fades out the buttons when a space cursor drag is active.StandardKeyboardActionHandler
can now be created on all supported platforms.StandardKeyboardActionHandler
has a new emojiRegistration
property.StandardKeyboardActionHandler
has a new tryRegisterEmoji(after:on:)
.StandardKeyboardActionHandler
has a new tryPerformAutocomplete(after:on:)
.StandardKeyboardStyleProvider
now adjusts styles when a space drag is active.View.keyboardButton
supports custom insets and applies a menu to nextLocale
.View.keyboardButton
applies accessibility labels for actions that define them.View.keyboardButton
is a new extension that applies both a style and gestures.View.keyboardCalloutContainer
is a new extension that will apply both callouts.View.keyboardLayoutItemSize
is a new extension that applies a layout item size.AutocompleteProvider
is now async.EmojiKeyboard
uses the standard context style as default.Gesture.KeyboardButtonGestures
no longer blocks space releases.InputSet
has been converted to a struct. All subsets are removed.KeyboardAction
no longer defines a default .nextKeyboard
action.KeyboardController
has fewer functions, since it's not used as much.KeyboardInputViewController
is no longer used to insert suggestions.SystemKeyboard
no longer needs you to provide it with an explicit width.SystemKeyboard
now guides you to use the controller-based setup function.KeyboardInputViewController
textDidChange
performs operations after a delay.EmojiKeyboard
has a new state/services initializer.EmojiKeyboard
has menu icons that look more native.Emojis.Categories
filters out all unavailable emojis.Emojis.Version
has more ways to handle emoji versions.ExternalKeyboardContext
class is now a Pro feature.FeedbackToggle
parameter is renamed to configuration.FullDocumentContextReader
has been removed (use proxy).KeyboardTextField
& KeyboardTextView
are now Pro features.LocalAutocompleteProvider
autocorrects i
to I
in English.ProCalloutActionProvider
is a new Pro callout action provider.RemoteAutocompleteProvider
is now available to all license tiers.SystemKeyboardPreview
replaces all other system keyboard previews.SystemKeyboardButtonPreview
is a new system keyboard button preview.KeyboardInputViewController
has a license config action for both setups.Emojis.Version
fixes an iOS availability bug for Unicode v15.FeedbackConfiguration
used an incorrect disabled audio config by default.KeyboardAction.backspace
didn't properly trigger autocapitalization.SystemKeyboard
now uses images for .space
from the style provider.textDidChange
performs autocomplete after an async delay, to let the proxy update.textDidChange
applies autocapitalization after an async delay, to let the proxy update.AudioFeedback.Engine
is no longer open to inheritance.Autocomplete.ToolbarItemSubtitle
init takes a suggestion.CalloutContext.ActionContext
no longer uses an action handler.CasingAnalyzer
has been removed (use String
extensions).DisabledCalloutActionProvider
has been removed.EmojiKeyboardItem
has been removed.EmojiProvider
has been removed.EnglishCalloutActionProvider
is now a Pro feature.EnglishKeyboardLayoutProvider
has been removed.ExternalKeyboardContext
is now a Pro feature.FeatureToggle
has been removed.HapticFeedback.Engine
is no longer open to inheritance.KeyboardAction.emojiCategory
has been removed.KeyboardCharacterProvider
has been removed (use String
extensions).KeyboardColor
has been made internal.KeyboardColorReader
has been removed (use Color
extensions).KeyboardContext
no longer has a controller-based init (use sync(with:)
).KeyboardContext
textDocumentProxy
is read-only, but originalTextDocumentProxy
can be set.KeyboardHostingController
has been made internal.KeyboardSettingsUrlProvider
has been removed (use URL.keyboardSettings
).KeyboardStyle.EmojiKeyboard
has different parameters for the new menu design.KeyboardTextContext
was not used and has been removed to avoid complexity.Routing
text input components are now Pro features.KeyboardTextField
was not used and has been removed to avoid complexity.LocaleDirectionAnalyzer
has been removed (use Locale
extensions).LocaleNameProvider
has been removed (use Locale
extensions).NextKeyboardController
has been made internal.QuotationAnalyzer
has been removed (use String
extensions).SentenceAnalyzer
has been removed (use String
extensions).StandardCalloutActionProvider.standardProvider
has been removed.StaticKeyboardLayoutProvider
has been removed.SystemKeyboard
now requires explicit view builders.SystemKeyboardItem
can no longer be initialized outside the library.ToggleToolbar
is now a Pro feature.View.keyboardButtonStyle(...)
no longer has an isPressed
parameter.WordAnalyzer
has been removed (use String
extensions).Welcome to KeyboardKit 8.0 - a massive update to the KeyboardKit SDK.
KeyboardKit 8.0 is all about cleaning up the library to make it better structured and easier to use. It removes previously deprecated code, moves types into namespaces, and removes low-value utilities, including types solely used for DocC exposure.
Central types like SystemKeyboard
are easier to use. Passing state and services instead of a controller reduces the risk for memory leaks. It also no longer needs a width, but will take up as much space as it needs.
These updates has helped enabling new features, like fading the keyboard buttons while moving the cursor with space and other quality of life improvements and fixes. Accessibility has been drastically improved and the emoji keyboard redesigned.
Most emoji features are now Pro features, including the emoji keyboard. The SystemKeyboard
automatically removes the emoji key if no keyboard is available.
The documentation (can be downloaded from the list of files below) has been extensively updated to provide more information and code examples. Please report any inconsistencies found, as many changes have been made.
I hope that you will love this major update to KeyboardKit.
If you're a KeyboardKit 7 user, the best way to migrate to KeyboardKit 8 is to first upgrade to the last available 7.9 version. This version contains deprecations that helps you prepare for some of the changes in KeyboardKit 8.
As you then upgrade to KeyboardKit 8, the 8.0 release has many TEMPORARY deprecations to assist migration from KeyboardKit 7. These temporary deprecations will be removed in 8.1.
You may run into some breaking changes, since there are some type changes that can't be handled by these deprecations. I have tried to keep these to a minimum, but see the breaking changes section below if you run into any problems.
Here's a list of some things that may be important to know
KeyboardInputViewController
has moved state properties into a state
property.KeyboardInputViewController
has moved service properties into a services
property.ProKeyboardActionHandler
is a new action handler for pro keyboards. You can inherit it.StandardKeyboardActionHandler
no longer remembers tapped emojis. This is done with the pro handler.SystemKeyboard
provides MUCH easier customization, but requires explicit view builders.SystemKeyboard
now hides the emoji
keyboard key if emojiKeyboard
is an EmptyView
.SystemKeyboard
no longer has an emoji keyboard by deafult, since it's now a Pro feature.SystemKeyboard
no longer auto-hides the toolbar. You can do this in the toolbar
builder.InputSetBasedKeyboardLayoutProvider
is a new provider.KeyboardAction
now has a standardAccessibilityLabel
.KeyboardAction.emoji
can now be created with a string.KeyboardActionHandler
now handles autocomplete suggestions.KeyboardButton
now has edgeInsets
and an isPressed
binding.KeyboardContext
has proxy properties that mirror the controller.KeyboardInputViewController
has a new setupProError
property.KeyboardLayout.Item
has a new width(forRowWidth:inputWidth:)
function.KeyboardLocale
has new initializer that supports fuzzy name initialization.KeyboardLocale
has new, convenient collection extensions to get locales.KeyboardStyle.Background
now supports specifying images in more ways.KeyboardStyle.Background
now supports specifying the image content mode.KeyboardStyle.Button
now supports background color AND background style.KeyboardStyle.EmojiKeyboard
has a lot more configuration parameters now.SpaceDragGestureHandler
properties are now mutable to allow customizations.SystemKeyboard
has new view builders to make it MUCH easier to customize it.SystemKeyboard
now fades out the buttons when a space cursor drag is active.StandardKeyboardActionHandler
can now be created on all supported platforms.StandardKeyboardStyleProvider
now adjusts styles when a space drag is active.View.keyboardButton
supports custom insets and applies a menu to nextLocale
.View.keyboardButton
applies accessibility labels for actions that define them.View.keyboardButton
is a new extension that applies both a style and gestures.View.keyboardCalloutContainer
is a new extension that will apply both callouts.View.keyboardLayoutItemSize
is a new extension that applies a layout item size.AutocompleteProvider
is now async.EmojiKeyboard
uses the standard context style as default.Gesture.KeyboardButtonGestures
no longer blocks space releases.InputSet
has been converted to a struct. All subsets are removed.ProKeyboardActionHandler
is a new, Pro-supporting action handler.KeyboardAction
no longer defines a default .nextKeyboard
action.KeyboardController
has fewer functions, since it's not used as much.KeyboardInputViewController
is no longer used to insert suggestions.SystemKeyboard
no longer needs you to provide it with an explicit width.SystemKeyboard
now guides you to use the controller-based setup function.KeyboardInputViewController
textDidChange
performs operations after a delay.EmojiKeyboard
has a new state/services initializer.EmojiKeyboard
has menu icons that look more native.Emojis.Categories
auto-filters out unavailable emojis.Emojis.Version
has more version-based capabilities.ExternalKeyboardContext
class is now a Pro features.FeedbackToggle
parameter is renamed to configuration.FullDocumentContextReader
has been removed (use proxy).KeyboardTextField
& KeyboardTextView
are now Pro features.LocalAutocompleteProvider
autocorrects i
to I
in English.ProKeyboardActionHandler
is a new Pro keyboard action handler.ProCalloutActionProvider
is a new Pro callout action provider.RemoteAutocompleteProvider
is now available to all license tiers.SystemKeyboardButtonPreview
is a new system keyboard button preview.KeyboardInputViewController
has a license config action for both setups.Emojis.Version
fixes an iOS availability bug for Unicode v15.FeedbackConfiguration
used an incorrect disabled audio config by default.KeyboardAction.backspace
didn't properly trigger autocapitalization.SystemKeyboard
now uses images for .space
from the style provider.textDidChange
performs autocomplete after an async delay, to let the proxy update.textDidChange
applies autocapitalization after an async delay, to let the proxy update.AudioFeedback.Engine
is no longer open to inheritance.Autocomplete.ToolbarItemSubtitle
init takes a suggestion.CalloutContext.ActionContext
no longer uses an action handler.CasingAnalyzer
has been removed (use String
extensions).DisabledCalloutActionProvider
has been removed.EmojiKeyboardItem
has been removed.EmojiProvider
has been removed.EnglishCalloutActionProvider
is now a Pro feature.EnglishKeyboardLayoutProvider
has been removed.ExternalKeyboardContext
is now a Pro feature.FeatureToggle
has been removed.HapticFeedback.Engine
is no longer open to inheritance.KeyboardAction.emojiCategory
has been removed.KeyboardCharacterProvider
has been removed (use String
extensions).KeyboardColor
has been made internal.KeyboardColorReader
has been removed (use Color
extensions).KeyboardContext
no longer has a controller-based init (use sync(with:)
).KeyboardContext
textDocumentProxy
is read-only, but originalTextDocumentProxy
can be set.KeyboardHostingController
has been made internal.KeyboardSettingsUrlProvider
has been removed (use URL.keyboardSettings
).KeyboardStyle.EmojiKeyboard
has different parameters for the new menu design.KeyboardTextContext
was not used and has been removed to avoid complexity.Routing
text input components are now Pro features.KeyboardTextField
was not used and has been removed to avoid complexity.LocaleDirectionAnalyzer
has been removed (use Locale
extensions).LocaleNameProvider
has been removed (use Locale
extensions).NextKeyboardController
has been made internal.QuotationAnalyzer
has been removed (use String
extensions).SentenceAnalyzer
has been removed (use String
extensions).StandardCalloutActionProvider.standardProvider
has been removed.StaticKeyboardLayoutProvider
has been removed.SystemKeyboard
now requires explicit view builders.SystemKeyboardItem
can no longer be initialized outside the library.ToggleToolbar
is now a Pro feature.View.keyboardButtonStyle(...)
no longer has an isPressed
parameter.WordAnalyzer
has been removed (use String
extensions).Welcome to KeyboardKit 8.0 - a massive update to the KeyboardKit SDK.
KeyboardKit 8.0 is all about cleaning up the library to make it better structured and easier to use. It removes previously deprecated code, moves types into namespaces, and removes low-value utilities, including types solely used for DocC exposure.
Central types like SystemKeyboard
are easier to use. Passing state and services instead of a controller reduces the risk for memory leaks. It also no longer needs a width, but will take up as much space as it needs.
These updates has helped enabling new features, like fading the keyboard buttons while moving the cursor with space and other quality of life improvements and fixes. Accessibility has been drastically improved and the emoji keyboard redesigned.
Most emoji features are now Pro features, including the emoji keyboard. The SystemKeyboard
automatically removes the emoji key if no keyboard is available.
The documentation (can be downloaded from the list of files below) has been extensively updated to provide more information and code examples. Please report any inconsistencies found, as many changes have been made.
I hope that you will love this major update to KeyboardKit.
If you're a KeyboardKit 7 user, the best way to migrate to KeyboardKit 8 is to first upgrade to the last available 7.9 version. This version contains deprecations that helps you prepare for some of the changes in KeyboardKit 8.
As you then upgrade to KeyboardKit 8, the 8.0 release has many TEMPORARY deprecations to assist migration from KeyboardKit 7. These temporary deprecations will be removed in 8.1.
You may run into some breaking changes, since there are some type changes that can't be handled by these deprecations. I have tried to keep these to a minimum, but see the breaking changes section below if you run into any problems.
Here's a list of some things that may be important to know
KeyboardInputViewController
has moved state properties into a state
property.KeyboardInputViewController
has moved service properties into a services
property.ProKeyboardActionHandler
is a new action handler for pro keyboards. You can inherit it.StandardKeyboardActionHandler
no longer remembers tapped emojis. This is done with the pro handler.SystemKeyboard
provides MUCH easier customization, but requires explicit view builders.SystemKeyboard
now hides the emoji
keyboard key if emojiKeyboard
is an EmptyView
.SystemKeyboard
no longer has an emoji keyboard by deafult, since it's now a Pro feature.SystemKeyboard
no longer auto-hides the toolbar. You can do this in the toolbar
builder.InputSetBasedKeyboardLayoutProvider
is a new provider.KeyboardAction
now has a standardAccessibilityLabel
.KeyboardAction.emoji
can now be created with a string.KeyboardActionHandler
now handles autocomplete suggestions.KeyboardButton
now has edgeInsets
and an isPressed
binding.KeyboardContext
has proxy properties that mirror the controller.KeyboardInputViewController
has a new setupProError
property.KeyboardLayout.Item
has a new width(forRowWidth:inputWidth:)
function.KeyboardLocale
has new initializer that supports fuzzy name initialization.KeyboardLocale
has new, convenient collection extensions to get locales.KeyboardStyle.Background
now supports specifying images in more ways.KeyboardStyle.Background
now supports specifying the image content mode.KeyboardStyle.Button
now supports background color AND background style.KeyboardStyle.EmojiKeyboard
has a lot more configuration parameters now.SpaceDragGestureHandler
properties are now mutable to allow customizations.SystemKeyboard
has new view builders to make it MUCH easier to customize it.SystemKeyboard
now fades out the buttons when a space cursor drag is active.StandardKeyboardActionHandler
can now be created on all supported platforms.StandardKeyboardStyleProvider
now adjusts styles when a space drag is active.View.keyboardButton
supports custom insets and applies a menu to nextLocale
.View.keyboardButton
applies accessibility labels for actions that define them.View.keyboardButton
is a new extension that applies both a style and gestures.View.keyboardCalloutContainer
is a new extension that will apply both callouts.View.keyboardLayoutItemSize
is a new extension that applies a layout item size.AutocompleteProvider
is now async.EmojiKeyboard
uses the standard context style as default.Gesture.KeyboardButtonGestures
no longer blocks space releases.InputSet
has been converted to a struct. All subsets are removed.ProKeyboardActionHandler
is a new, Pro-supporting action handler.KeyboardAction
no longer defines a default .nextKeyboard
action.KeyboardController
has fewer functions, since it's not used as much.KeyboardInputViewController
is no longer used to insert suggestions.SystemKeyboard
no longer needs you to provide it with an explicit width.SystemKeyboard
now guides you to use the controller-based setup function.KeyboardInputViewController
textDidChange
performs operations after a delay.EmojiKeyboard
has a new state/services initializer.EmojiKeyboard
has menu icons that look more native.Emojis.Categories
auto-filters out unavailable emojis.Emojis.Version
has more version-based capabilities.ExternalKeyboardContext
class is now a Pro features.FeedbackToggle
parameter is renamed to configuration.FullDocumentContextReader
has been removed (use proxy).KeyboardTextField
& KeyboardTextView
are now Pro features.LocalAutocompleteProvider
autocorrects i
to I
in English.ProKeyboardActionHandler
is a new Pro keyboard action handler.ProCalloutActionProvider
is a new Pro callout action provider.RemoteAutocompleteProvider
is now available to all license tiers.SystemKeyboardButtonPreview
is a new system keyboard button preview.KeyboardInputViewController
has a license config action for both setups.Emojis.Version
fixes an iOS availability bug for Unicode v15.FeedbackConfiguration
used an incorrect disabled audio config by default.KeyboardAction.backspace
didn't properly trigger autocapitalization.SystemKeyboard
now uses images for .space
from the style provider.textDidChange
performs autocomplete after an async delay, to let the proxy update.textDidChange
applies autocapitalization after an async delay, to let the proxy update.AudioFeedback.Engine
is no longer open to inheritance.Autocomplete.ToolbarItemSubtitle
init takes a suggestion.CalloutContext.ActionContext
no longer uses an action handler.CasingAnalyzer
has been removed (use String
extensions).DisabledCalloutActionProvider
has been removed.EmojiKeyboardItem
has been removed.EmojiProvider
has been removed.EnglishCalloutActionProvider
is now a Pro feature.EnglishKeyboardLayoutProvider
has been removed.ExternalKeyboardContext
is now a Pro feature.FeatureToggle
has been removed.HapticFeedback.Engine
is no longer open to inheritance.KeyboardAction.emojiCategory
has been removed.KeyboardCharacterProvider
has been removed (use String
extensions).KeyboardColor
has been made internal.KeyboardColorReader
has been removed (use Color
extensions).KeyboardContext
no longer has a controller-based init (use sync(with:)
).KeyboardContext
textDocumentProxy
is read-only, but originalTextDocumentProxy
can be set.KeyboardHostingController
has been made internal.KeyboardSettingsUrlProvider
has been removed (use URL.keyboardSettings
).KeyboardStyle.EmojiKeyboard
has different parameters for the new menu design.KeyboardTextContext
was not used and has been removed to avoid complexity.Routing
text input components are now Pro features.KeyboardTextField
was not used and has been removed to avoid complexity.LocaleDirectionAnalyzer
has been removed (use Locale
extensions).LocaleNameProvider
has been removed (use Locale
extensions).NextKeyboardController
has been made internal.QuotationAnalyzer
has been removed (use String
extensions).SentenceAnalyzer
has been removed (use String
extensions).StandardCalloutActionProvider.standardProvider
has been removed.StaticKeyboardLayoutProvider
has been removed.SystemKeyboard
now requires explicit view builders.SystemKeyboardItem
can no longer be initialized outside the library.ToggleToolbar
is now a Pro feature.View.keyboardButtonStyle(...)
no longer has an isPressed
parameter.WordAnalyzer
has been removed (use String
extensions).Published by danielsaidi about 1 year ago
Welcome to KeyboardKit 8.0 - a massive update to the KeyboardKit SDK.
KeyboardKit 8.0 is all about cleaning up and polishing the SDK to make it more approachable, better structured and easier to use. This version removes all previously deprecated code, reorganizes types into namespaces, and removes low-value utilities, including types solely used for DocC exposure.
Central types like SystemKeyboard
are now easier to use. Passing state and services instead of a controller reduces the risk for memory leaks. It also no longer needs you to provide a width, and will take up as much space as it needs. It also makes it a lot easier to provide a custom toolbar and emoji keyboard.
These updates will simplify scaling the library and has helped enabling a new feature that fades the keyboard button labels while moving the cursor with the space key. There are many other quality of life improvements and bug fixes. Accessibility has been drastically improved for Voice Over and the emoji keyboard has been redesigned.
Most emoji features, including the emoji keyboard and category information, are now Pro features. The SystemKeyboard
automatically removes the emoji key if no emoji keyboard is provided.
The documentation (can be downloaded from the list of files below) has been extensively updated to provide more information and code examples. Please report any inconsistencies found, as many changes have been made in this version.
I hope that you will love this major update to KeyboardKit.
Consider upgrading to the last 7.x version of KeyboardKit before moving to 8.0, as it has types and deprecations that are removed in this version.
KeyboardKit 8.0 includes TEMPORARY deprecations to assist migration from KeyboardKit 7. These temporary deprecations will be removed in 8.1.
See the breaking changes section below if you run into any breaking changes. Reach out if you run into problems that are not mentioned here.
ProKeyboardActionHandler
when using a custom action handler with Pro.KeyboardInputViewController
has moved state properties into a state
property.KeyboardInputViewController
has moved services properties into a services
property.StandardKeyboardActionHandler
no longer remembers tapped emojis. This has moved to Pro.SystemKeyboard
provides MUCH easier customization, but requires explicit view builders.SystemKeyboard
now hides the emoji
keyboard key if emojiKeyboard
is an EmptyView
.SystemKeyboard
no longer has an emoji keyboard by deafult, since it's now a Pro feature.SystemKeyboard
no longer auto-hides the toolbar. You can do this in the toolbar
builder.InputSetBasedKeyboardLayoutProvider
is a new provider.KeyboardAction
now has a standardAccessibilityLabel
.KeyboardAction.emoji
can now be created with a string.KeyboardActionHandler
now handles autocomplete suggestions.KeyboardButton
now has edgeInsets
and an isPressed
binding.KeyboardContext
has proxy properties that mirror the controller.KeyboardLayout.Item
has a new width(forRowWidth:inputWidth:)
function.KeyboardLocale
has new, convenient collection extensions to get locales.KeyboardStyle.Background
now supports specifying the image content mode.KeyboardStyle.Button
now supports background color AND background style.KeyboardStyle.EmojiKeyboard
has a lot more configuration parameters now.SpaceDragGestureHandler
properties are now mutable to allow customizations.SystemKeyboard
has new view builders to make it MUCH easier to customize it.SystemKeyboard
now fades out the buttons when a space cursor drag is active.StandardKeyboardActionHandler
can now be created on all supported platforms.StandardKeyboardStyleProvider
now adjusts styles when a space drag is active.View.keyboardButton
supports custom insets and applies a menu to nextLocale
.View.keyboardButton
applies accessibility labels for actions that define them.View.keyboardButton
is a new extension that applies both a style and gestures.View.keyboardCalloutContainer
is a new extension that will apply both callouts.View.keyboardLayoutItemSize
is a new extension that applies a layout item size.AutocompleteProvider
is now async.EmojiKeyboard
uses the standard context style as default.Gesture.KeyboardButtonGestures
no longer blocks space releases.InputSet
has been converted to a struct. All subsets are removed.ProKeyboardActionHandler
is a new, Pro-supporting action handler.KeyboardAction
no longer defines a default .nextKeyboard
action.KeyboardController
has fewer functions, since it's not used as much.KeyboardInputViewController
is no longer used to insert suggestions.SystemKeyboard
no longer needs you to provide it with an explicit width.SystemKeyboard
now guides you to use the controller-based setup function.KeyboardInputViewController
textDidChange
performs operations after a delay.EmojiKeyboard
has a new state/services initializer.EmojiKeyboard
has menu icons that look more native.ExternalKeyboardContext
class is now a Pro features.FeedbackToggle
parameter is renamed to configuration.FullDocumentContextReader
has been removed (use proxy).KeyboardTextField
& KeyboardTextView
are now Pro features.LocalAutocompleteProvider
autocorrects i
to I
in English.ProKeyboardActionHandler
is a new Pro keyboard action handler.ProCalloutActionProvider
is a new Pro callout action provider.RemoteAutocompleteProvider
is now available to all license tiers.SystemKeyboardButtonPreview
is a new system keyboard button preview.KeyboardInputViewController
has a license config action for both setups.KeyboardAction.backspace
didn't properly trigger autocapitalization.SystemKeyboard
now uses images for .space
from the style provider.textDidChange
performs autocomplete after an async delay, to let the proxy update.textDidChange
applies autocapitalization after an async delay, to let the proxy update.AudioFeedback.Engine
is no longer open to inheritance.Autocomplete.ToolbarItemSubtitle
init takes a suggestion.CalloutContext.ActionContext
no longer uses an action handler.CasingAnalyzer
has been removed (use String
extensions).DisabledCalloutActionProvider
has been removed.EmojiKeyboardItem
has been removed.EmojiProvider
has been removed.EnglishCalloutActionProvider
is now a Pro feature.EnglishKeyboardLayoutProvider
has been removed.ExternalKeyboardContext
is now a Pro feature.FeatureToggle
has been removed.HapticFeedback.Engine
is no longer open to inheritance.KeyboardAction.emojiCategory
has been removed.KeyboardCharacterProvider
has been removed (use String
extensions).KeyboardColor
has been made internal.KeyboardColorReader
has been removed (use Color
extensions).KeyboardContext
no longer has a controller-based init (use sync(with:)
).KeyboardContext
textDocumentProxy
is read-only, but originalTextDocumentProxy
can be set.KeyboardHostingController
has been made internal.KeyboardSettingsUrlProvider
has been removed (use URL.keyboardSettings
).KeyboardStyle.EmojiKeyboard
has different parameters for the new menu design.KeyboardTextContext
was not used and has been removed to avoid complexity.Routing
text input components are now Pro features.KeyboardTextField
was not used and has been removed to avoid complexity.LocaleDirectionAnalyzer
has been removed (use Locale
extensions).LocaleNameProvider
has been removed (use Locale
extensions).NextKeyboardController
has been made internal.QuotationAnalyzer
has been removed (use String
extensions).SentenceAnalyzer
has been removed (use String
extensions).StandardCalloutActionProvider.standardProvider
has been removed.StaticKeyboardLayoutProvider
has been removed.SystemKeyboard
now requires explicit view builders.SystemKeyboardItem
can no longer be initialized outside the library.ToggleToolbar
is now a Pro feature.View.keyboardButtonStyle(...)
no longer has an isPressed
parameter.WordAnalyzer
has been removed (use String
extensions).EmojiVersion
adjusts iOS and tvOS versions for emoji v15.SystemKeyboardPreview.Configuration
no longer applies a color scheme by default.EmojiKeyboardButton
has been deprecated.EnglishCalloutActionProvider
has been soft deprecated.This release prepares the library for the upcoming major version bump, which will clean up the library and make it easier to use.
Many types have been deprecated with proper @available
annotations, but those that can't be deprecated yet are soft deprecated with a [DEPRECATED]
comment. > v8.0:
comments are added where structural or architectural changes will, but currently can't be made.
Many keyboard types are moved into a new Keyboard
namespace, and that many styles are moved into a new KeyboardStyle
namespace. This introduction of namespace types will make it easier to overview the library and find types within it.
Another big change is that the InputSetProvider
concept is replaced by just using InputSet
s. This removes a lot of complexity and makes it easier to create custom layouts and use various input sets together.
Other big changes are that the KeyboardAppearance
is renamed to KeyboardStyleProvider
, the Appearance
namespace to Styling
and that the KeyboardFeedbackHandler
is merged into the KeyboardActionHandler
to just have a single type.
AutocompleteActionProvider.disabled
is a new alias for DisabledAutocompleteProvider
.CalloutActionProvider.disabled
is a new alias for DisabledCalloutActionProvider
.DictationService.disabled
is a new alias for DisabledDictationService
.HapticFeedbackConfiguration
has new press
and release
configurations.Image.keyboardShift
is a new image.InputSet
has new English
builders.Keyboard
is a new namespace type for some keyboard-specific types.Keyboard.ReturnKeyType
has new continue
, emergencyCall
and route
types.Keyboard.ReturnKeyType
has a new prefersAutocomplete
property.KeyboardActionHandler
has new feedback functions.KeyboardDictationService.disabled
is a new alias for DisabledKeyboardDictationService
.KeyboardFeedbackSettings
has new enabled and disabled configurations.KeyboardInputViewController
has new view lifecycle functions for registering and unregistering as the shared controller.KeyboardLayoutProviderProxy
has new standard functionality.KeyboardStyle
is a new style namespace that contains most style types.KeyboardStyleProvider
has a new function for the button content bottom margin.PreviewKeyboardInputViewController
is a new preview type.StandardKeyboardActionHandler
has new feedback functions.StandardKeyboardFeedbackHandler
has new feedback functions.StandardKeyboardLayoutProvider
has a new default initializer.SystemKeyboard
is now available on all platforms.View
has a new withEnvironment(from:)
extension.AudioFeedbackEngine
has been converted from a protocol to an open class.AutocompleteToolbar
items now use .current
as default locale.KeyboardActionHandler
has a new triggerFeedback(for:on:)
function.SpaceCursorDragGestureHandler
no longer needs a feedback handler.StandardKeyboardLayoutProvider
no longer requires an input set provider.StandardKeyboardStyleProvider
adjusts the bottom padding for some keys.SystemKeyboardLayoutProvider
now returns switcher actions for all keyboard types.AutocompleteToolbarPreview
is a new preview component.InputSet
has new input sets for some locales.InputSet
has new throwing properties for the localized input sets.KeyboardThemeAppearance
has a been renamed to ThemeBasedKeyboardStyleProvider
.ProInputSetProvider
and all its locale-specific types have been deprecated.ProKeyboardLayoutProvider
and all localized subclasses use input sets instead of providers.ProKeyboardLayoutProvider
and all localized subclasses can now be provided with custom input sets.SystemKeyboardPreview
is a new preview component.KeyboardThemeLivePreview
has been renamed to SystemKeyboardThemePreview
.KeyboardThemeLivePreviewHeader
has been renamed to SystemKeyboardThemePreviewHeader
.SystemKeyboardThemePreview
now works on all platforms.EmojiCategoryKeyboard
no longer requires two gestures when it's presented by the SystemKeyboard
. This was strangely enough fixed by the SystemKeyboardLayoutProvider
adjustment.EmojiCategoryKeyboard
now applies an interactable background to the grid, to make scrolling work even where there are no emojis.KeyboardContext
now switching to alphabetic when inserting a new line after a sentence delimiter in numeric and symbolic keyboards.AudioFeedbackConfiguration.noFeedback
has a been renamed to .disabled
.AudioFeedbackConfiguration.standard
is replaced by .enabled
.ActionCalloutContext
has been renamed to KeyboardCalloutContext.ActionContext
.AutocompleteSpaceState
has been deprecated.AutocompleteSuggestion.isAutocomplete
has been renamed to isAutocorrect
.AutocompleteToolbarStyle
has been renamed to KeyboardStyle.AutocompleteToolbarItem
.AutocompleteToolbarItemBackgroundStyle
has been renamed to KeyboardStyle.AutocompleteToolbarItemBackground
.AutocompleteToolbarItemStyle
has been renamed to KeyboardStyle.AutocompleteToolbarItem
.AutocompleteToolbarSeparatorStyle
has been renamed to KeyboardStyle.AutocompleteSeparator
.Callout
views have been soft deprecated and will be made internal in 8.0.EmojiAnalyzer
has been deprecated.EmojiCategoryKeyboardMenu
has been soft deprecated and will be made internal in 8.0.EmojiCategoryTitle
has been soft deprecated and will be made internal in 8.0.EnglishInputSetProvider
has been deprecated.HapticFeedbackConfiguration.noFeedback
has a been renamed to .disabled
.AudioFeedbackConfiguration.standard
is replaced by .minimal
.InputCalloutContext
has been renamed to KeyboardCalloutContext.InputContext
.InputSetProvider
and all related types have been deprecated.InterfaceOrientationResolver
has been deprecated.KeyboardActionCalloutStyle
has been renamed to KeyboardStyle.ActionCallout
.KeyboardAppearance
has been renamed to KeyboardStyleProvider
.KeyboardAutocapitalizationType
has been renamed to Keyboard.AutocapitalizationType
.KeyboardBackgroundStyle
has been renamed to KeyboardStyle.Background
.KeyboardBackspaceRange
has been renamed to Keyboard.BackspaceRange
.KeyboardButtonStyle
has been renamed to KeyboardStyle.Button
.KeyboardButtonBorderStyle
has been renamed to KeyboardStyle.ButtonBorder
.KeyboardButtonShadowStyle
has been renamed to KeyboardStyle.ButtonShadow
.KeyboardCalloutContext
has been renamed to CalloutContext
.KeyboardCalloutContext.action
has been renamed to actionContext
.KeyboardCalloutContext.input
has been renamed to inputContext
.KeyboardCalloutStyle
has been renamed to KeyboardStyle.Callout
.KeyboardCase
has been renamed to Keyboard.Case
.KeyboardCase.standardButtonImage
has been deprecated.KeyboardCaseAdjustable
has been deprecated.KeyboardEnabledState
has been renamed to KeyboardEnabledContext
.KeyboardHostingController
has been soft deprecated.KeyboardFontType
has been renamed to KeyboardFont.FontType
.KeyboardFontWeight
has been renamed to KeyboardFont.FontWeight
.KeyboardInputCalloutStyle
has been renamed to KeyboardStyle.InputCallout
.KeyboardInputViewController
keyboardAppearance
has been renamed to keyboardStyleProvider
.KeyboardReturnKeyType
has been renamed to Keyboard.ReturnKeyType
.KeyboardType
has been renamed to Keyboard.KeyboardType
.NumericInputSet.english
has been renamed to englishNumeric
.NumericInputSet.standard
has been renamed to standardNumeric
.DisabledAudioFeedbackEngine
has been deprecated.DisabledHapticFeedbackEngine
has been deprecated.HapticFeedbackConfiguration.tap
has been replaced by press
and release
.KeyboardActions
has been renamed to KeyboardAction.Row
.KeyboardActions
image initializer has been deprecated.KeyboardActionRows
has been renamed to KeyboardAction.Rows
.KeyboardLayoutItemRow
has been renamed to KeyboardLayoutItem.Row
.KeyboardLayoutItemRows
has been renamed to KeyboardLayoutItem.Rows
.KeyboardLayoutItemSize
has been renamed to KeyboardLayoutItem.Size
.KeyboardLayoutItemWidth
has been renamed to KeyboardLayoutItem.Width
.KeyboardFeedbackHandler
has been deprecated.LocalizedCalloutActionProvider
has been deprecated.LocalizedKeyboardLayoutProvider
has been deprecated.PrefersAutocompleteResolver
has been deprecated.PreviewKeyboardActionHandler
has been renamed to KeyboardPreviews.ActionHandler
PreviewKeyboardAppearance
has been renamed to KeyboardPreviews.StyleProvider
.PreviewKeyboardInputViewController
has been renamed to KeyboardPreviews.InputViewController
PreviewKeyboardLayoutProvider
has been renamed to KeyboardPreviews.LayoutProvider
PreviewKeyboardStyleProvider
has been renamed to KeyboardPreviews.StyleProvider
PreviewTextDocumentProxy
has been renamed to KeyboardPreviews.TextDocumentProxy
StandardAudioFeedbackEngine
has been deprecated.StandardHapticFeedbackEngine
has been deprecated.StandardKeyboardAppearance
has been renamed to StandardKeyboardStyleProvider
.StandardKeyboardFeedbackHandler
has been deprecated.StaticKeyboardBehavior
has been deprecated.SymbolicInputSet.english
has been renamed to englishSymbolic
.SymbolicInputSet.standard
has been renamed to standardSymbolic
.SystemKeyboardLayoutProvider
utility extensions have been deprecated.EnglishKeyboardLayoutProvider
no longer has an open layout provider function.StandardKeyboardActionHandler
no longer uses a feedback handler.KeyboardActionHandler
has a new handle
function.KeyboardBackgroundStyle
has many new properties and builder functions.KeyboardButtonStyle
now has separate border and shadow properties.KeyboardContext
has a new hasMultipleLocales
property.KeyboardLayoutConfiguration
now has mutable standard values.KeyboardLayoutConfiguration
has new standard row height properties.NextKeyboardButton
no longer throws assert failures by default.PreviewAutocompleteProvider
is a new preview service.SystemKeyboard
has a new renderBackground
property.ToggleToolbar
is a new toolbar that can be used to toggle between two toolbars.KeyboardTheme
has a new isPredefined
property.KeyboardTheme
has a new copyWithoutAuthor
function.KeyboardTheme
style variations have been adjusted to use the new background style model.KeyboardThemeAppearance
is now open for inheritance.KeyboardThemeAppearance
will now use the largest shadow size to determine the bottom edge insets.KeyboardThemeCopyable
's copy
function has a new newName
parameter.KeyboardThemeFormModel
is a new observable type.KeyboardThemeLivePreview
has new initializers.KeyboardThemeLivePreviewHeader
is a new header preview.ToggleToolbar
is now part of the main library, and is no longer throwing.StandardKeyboardActionHandler
now sets a correct initial space drag offset position.StandardKeyboardActionHandler
now adjusts the space drag offset to handle combined emojis.KeyboardBackgroundStyle
has deprecated the type-based initializer and its property.KeyboardBackgroundType
has been deprecated.KeyboardInputViewController
pro setup functions have been redesigned.SpaceCursorDragGestureHandler
no longer requires a context.ToggleToolbar
throwing initializers have been deprecated.KeyboardTheme.Author
now uses String
instead of URL
for its url.EnglishCalloutActionProvider
localeKey
is now mutable.EnglishInputSetProvider
is now open to inheritance.EnglishInputSetProvider
localeKey
is now mutable.EnglishKeyboardLayoutProvider
localeKey
is now mutable.StandardKeyboardAppearance
backgroundStyle
is now open
.StandardKeyboardAppearance
foregroundColor
is now open
.StandardKeyboardActionHandler
once again activates the space drag gesture on long press instead of on press.This version aims to reduce the amount of lost keystrokes by adding a release outside tolerance, to let a button trigger a release event even if the release is a bit outside of the button bounds. The lack of such a tolerance may have caused lost keystrokes before, since it's easy to slide with your finger while typing and ending up with your finger outside the button bounds.
Since the best tolerance amount is still unclear, the keyboardButtonGestures
view extension now lets you specify a tolerance, which is a percentage of the button width.
This version also adds a vertical threshold when moving the input cursor with the space button, since dragging the finger too much up and down can result in unexpected movement.
This version also tweaks the emoji keyboards to look better and closer to the native ones.
There are also new keyboard actions, new url opening utilities, and a bunch of theme adjustments.
KeyboardAction
has new systemSettings
and url
actions.KeyboardAction
has a new standardAction
property.KeyboardAppearance
has new, optional foregroundColor
property.KeyboardController
has a new openUrl
function.KeyboardLayout
has a new hasEmojiKeyboardSwitcher
.KeyboardUrlOpener
is a new class for opening URLs.KeyboardEmojiKeyboard
KeyboardEmojiCategoryKeyboard
are tweaked to look closer to the system keyboards.KeyboardGestures
now handles a release outside as a release inside, if the release happens within a tolerance area.KeyboardTheme
has new author
, collectionName
and foregroundColor
properties.KeyboardThemeLivePreview
now renders light mode only as default.License
has new localizedCalloutActionProviders
, localizedInputSetProviders
and localizedKeyboardLayoutProviders
properties.StandardInputSetProvider
convenience initializer has been deprecated.StandardKeyboardLayoutProvider
convenience initializer has been deprecated.KeyboardTheme
didn't set the identifier when it was created with a MinimalStyle
.View+SystemKeyboardButton
didn't send the pressed state to the system keyboard button body.KeyboardThemePreview
has been renamed to KeyboardThemeLivePreview
.keyboardGestures
view extensions have been renamed to keyboardButtonGestures
.KeyboardTheme
no longer has a styleName
property.This version updates the new dictation beta feature, adjusts a lot of emoji skin tones and fixes some bugs.
The version also adds tools that make it possible to start keyboard dictation from DocumentGroup-based apps.
After receiving reports that the new dictation features required all apps to add dictation permissions to their Info.plist
, a lot of work has been put into separating speech recognition from dictation.
As a result, you must now provide a SpeechRecognizer
when using the built-in dictation features. An already implemented recognizer can be copied from the SpeechRecognizer
docs.
Removing the speech recognizer parts from the library makes the feature a little harder to use, but removes the need for all apps to specify the permission keys they really don't need.
DictationContext
has new initializers for specific usages.DictationContext
has a new silenceLimit
that can be used to define after how many seconds of silence dictation should finish.DictationContext
has a new isDictationStartedByKeyboard
that can be used when a deep link can't be used to start dictation.KeyboardDictationConfiguration
has a new matchesDeepLink
that simplifies checking if a specific deep link should start dictation.DictationContext
lastError
.DictationIndicator
has been renamed to DictationBarVisualizer
.DictationOverlay
has been renamed to DictationScreen
.DictationScreen
now supports adding a done button.DictationScreen
supports a style instead of using many parameters.SpeechRecognizer
is a new protocol that is used to separate speech recognition from dictation.StandardDictationService
now requires a speech recognizer.StandardKeyboardDictationService
now requires a speech recognizer.View.keyboardDictation(...)
now requires a speech recognizer.View.keyboardDictationOnAppear(...)
is a new view modifier that can be used in DocumentGroup-based apps.View.keyboardDictationOnDeepLink(...)
is a new view modifier that can be used to start dictation without an overlay.Emoji
skin tone variants have been adjusted.Emoji
neutral skin tone variants have been adjusted.GestureButton
no longer triggers timed events if it's removed before it's released.KeyboardDictationService
stopDictationInKeyboard
has been renamed to handleDictationResultInKeyboard
.KeyboardInputViewController
viewWillPerformDictation
has been renamed to viewWillHandleDictationResult
.This version updates the new dictionary beta feature.
After receiving reports that the new dictation features required all apps to add dictation permissions to their Info.plist
, a lot of work has been put into separating speech recognition from dictation.
As a result, you must now provide a SpeechRecognizer
when using the built-in dictation features, which fixes this problem. An already implemented recognizer can be copied from the SpeechRecognizer
docs.
DictationContext
has new initializers for specific usage.DictationContext
has a new silenceLimit
property.DictationContext
has a new isDictationStartedByKeyboard
property.KeyboardDictationConfiguration
has a new matchesDeepLink
.DictationContext
lastError
.DictationIndicator
has been renamed to DictationEqualizer
.DictationOverlay
now supports adding a done button.DictationOverlay
renders many thinner lines by default.DictationOverlay
supports a style instead of using many parameters.SpeechRecognizer
is a new specialized protocol used by the pro dictation services and view modifiers.View.keyboardDictation(...)
now requires a speech recognizer.View.keyboardDictationOnAppear(...)
is a new view modifier that can be used in DocumentGroup-based apps.View.keyboardDictationOnDeepLink(...)
is a new view modifier that can be used to start dictation without presenting an overlay.Emoji.skinToneVariant
values have been adjusted.Emoji.neutralSkinToneVariant
values have been adjusted.GestureButton
no longer triggers timed events if it's removed before it's released.KeyboardDictationService
stopDictationInKeyboard
has been renamed to handleDictationResultInKeyboard
.KeyboardInputViewController
viewWillPerformDictation
has been renamed to viewWillHandleDictationResult
.This version updates the new dictionary beta feature.
After receiving reports that the new dictation features in KeyboardKit Pro required all apps to add dictation permissions to their Info.plist
, a lot of work has been put into separating dictation from speech recognition.
As a result, you must now provide a SpeechRecognizer
when using Pro dictation. To avoid using Speech
framework features that require the unwanted permissions, an already implemented speech recognizer can be copied from the SpeechRecognizer
documentation.
DictationContext
has new initializers for specific usage.DictationContext
has a new isDictationStartedByKeyboard
property.KeyboardDictationConfiguration
has a new matchesDeepLink
.DictationContext
lastError
.DictationIndicator
has been renamed to DictationEqualizer
.DictationOverlay
now uses a style instead of many parameters.DictationOverlay
now renders many thinner lines by default.SpeechRecognizer
is a new specialized protocol used by the pro dictation services and view modifiers.View.keyboardDictation(...)
now requires a speech recognizer.View.keyboardDictationOnAppear(...)
is a new view modifier that can be used in DocumentGroup-based apps.View.keyboardDictationOnDeepLink(...)
is a new view modifier that can be used to start dictation without presenting an overlay.Emoji.skinToneVariant
values have been adjusted.Emoji.neutralSkinToneVariant
values have been adjusted.GestureButton
no longer triggers timed events if it's removed before it's released.KeyboardInputViewController
viewWillPerformDictation
has been renamed to viewWillHandleDictationResult
.This version updates the new dictionary beta feature.
After receiving reports that the new dictation features in KeyboardKit Pro required all apps to add dictation permissions to their Info.plist
, a lot of work has been put into separating dictation from speech recognition.
As a result, you must now provide a SpeechRecognizer
when using Pro dictation. To avoid using Speech
framework features that require the unwanted permissions, an already implemented speech recognizer can be copied from the SpeechRecognizer
documentation.
KeyboardDictationConfiguration
has a new matchesDeepLink
.DictationIndicator
has been renamed to DictationEqualizer
.DictationOverlay
now uses a style instead of many parameters.DictationOverlay
now renders many thinner lines by default.SpeechRecognizer
is a new specialized protocol used by the pro dictation services and view modifiers..keyboardDictationOverlay(...)
is a new view extension..onKeyboardDictationDeepLink(...)
is a new view extension..keyboardDictation(...)
view modifier requires a speech recognizer.This version updates the new dictionary beta feature.
After receiving reports that the new dictation features in KeyboardKit Pro required all apps to add dictation permissions to their Info.plist
, a lot of work has been put into separating dictation from speech recognition.
As a result, you must now provide a SpeechRecognizer
when using Pro dictation. To avoid using Speech
framework features that require the unwanted permissions, an already implemented speech recognizer can be copied from the SpeechRecognizer
documentation.
KeyboardDictationConfiguration
has a new matchesDeepLink
.DictationIndicator
has been renamed to DictationEqualizer
.DictationOverlay
now uses a style instead of many parameters.DictationOverlay
now renders many thinner lines by default.SpeechRecognizer
is a new specialized protocol used by the pro dictation services and view modifiers..keyboardDictationOverlay(...)
is a new view extension..onKeyboardDictationDeepLink(...)
is a new view extension..keyboardDictation(...)
view modifier requires a speech recognizer.