При зажатии клавиши на клавиатуре начинается автоповтор нажатий, т.е. одна и та же клавиша начинает нажиматься несколько раз. У меня вот такой вопрос: как программно задавить в любой момент времени автоповтор нажатия клавиши?
Если пользователь нажимает клавишу моя прога перехватывает нажатие и начинает что-нибудь делать, и вот как раз в этот момент надо приглушить автоповтор нажатия.
Физически это можно сделать кратковременно нажав в этот момент времени другую клавишу. Например при зажатой клавиши Win надо нажать клавишу T:
D - Left Windows 91 91 1
D - Left Windows 91 91 1
D - Left Windows 91 91 1
D - Left Windows 91 91 1
D - T 84 20 0
U - T 84 20 128
U - Left Windows 91 91 129
При этом автоповтор нажатий прекратится, но клавиша Win останется нажатой (последняя строка в примере — клавишу Win я отпустил через довольно большой промежуток времени и это показывает, что после нажатия клавиши T не было больше автоповтора Win).
Но все это работает если только физически нажать клавишу T на клавиатуре. При программной эмуляции — SendInput, автоповтор Win не прекращается.
Как-то можно разрулить это без создания драйвера/фильтра и без режима ядра?
Не пытайтесь меня переубедить, что это плохая идея, или как-то по-другому решить эту проблему. ЭТО ИМЕННО ТО, ЧТО МНЕ НУЖНО, я уверен. Сейчас я обхожусь и без этого — фильтрую информацию о нажатиях в своем приложении, но теперь приложение слишком разрослось и это стало очень накладно.