Thanks for the feedback.
I haven't been replying because I've been worrying about other things such as entering first year college, in which I think I'm screwed, and working on this can take up a lot of time, maybe because I'm mentally challenged (in a way)...
As for how the program works, anything you need to know or would want to know is available here:
http://msdn.microsoft.com/en-us/library/ms645530%28VS.85,loband%29.aspxThere are some major bugs in the beta.
I chose to do a look up from the virtual key code instead of scan code because virtual key is device-independent whereas scan code can be specific/vary from keyboard to keyboard.
Whether virtual-key is used or scan code is used, a new virtual keyboard layout (UI) would have to be created in order to support unique key layouts.
In your case, I don't think VKey vs Scan code is causing the error. The scan code for each key does not change when you enable the Colemak layout, assuming that you are using the application that remaps each key from QWERTY to COLEMAK and not a native COLEMAK keyboard.
The Colemak remapping app uses a low-level keyboard hook to block key input from the keyboard and then injects the COLEMAK equivalent of that key (F to T) with probably the SendInput() or keybd_event() API.
Because both applications use keyboard hooks, the results can be funky, or vary, depending on which application is ran first.
And KeyScan sometimes detects both the normal and injected key inputs.
Also there's mistake in interpreting key up/down.
The program does log keys (should be apparent), but it doesn't send them to anyone or anything. This isn't a keylogger.