Skycoder42 / QHotkey

A global shortcut/hotkey for Desktop Qt-Applications
BSD 3-Clause "New" or "Revised" License
552 stars 162 forks source link

Cannot register CapsLock #7

Closed AlexZ005 closed 6 years ago

AlexZ005 commented 6 years ago

Cannot use QHotkey hotkey(Qt::Key_CapsLock, Qt::NoModifier, true);

Application Output: QHotkey: Failed to register hotkey. Error: BadAccess (attempt to access private resource denied) QHotkey: Failed to unregister hotkey. Error: BadAccess (attempt to access private resource denied)

Could we use CapsLock as a hotkey, please?

Skycoder42 commented 6 years ago

CapsLock ist not supported as hotkey for multiple reasons (and because of those never will):

  1. CapsLock is considered a modifier (like alt, shift, etc.) and thus not a "normal" key. Modifiers in general cannot be registered as standalone hotkeys, only as modifiers for other keys.
  2. CapsLock itself is a stateful key, like NumLock it changes the keyboard state permanently and thus is not supported as modifier either, as this would lead to unexpected behaviour (modifiers only work if pressed. But a user would expect the hotkey to work if the keyboard state "capslock" is active). So after all, it's more like a 3rd category besides keys and modifiers.
  3. As far as I know, none of the supported platforms do even allow registering a modifier/state modifier as hotkey. And thats exactly what the error tells you. You are trying to access a resource the operating system does not allow you to use.

This is, after all, not a problem of this library, but a general design choice of the operating systems and thus not easily possible. There might be a way using low-level event-hooks, but thats out of scope for this library, sorry! (Have a look a this StackOverflow Post. It might give you an idea)

I'm closing this as invalid, as I cannot help you in your case.