Any sandboxed app that wants to support user customizable global keyboard shortcuts must use the old RegisterEventHotKey API. This works fine in macOS 14, but in macOS 15 final, keyboard shortcuts that only use Option or Option+Shift as modifiers no longer trigger the listener. For example: Option+D or Option+Shift+D
Reproduce:
Run the attached sample project
Click the text field and input "Option" and "D" together
Deselect the text field
Try pressing "Option" and "D" together
Notice that the emoji hand does not change, meaning the keyboard shortcut listener was not triggered
This used to work fine in macOS 14.6. You can run the sample project on macOS 14 too see that it works there.
Observation: The keyboard shortcut starts working if I disable sandboxing in the sample project. That's obviously not a workaround though.
This is a critical regression and affects thousands of apps on the App Store. It affects any app that allow users to set a global keyboard shortcut, which is a lot.
Description
Any sandboxed app that wants to support user customizable global keyboard shortcuts must use the old RegisterEventHotKey API. This works fine in macOS 14, but in macOS 15 final, keyboard shortcuts that only use Option or Option+Shift as modifiers no longer trigger the listener. For example: Option+D or Option+Shift+D
Reproduce:
This used to work fine in macOS 14.6. You can run the sample project on macOS 14 too see that it works there.
More info here: https://github.com/sindresorhus/KeyboardShortcuts/issues/176
The specific code for registering the shortcut is here: https://github.com/sindresorhus/KeyboardShortcuts/blob/main/Sources/KeyboardShortcuts/CarbonKeyboardShortcuts.swift
Observation: The keyboard shortcut starts working if I disable sandboxing in the sample project. That's obviously not a workaround though.
This is a critical regression and affects thousands of apps on the App Store. It affects any app that allow users to set a global keyboard shortcut, which is a lot.
Files
Sample project.zip