I suggest you try gets().
gets() handles moving the cursor for you.
gets() can handle the user changing ACmdHere to ACmdOverHere.
Using gets() you don't need GetKey, isalnum, ispunct, putchar, or tests for LEFT_ARROW_KEY, etc.
GetKey isn't in the ANSI C library so you may have trouble porting it to another platform like embedded linux.