The basic idea revolves around gafAsyncKeyState (gaf = global af?), which is an undocumented kernel structure in win32kbase.sys used by NtUserGetAsyncKeyState. By first locating and then parsing this structure, we can read keystrokes the way that NtUserGetAsyncKeyState does, without calling any APIs at all. As always, game cheaters have been ahead of the curve, since they have been battling in the kernel with anti-cheats for a long time. One thread explaining this technique dates back to 2019 for example.