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 visible (Hide)

KeyboardKit -

Published by danielsaidi 5 months ago

This version makes it easier to create a themed style provider, and adds a new .numberPad keyboard type.

✨ Features

  • Keyboard.KeyboardType has a new .numberPad type.
  • KeyboardStyleProvider.themed has new convenience apis.

💡 Adjustments

  • KeyboardContext will now get its initial keyboard type set to the document text proxy's keyboard type.
KeyboardKit -

Published by danielsaidi 5 months ago

This version adjusts Pro licenses.

KeyboardKit -

Published by danielsaidi 6 months ago

This version adjusts Pro licenses.

KeyboardKit -

Published by danielsaidi 6 months ago

This version adds a licenseError parameter to setupPro in KeyboardKit Pro.

Due to this, the setupProError in KeyboardInputViewController is deprecated and no longer used.

KeyboardKit -

Published by danielsaidi 6 months ago

This version adds a new SystemKeyboardBottomRow component, adds some new actions and fixes a bug.

✨ Features

  • KeyboardAction has a new .text action to insert long text.
  • KeyboardLayout has a new .bottomRowSystemItemWidth property.
  • SystemKeyboardComponent is a new protocol that defines shared typealiases.

💡 Adjustments

  • KeyboardAction.url is now a system key.

👑 KeyboardKit Pro

  • SystemKeyboardBottomRow is a new Pro component.

🐛 Bug fixes

  • SystemKeyboard no longer shows the emoji key for insufficient KeyboardKit Pro licenses.
KeyboardKit -

Published by danielsaidi 6 months ago

This version adjusts an autocomplete behavior.

💡 Adjustments

  • KeyboardInputViewController no longer hard resets the autocomplet econtext when the text is empty.

🐛 Bug fixes

  • KeyboardGesture has a new .end gesture, which is used to fix a bug that could cause space drag to never end.

👑 KeyboardKit Pro

  • KeyboardKit Pro has new ways to allow more flexible feature and tier validation.
KeyboardKit -

Published by danielsaidi 6 months ago

This version moves many types into their related namespaces, to make the SDK surface smaller and easier to overview. Since this involves many renamings, the Deprecations section below only lists deprecated types.

The library has deprecation types to help you migrate to the new type names, so you should not run into any breaking changes when migrating from earlier versions to this one.

The KeyboardState namespace has been renamed to KeyboardStatus, since it was often confused with Keyboard.KeyboardState. Keyboard.KeyboardState & Keyboard.KeyboardServices have also been renamed to the shorter Keyboard.State and Keyboard.Services, since it reads better in code.

There are new namespaces too. For instance, KeyboardApp has app-related types, KeyboardFeedback has feedback-related types, and KeyboardSettings has settings-related types.

This version also makes it easier to register custom audio & haptic feedback, in a way that requires less or no customizations in the action handler. Just register any custom feedback for any gesture on any action, and it will be triggered by the standard action handler. You can also play URL-based sound effects from custom audio files.

This version also makes the action and input callout bubbles look more native, and adds support for adding an input toolbar between the system keyboard and autocomplete toolbar.

Finally, KeyboardKit Pro makes more locales use the new iPad Pro layout. It also provides a brand new KeyboardApp.HomeScreen that can be used as an app home screen, and a new KeyboardStatus.Section that can show all relevant statuses for a keyboard app.

🚨 Important Information

  • Many types are moved into their related namespaces.
  • The EmojiKeyboard sub-components are now throwing as well.
  • The KeyboardStatus.Label now uses its style to change icons.
  • Renamed types use @available deprecations to help adjust your code.

✨ Features

  • Feedback.Audio has a new customUrl that can play URL-based audio.
  • Feedback.AudioConfiguration has new ways to register custom feedback.
  • Feedback.HapticConfiguration has new ways to register custom feedback.
  • FeedbackContext has new ways to register custom audio/haptic feedback.
  • KeyboardLayout has a new copy() function that creates a mutable copy.
  • KeyboardLayout has new functions for using and tweaking the bottom row.
  • KeyboardLayout has a new inputToolbarLayout() value builder function.
  • KeyboardLayout has a new functions for getting the total layout height.
  • SystemKeyboard's service-based initializer now allows a layout override.
  • View has a new keyboardInputToolbarDisplayMode modifier for input toolbars.

💡 Adjustments

  • Callouts now use curves that look a lot more native.
  • Keyboard.Button no longer has a minimum scale factor.
  • KeyboardApp is a new namespace for app-related types.
  • KeyboardApp.HomeScreen is a new app home screen view template.
  • KeyboardLayout.Configuration now defines number toolbar height.
  • KeyboardFeedback is a new namespace for feedback-related types.
  • KeyboardSettings is a new namespace for settings-related types.
  • KeyboardStatus.Label now uses filled icon variants, by default.
  • KeyboardStyle.StandardProvider now applies a light weight to backspace.
  • KeyboardStyle.StandardProvider now applies more adaptive content insets.
  • SystemKeyboard has been optimized in how it renders the system keyboard.

👑 KeyboardKit Pro

  • KeyboardApp.HomeScreen is a new app-specific home screen template.
  • KeyboardStatus has a new Section view that can display keyboard statuses.
  • KeyboardTextField and KeyboardTextView can now trigger a custom onSubmit function.
  • SystemKeyboard now has an addNumberToolbar parameter to add a number toolbar in KeyboardKit Pro.
  • The iPad Pro layout has been tweaked to look more native, and is now used by all these locales as well:
  • Catalan, Czech, Danish, Faroese, Finnish, Georgian, German, German (Austria), German (Switzerland), Greek, Hawaiian, Icelandic, Inari Sámi, Macedonian, Maltese, Mongolian, Northern Sámi, Norwegian, Russian, Serbian, Slovak, Turkish, Ukrainian.

🗑️ Deprecations

  • Callouts.ButtonArea has been deprecated.
  • Callouts.Curve has been deprecated.
  • Emoji.Grid has been moved to EmojiKit.
  • KeyboardStyleProvider.buttonContentBottomMargin is no longer used.
KeyboardKit -

Published by danielsaidi 6 months ago

This version adjusts Pro licenses.

KeyboardKit -

Published by danielsaidi 6 months ago

This version moves may types into namespaces, to make the SDK smaller and easier to overview. Since this involves many renamings, the Deprecations section only lists deprecated types. The library has deprecation types to help you migrate to the new type names.

The KeyboardState namespace is renamed to KeyboardStatus, since it was often confused with Keyboard.KeyboardState. Keyboard.KeyboardState & Keyboard.KeyboardServices are also renamed to the shorter Keyboard.State and Keyboard.Services.

KeyboardKit Pro makes more locales use the iPad Pro layout, and has a new KeyboardApp.HomeScreen that can be used as a keyboard app home screen. There is also a new URL-support for audio feedback. Only your imagination can now stop you from creating crazy sound boards.

🚨 Important Information

  • Many types are moved into their related namespaces.
  • The EmojiKeyboard sub-components are now throwing as well.
  • The KeyboardStatus.Label now uses its style to change icons.
  • Renamed types use @available deprecations to help adjust your code.

✨ Features

  • Feedback.Audio has a new customUrl that can play URL-based audio.
  • Feedback.AudioConfiguration has new ways to register custom feedback.
  • Feedback.HapticConfiguration has new ways to register custom feedback.

💡 Adjustments

  • KeyboardApp is a new namespace for app-related types.
  • KeyboardApp.HomeScreen is a new app home screen view template.
  • KeyboardFeedback is a new namespace for feedback-related types.
  • KeyboardSettings is a new namespace for settings-related types.
  • KeyboardStatus.Label now uses filled icon variants, by default.
  • KeyboardStyle.StandardProvider now applies a light weight to backspace.

👑 KeyboardKit Pro

  • There is a new KeyboardApp.HomeScreen screen template view.
  • The iPad Pro keyboard layout has been tweaked to look better.
  • The iPad Pro keyboard layout is now used by the following locales:
  • Catalan, Czech, Danish, Faroese, Finnish, Georgian, German, German (Austria), German (Switzerland), Greek, Hawaiian, Icelandic, Inari Sámi, Macedonian, Maltese, Mongolian, Northern Sámi, Norwegian, Russian, Serbian, Slovak, Turkish, Ukrainian.

🗑️ Deprecations

  • Emoji.Grid has been moved to EmojiKit.
KeyboardKit -

Published by danielsaidi 6 months ago

This version moves many types into namespaces, to make the SDK smaller and easier to overview. It also renames some types to make the naming more intuitive. Since this involves many renamings, the Deprecations section only lists deprecated types.

The KeyboardState namespace has been renamed to KeyboardStatus, since it was often confused with Keyboard.KeyboardState. Keyboard.KeyboardState & Keyboard.KeyboardServices are also renamed to the shorter Keyboard.State and Keyboard.Services.

🚨 Important Information

  • Many types are moved into their related namespaces.
  • The EmojiKeyboard sub-components are now throwing as well.
  • The KeyboardStatus.Label now uses its style to change icons.
  • Renamed types use @available deprecations to help adjust your code.

✨ Features

  • Feedback.Audio has a new customUrl that can play URL-based audio.
  • Feedback.AudioConfiguration has new ways to register custom feedback.
  • Feedback.HapticConfiguration has new ways to register custom feedback.

💡 Adjustments

  • KeyboardApp is a new namespace for app-related types.
  • KeyboardApp.HomeScreen is a new app home screen view template.
  • KeyboardFeedback is a new namespace for feedback-related types.
  • KeyboardSettings is a new namespace for settings-related types.
  • KeyboardStatus.Label now uses filled icon variants, by default.
  • KeyboardStyle.StandardProvider now applies a light weight to backspace.

👑 KeyboardKit Pro

  • There is a new KeyboardApp.HomeScreen screen template view.
  • The iPad Pro keyboard layout has been tweaked to look better.
  • The iPad Pro keyboard layout is now used by the following locales:
  • Catalan, Czech, Danish, Faroese, Finnish, Georgian, German, German (Austria), German (Switzerland), Greek, Hawaiian, Icelandic, Inari Sámi, Macedonian, Maltese, Mongolian, Northern Sámi, Norwegian, Russian, Serbian, Slovak, Turkish, Ukrainian.

🗑️ Deprecations

  • Emoji.Grid has been moved to EmojiKit.
KeyboardKit -

Published by danielsaidi 7 months ago

This version adjusts Pro licenses.

KeyboardKit -

Published by danielsaidi 7 months ago

This version adjusts licenses for KeyboardKit Pro.

KeyboardKit -

Published by danielsaidi 7 months ago

This version bumps to Swift 5.9 and adds support for visionOS.

This version renames some views and refactors view styling to be injected with view modifiers instead of with the initializer.

This version also convers many emoji features to open-source variants, and no longer requires a license to use these features.

Views that require complex style resolving still use the style provider concept.

🚨 Important Information

  • Most views are now designed to be styled with view modifiers.
  • .keyboardButtonStyle only injects style with the environment.
  • Emoji types are no longer throwing. If you use them, remove try.
  • Emoji keyboard views no longer apply the init style. Use the view modifier instead.

✨ Features

  • Autocomplete.ToolbarStyle has support for more styling.
  • Autocomplete.ToolbarItemStyle has support for more styling.
  • DeviceType defines a new .vision device to support visionOS.
  • Keyboard.Background implements View and can be used as a plain view.
  • Keyboard.Toolbar is a new view that applies a min height to its content.
  • Keyboard.ToolbarStyle is a new style that can be applied with a view modifier.
  • StandardKeyboardBehavior modifies some functions to be open to modifications.

💡 Adjustments

  • AutocompleteToolbar has been renamed to Autocomplete.Toolbar.
  • InputSet.standardNumeric has been renamed to InputSet.numeric.
  • InputSet.standardSymbolic has been renamed to InputSet.symbolic.
  • KeyboardButton.Button and all related views have been moved to Keyboard.
  • KeyboardStyle styles have all been renamed, e.g. Autocomplete.ToolbarStyle.
  • NextKeyboardButton has been moved and renamed to Keyboard.NextKeyboardButton.

💡 Renamed View Modifiers

  • .keyboardButtonStyle has been renamed to .keyboardButton.
  • .withEnvironment(fromState:) has been renamed to .keyboardState(_:).
  • .withEnvironment(fromController:) has been renamed to .keyboardState(from:).

👑 KeyboardKit Pro

  • Many Emoji functions and types are moved to the base library.
  • Dictation.BarVisualizer now applies more things with its style.
  • Dictation.BarVisualizer now applies style with the environment.

🐛 Bug fixes

  • Some themes have been adjusted to apply correct autocomplete toolbar styles.

🗑️ Deprecations

  • Emoji renames a lof of types & categories, and many things non-throwing.
  • Emoji.Picker has been deprecated in favor of the EmojiKit open-source view.
  • LazyHGrid/LazyVGrid emoji initializers are replaced by the new Emoji.Grid.
  • KeyboardButton has been deprecated and all views have been moved to Keyboard.
  • KeyboardStyle.AutocompleteToolbarItemBackground is replaced by Autocomplete.ToolbarItem.
  • Autocomplete.ToolbarItem nested views are replaced by just using Autocomplete.ToolbarItem.
KeyboardKit -

Published by danielsaidi 7 months ago

This version adjusts licenses for KeyboardKit Pro.

KeyboardKit -

Published by danielsaidi 7 months ago

This version updates licenses for KeyboardKit Pro.

KeyboardKit -

Published by danielsaidi 7 months ago

This version adjusts licenses for KeyboardKit Pro.

KeyboardKit -

Published by danielsaidi 7 months ago

This version adjusts licenses for KeyboardKit Pro.

KeyboardKit -

Published by danielsaidi 7 months ago

This version adjusts licenses for KeyboardKit Pro.

KeyboardKit -

Published by danielsaidi 7 months ago

This version optimizes the binary size of the KeyboardKit Pro framework.

👑 KeyboardKit Pro

  • The framework size is now almost half in size compared to the 8.0 version.
  • The Color extension changes in 8.3.1 are now implemented in Pro as well.
KeyboardKit -

Published by danielsaidi 8 months ago

This version adjusts Pro licenses.

Package Rankings
Top 4.07% on Cocoapods.org
Top 8.54% on Swiftpackageindex.com
Related Projects