When you hold a key down, it takes a while (maybe half a second) before the key starts repeating, and even then the repetitions have some kind of time gap between them. INKEY$ has this behaviour built into it. It's great for typing stuff and moving around menus, where you don't want a key press to register a thousand times just because you held it down for 300 milliseconds.
But, INKEY$ is no good when you want to check if a certain key is held down at a given moment (which is what you need if you want to detect multiple keys being held down together, or if you want to know exactly when a key is prseed and released).
In that case, you'll need to go into more advanced areas. See http://www.network54.com/Forum/171757/message/1008427249/Detecting+Multiple+Key+presses-- , the first reply by Mac has a good assembly-language routine that does the job. It's not easy to use, but it doesn't ever miss keys.