KeyboardKit

KeyboardKit is a Swift SDK that lets you create fully customizable keyboards with a few lines of code, using SwiftUI.

MIT License

Stars
1.5K
Committers
29

Bot releases are hidden (Show)

KeyboardKit -

Published by danielsaidi 12 months ago

Welcome to KeyboardKit 8.0 - a massive update to the KeyboardKit SDK!

๐Ÿ“ฃ Major Changes

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!

๐Ÿ›Ÿ KeyboardKit 8 Migration Help

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.

๐Ÿšจ Important Information

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.

โœจ New Features

  • 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.

๐Ÿ’ก Adjustments

  • 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.

๐Ÿ‘‘ Pro Adjustments

  • Many emoji types have become Pro features.
  • Many routing types have become Pro features.
  • The pro setup error view has been redesigned.
  • The pro setup error view now overlays your view.
  • 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.

๐Ÿ› Bug fixes

  • 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.

๐Ÿ’ฅ Breaking changes

  • All deprecated code has been removed.
  • DocC exposing types have been removed.
  • Many emoji types have been moved to Pro.
  • Many routing types have been moved to Pro.
  • English input sets have been moved to Pro.
  • Migration deprecations are not listed here.
  • 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).
KeyboardKit -

Published by danielsaidi 12 months ago

Welcome to KeyboardKit 8.0 - a massive update to the KeyboardKit SDK!

๐Ÿ“ฃ Major Changes

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!

๐Ÿ›Ÿ KeyboardKit 8 Migration Help

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.

๐Ÿšจ Important Information

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.

โœจ New Features

  • 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.

๐Ÿ’ก Adjustments

  • 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.

๐Ÿ‘‘ Pro Adjustments

  • Many emoji types have become Pro features.
  • Many routing types have become Pro features.
  • The pro setup error view has been redesigned.
  • The pro setup error view now overlays your view.
  • 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.

๐Ÿ› Bug fixes

  • 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.

๐Ÿ’ฅ Breaking changes

  • All deprecated code has been removed.
  • DocC exposing types have been removed.
  • Many emoji types have been moved to Pro.
  • Many routing types have been moved to Pro.
  • English input sets have been moved to Pro.
  • Migration deprecations are not listed here.
  • 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).
KeyboardKit -

Published by danielsaidi 12 months ago

Welcome to KeyboardKit 8.0 - a massive update to the KeyboardKit SDK.

๐Ÿ“ฃ Major Changes

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.

๐Ÿ›Ÿ KeyboardKit 8 Migration Help

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.

๐Ÿšจ Important Information

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.

โœจ New Features

  • 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.

๐Ÿ’ก Adjustments

  • Renamed types and functions are not included in these release notes.
  • 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.

๐Ÿ‘‘ Pro Adjustments

  • Many emoji types have become Pro features.
  • Many routing types have become Pro features.
  • The pro setup error view has been redesigned.
  • The pro setup error view now overlays your view.
  • 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.

๐Ÿ› Bug fixes

  • 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.

๐Ÿ’ฅ Breaking changes

  • All deprecated code has been removed.
  • DocC exposing types have been removed.
  • Many emoji types have been moved to Pro.
  • Many routing types have been moved to Pro.
  • English input sets have been moved to Pro.
  • Changes with migration deprecations are not listed here.
  • 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).
KeyboardKit -

Published by danielsaidi 12 months ago

Welcome to KeyboardKit 8.0 - a massive update to the KeyboardKit SDK.

๐Ÿ“ฃ Major Changes

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.

๐Ÿ›Ÿ KeyboardKit 8 Migration Help

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.

๐Ÿšจ Important Information

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.

โœจ New Features

  • 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.

๐Ÿ’ก Adjustments

  • Renamed types and functions are not included in these release notes.
  • 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.

๐Ÿ‘‘ Pro Adjustments

  • Many emoji types have become Pro features.
  • Many routing types have become Pro features.
  • The pro setup error view has been redesigned.
  • The pro setup error view now overlays your view.
  • 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.

๐Ÿ› Bug fixes

  • 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.

๐Ÿ’ฅ Breaking changes

  • All deprecated code has been removed.
  • DocC exposing types have been removed.
  • Many emoji types have been moved to Pro.
  • Many routing types have been moved to Pro.
  • English input sets have been moved to Pro.
  • Changes with migration deprecations are not listed here.
  • 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).
KeyboardKit -

Published by danielsaidi about 1 year ago

This version adjusts things in KeyboardKit Pro.

KeyboardKit - 8.0 - Release Candidate 1

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.

๐Ÿ’ก Migrating from KeyboardKit 7

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.

๐Ÿšจ Important information

  • Inherit 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.

โœจ New Features

  • 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.

๐Ÿ’ก Adjustments

  • Renamed types and functions are not included in these release notes.
  • 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.

๐Ÿ‘‘ Pro Adjustments

  • Many emoji types have become Pro features.
  • Many routing types have become Pro features.
  • 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.

๐Ÿ› Bug fixes

  • 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.

๐Ÿ’ฅ Breaking changes

  • All deprecated code has been removed.
  • DocC exposing types have been removed.
  • Many emoji types have been moved to Pro.
  • Many routing types have been moved to Pro.
  • English input sets have been moved to Pro.
  • Changes with migration deprecations are not listed here.
  • 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).
KeyboardKit -

Published by danielsaidi about 1 year ago

This version adjusts things in KeyboardKit Pro.

KeyboardKit -

Published by danielsaidi about 1 year ago

This version adjusts things in KeyboardKit Pro.

KeyboardKit -

Published by danielsaidi about 1 year ago

  • EmojiVersion adjusts iOS and tvOS versions for emoji v15.
  • SystemKeyboardPreview.Configuration no longer applies a color scheme by default.

๐Ÿ—‘๏ธ Deprecations

  • EmojiKeyboardButton has been deprecated.
  • EnglishCalloutActionProvider has been soft deprecated.
KeyboardKit -

Published by danielsaidi about 1 year ago

This version adjusts things in KeyboardKit Pro.

KeyboardKit -

Published by danielsaidi about 1 year ago

This version adjusts things in KeyboardKit Pro.

KeyboardKit -

Published by danielsaidi about 1 year ago

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 InputSets. 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.

โœจ New Features

  • 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.

๐Ÿ’ก Adjustments

  • 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.

๐Ÿ‘‘ Pro Adjustments

  • 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.

๐Ÿ› Bug fixes

  • 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.

๐Ÿ—‘๏ธ Deprecations

  • 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.

๐Ÿ’ฅ Breaking changes

  • EnglishKeyboardLayoutProvider no longer has an open layout provider function.
  • StandardKeyboardActionHandler no longer uses a feedback handler.
KeyboardKit -

Published by danielsaidi over 1 year ago

โœจ New Features

  • 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.

๐Ÿ‘‘ Pro changes

  • 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.

๐Ÿ› Bug fixes

  • StandardKeyboardActionHandler now sets a correct initial space drag offset position.
  • StandardKeyboardActionHandler now adjusts the space drag offset to handle combined emojis.

๐Ÿ—‘๏ธ Deprecations

  • 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.

๐Ÿ’ฅ Breaking changes

  • KeyboardTheme.Author now uses String instead of URL for its url.
KeyboardKit -

Published by danielsaidi over 1 year ago

๐Ÿ’ก Adjustments

  • 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.

๐Ÿ› Bug fixes

  • StandardKeyboardActionHandler once again activates the space drag gesture on long press instead of on press.
KeyboardKit -

Published by danielsaidi over 1 year ago

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.

โœจ New Features

  • 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.

๐Ÿ’ก Adjustments

  • Thanks to krizhanovskii the Pro Max layout configuration has been improved.
  • 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.

๐Ÿ‘‘ Pro changes

  • KeyboardTheme has new author, collectionName and foregroundColor properties.
  • KeyboardThemeLivePreview now renders light mode only as default.
  • License has new localizedCalloutActionProviders, localizedInputSetProviders and localizedKeyboardLayoutProviders properties.
  • Some themes define a foreground color to make the emoji keyboard look good.
  • The license-based StandardInputSetProvider convenience initializer has been deprecated.
  • The license-based StandardKeyboardLayoutProvider convenience initializer has been deprecated.

๐Ÿ› Bug fixes

  • 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.

๐Ÿ—‘๏ธ Deprecations

  • KeyboardThemePreview has been renamed to KeyboardThemeLivePreview.
  • The keyboardGestures view extensions have been renamed to keyboardButtonGestures.

๐Ÿ’ฅ Breaking changes

  • KeyboardTheme no longer has a styleName property.
KeyboardKit -

Published by danielsaidi over 1 year ago

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.

๐Ÿšจ Important information

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.

โœจ New Features

  • 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.

๐Ÿ’ก Behavior changes

  • More parts of the dictation implementations now update the DictationContext lastError.

๐Ÿ‘‘ Pro changes

  • 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.

๐Ÿ› Bug fixes

  • A duplicate emoji has been removed.
  • Incorrect Pro themes have been adjusted.
  • Incorrect Emoji skin tone variants have been adjusted.
  • Incorrect Emoji neutral skin tone variants have been adjusted.
  • GestureButton no longer triggers timed events if it's removed before it's released.

๐Ÿ’ฅ Breaking changes

  • KeyboardDictationService stopDictationInKeyboard has been renamed to handleDictationResultInKeyboard.
  • KeyboardInputViewController viewWillPerformDictation has been renamed to viewWillHandleDictationResult.
KeyboardKit -

Published by danielsaidi over 1 year ago

This version updates the new dictionary beta feature.

๐Ÿšจ Important information

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.

โœจ New Features

  • DictationContext has new initializers for specific usage.
  • DictationContext has a new silenceLimit property.
  • DictationContext has a new isDictationStartedByKeyboard property.
  • KeyboardDictationConfiguration has a new matchesDeepLink.

๐Ÿ’ก Behavior changes

  • More dictation logic now updates the DictationContext lastError.

๐Ÿ‘‘ Pro changes

  • 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.

๐Ÿ› Bug fixes

  • A duplicate emoji has been removed.
  • Incorrect Pro themes have been adjusted.
  • Incorrect Emoji.skinToneVariant values have been adjusted.
  • Incorrect Emoji.neutralSkinToneVariant values have been adjusted.
  • GestureButton no longer triggers timed events if it's removed before it's released.

๐Ÿ’ฅ Breaking changes

  • KeyboardDictationService stopDictationInKeyboard has been renamed to handleDictationResultInKeyboard.
  • KeyboardInputViewController viewWillPerformDictation has been renamed to viewWillHandleDictationResult.
KeyboardKit -

Published by danielsaidi over 1 year ago

This version updates the new dictionary beta feature.

๐Ÿšจ Important information

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.

โœจ New Features

  • DictationContext has new initializers for specific usage.
  • DictationContext has a new isDictationStartedByKeyboard property.
  • KeyboardDictationConfiguration has a new matchesDeepLink.

๐Ÿ’ก Behavior changes

  • More dictation logic now updates the DictationContext lastError.

๐Ÿ‘‘ Pro changes

  • 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.

๐Ÿ› Bug fixes

  • A duplicate emoji has been removed.
  • Incorrect Pro themes have been adjusted.
  • Incorrect Emoji.skinToneVariant values have been adjusted.
  • Incorrect Emoji.neutralSkinToneVariant values have been adjusted.
  • GestureButton no longer triggers timed events if it's removed before it's released.

๐Ÿ’ฅ Breaking changes

  • KeyboardInputViewController viewWillPerformDictation has been renamed to viewWillHandleDictationResult.
KeyboardKit -

Published by danielsaidi over 1 year ago

This version updates the new dictionary beta feature.

๐Ÿšจ Important information

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.

โœจ New Features

  • KeyboardDictationConfiguration has a new matchesDeepLink.

๐Ÿ‘‘ Pro changes

  • 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.

๐Ÿ’ฅ Breaking changes

  • The .keyboardDictation(...) view modifier requires a speech recognizer.
KeyboardKit -

Published by danielsaidi over 1 year ago

This version updates the new dictionary beta feature.

๐Ÿšจ Important information

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.

โœจ New Features

  • KeyboardDictationConfiguration has a new matchesDeepLink.

๐Ÿ‘‘ Pro changes

  • 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.

๐Ÿ’ฅ Breaking changes

  • The .keyboardDictation(...) view modifier requires a speech recognizer.
Package Rankings
Top 4.07% on Cocoapods.org
Top 8.54% on Swiftpackageindex.com
Related Projects