Alexander, I have an idea about how to clean up the AltGr key. Check bit 30 of the WM_KEYDOWN message's lParam. Bit 30 is the current key state, '0' for up, '1' for down. I wonder if the fake Control_L has a bit 30 of 0? Harold