That's exactly how PowerDraw emulated KeyPress & KeyRelease events. It keeps two key buffers, the current and the previous one. If a key wasn't pressed in last buffer but is pressed in new one - KeyPressed will return true. The problem might occur if you call Update somewhere else in your code which will update the current buffer. You'd try to have only one Update call per frame or processing cycle.