Why not use your own capabilities? I added a PreviewKeyDown event in the window and two text fields. Press and hold the key in the second text box, and this will be the output:
Repeat: False, key: D Repeat: True, key: D Repeat: True, key: D Repeat: True, key: D Repeat: True, key: D Repeat: True, key: D Repeat: True, key: D Repeat: True, key: D
This is the code I used:
private void Grid_PreviewKeyDown(object sender, KeyEventArgs e) { textBox1.Text += String.Format( "Repeat: {0}, key: {1}\n", e.IsRepeat, e.Key); }
Update: removed all my code (there was some garbage from other tests) and paste it into the code as is. This gives me the following output in the console, so I understand we have to look at other reasons ...
UP: key: D, repFalse, toggTrue, dowTrue, upFalse UP: key: D, repTrue, toggTrue, dowTrue, upFalse UP: key: D, repTrue, toggTrue, dowTrue, upFalse UP: key: D, repTrue, toggTrue, dowTrue, upFalse UP: key: D, repTrue, toggTrue, dowTrue, upFalse UP: key: D, repTrue, toggTrue, dowTrue, upFalse