24 May 2024, 20:41
Why would you think that #1 is a bug? Suppressing Shift (Ctrl is not suppressed) means that the logical state of the Shift key does not change. If the logical state of the Shift key is not down, the hotkey >^+a should not fire. This is the correct behaviour. If you don't want the suffix (Shift) to be suppressed, you are supposed to use the tilde (~) modifier.
#2 behaves differently because ^Shift is implemented by the OS, as a registered hotkey. The OS passes the key-down to the keyboard hook, but does not pass it to the active window (so it behaves as though there is one final keyboard hook which suppresses the key-down, after AutoHotkey has been notified of it). The key-up is passed to both the keyboard hook and the active window. AutoHotkey's keyboard hook only pays attention to "hook" method hotkeys, so does not treat Shift as though it will be suppressed. The hook also wouldn't know if some other process or script registered ^Shift as a hotkey.
Your topic title says "suppressing modifier keys", but I think you're only referring to sending vk07, which is not suppressing the modifier key at all, but suppressing whatever action that would take place if you press and release Ctrl+Shift without pressing any other combinations (probably a language-switch). Maybe you didn't realize that one of the hotkeys does actually suppress the modifier key.