Do you use key repeat events for movement? Or just key press and release events?
Key down/up & a movement loop. Even when the game was using tile based movement, it had such a system implemented. The default repeat macros are too broken to be used for movement.

Do you use key repeat events for movement? Or just key press and release events?
I've never measure it, but I always figured it was quite a source of lag to have 50 clients spamming the server with "I'm still holding the arrow key" messages as they're moving. If you only macro the key up and down events the server can deduce that the key is still being held without any extra messages being sent.