Skip to content

Releases: JohannesKlauss/react-hotkeys-hook

v5.3.3

Choose a tag to compare

@JohannesKlauss JohannesKlauss released this 26 Jun 14:25

What's Changed

New Contributors

Full Changelog: v.5.3.2...v5.3.3

v5.3.1

Choose a tag to compare

@JohannesKlauss JohannesKlauss released this 05 May 07:29
6c71ffc

What's Changed

Full Changelog: v5.3.0...v5.3.1

v5.3.2

Choose a tag to compare

@JohannesKlauss JohannesKlauss released this 05 May 13:03
  • The previous release was pointing to a broken entry point

What's Changed

Full Changelog: v5.3.0...v5.3.1

v5.3.0

Choose a tag to compare

@JohannesKlauss JohannesKlauss released this 01 May 08:15

What's Changed

New Contributors

Full Changelog: v5.2.4...v5.3.0

v5.2.4

Choose a tag to compare

@JohannesKlauss JohannesKlauss released this 02 Feb 14:40
  • Merge pull request #1312 from JohannesKlauss/revert-1275-main 1197daf
  • Revert Regression introduced in "Try to prevent events firing incorrectly when using useKey: true" 612e549
  • Merge pull request #1311 from ShrimpCryptid/feat/clarify-ishotkeypressed-multiple-key-behavior 0219c01
  • doc: Updated wording on isHotkeyPressed key argument 9203b7f
  • fix: Update documentation for isHotkeyPressed to describe arguments correctly 154eab9

v5.2.3...v5.2.4

v5.2.3

Choose a tag to compare

@JohannesKlauss JohannesKlauss released this 14 Jan 16:48

What's Changed

  • chore(deps): update dependency vite to v7.1.11 [security] by @renovate[bot] in #1296
  • feat: add metadata support for hotkeys by @pkulcsarnr in #1299
  • chore(deps): update dependency vitest to v4 by @renovate[bot] in #1307
  • chore(deps): update actions/setup-node action to v6 by @renovate[bot] in #1306
  • chore(deps): update actions/checkout action to v6 by @renovate[bot] in #1305
  • fix(deps): update all non-major dependencies by @renovate[bot] in #1304
  • Try to prevent events firing incorrectly when using useKey: true by @matiastucci in #1275

New Contributors

Full Changelog: v5.2.1...v5.2.3

v5.2.1

Choose a tag to compare

@JohannesKlauss JohannesKlauss released this 14 Oct 08:06

Full Changelog: v5.2.0...v5.2.1

v5.2.0

Choose a tag to compare

@JohannesKlauss JohannesKlauss released this 13 Oct 08:01

v5.1.0...v5.2.0

What's Changed

New Contributors

Full Changelog: v5.1.0...v5.2.0

v5.1.0

Choose a tag to compare

@JohannesKlauss JohannesKlauss released this 14 May 11:35

What's Changed

New Contributors

Full Changelog: v5.0.2...v5.1.0

v5.0.0

Choose a tag to compare

@JohannesKlauss JohannesKlauss released this 09 Apr 16:15

🎉 Version 5!

Most users should not need to do any migration, but for those who use special characters (+,-/$? and so on) or a different delimiter key than + there is a bit of work to do.

🚨 Breaking Changes

<HotkeysProvider>

  • enabledScopes in the HotkeysProvider has been renamed to activeScopes
  • If all scopes are disabled in the HotkeysProvider no hotkeys will be active

useHotkeys

  • The hook now only listens to the code of the hotkey, not the produced key. This will get rid of all the confusion between different keyboard layouts, multiple accidental triggers and so on.
  • Special character mappings to the german keyboard layout code have been removed
  • The splitKey option has been renamed to delimiter
  • The combinationKey option has been renamed to splitKey
  • New Option useKey: Setting this to true will listen to the produced key rather than the code. Helpful if you want to listen to something like ?, +, !...

🐛 Bugfixes

  • Fixed a bug where listening to control instead of ctrl wouldn't trigger correctly

Migration Guide

  • If you are using the splitKey option, rename that to delimiter
  • If you are using the combinationKey option, rename that to splitKey

If you are listening to special characters like shift+1 in order to listen for the exclamation mark, rewrite your hook like so:

useHotkeys('!', callback, {useKey: true})

This will listen to the produced key instead of the code. Listening for shift is not necessary anymore, because the hook will only check if the produced key matches !, no matter how it has been produced. This will be layout agnostic.

If you want to listen to specifically shift+1, then use the hotkey like this:

useHotkeys('shift+1', callback)

useKey defaults to false, so you only need to set it, if you want to listen to special characters.

One common use case for this is listening to y and z. On a german layout those keys are swapped. So to comply with every possible keyboard layout, you would set useKey: true to listen to the produced key.

useHotkeys('y', callback, {useKey: true}) // Triggers if the user hits their y key on the keyboard depending on the layout
useHotkeys('y', callback) // Triggers if the user hits the y key implying US keyboard layout

New Contributors

Full Changelog: v4.6.2...v5.0.0