That's not
entirely true, McGrue. You can use other keys to move the player; I've done so! It's the dumbest workaround ever, and I'm sure there's a better way involving HookKey, but here it is (in this case, remapped to the W/S/A/D keys). This needs to be put in a function that's either HookRender()ed or HookTimer()ed... I use HookRender():
// HAHA BEST WAY TO REMAP KEYS EVAR
if(key[SCAN_W]) key[SCAN_UP] = 1;
else key[SCAN_UP] = 0;
if(key[SCAN_S]) key[SCAN_DOWN] = 1;
else key[SCAN_DOWN] = 0;
if(key[SCAN_A]) key[SCAN_LEFT] = 1;
else key[SCAN_LEFT] = 0;
if(key[SCAN_D]) key[SCAN_RIGHT] = 1;
else key[SCAN_RIGHT] = 0;
If you hit the arrow keys, your player moves a few pixels but stops. I suppose that could be used for edging around so you don't fall off things or what have you. Anyway, I imagine that the b1 etc. keys could be remapped similarly.
Also, you should put "whitespace: normal;" in the style for <pre> tags; it should alleviate the double-spacing issue in code listings.