Send {scYYY} (all modes) doesn't work properly. How do I know? I've just implemented it myself recently in an application of my own, and it's compatible with DirectX apps in fullscreen. AHK doesn't seem to be.
Recommendation:
{scYYY} option should ALWAYS attempt to use User32.SendInput API. Furthermore, wVk field of KEYBDINPUT struct should remain empty. wScan field should only be used. dwFlags should be set to 0x0008 (KEYEVENTF_SCANCODE).
Why?
If all other options for sending keys fail, this is the most compatible method as it's closest to actual physical keyboard emulation compared to all the other APIs and methods.