Как реализовано автоматическое повторение клавиатуры на ПК с Windows?
Я хочу иметь возможность перехватывать (и выполнять произвольную обработку) автоматически повторяющиеся нажатия клавиш в Windows. Я хотел бы знать, как реализовано автоматическое повторение клавиатуры, чтобы я знал, какие у меня есть варианты. т.е. я могу перехватить на:
- приложение,
- драйвер устройства и / или
- аппаратный уровень
?
Обновление: похоже, что автоповтор (плохо?) Генерируется на аппаратном уровне, а затем переопределяется драйверами устройств ( см. Здесь).
3 ответа
Чтобы изменить или отфильтровать поведение, вы можете перехватывать ключи с помощью ловушки:
SetWindowsHookEx
с помощью WH_KEYBOARD
Процедура подключения получает, среди прочего, счетчик повторов (из-за удержания клавиши)
Обратите внимание, что крючок клавиатуры низкого уровня (WH_KEYBOARD_LL
) не получает счетчик повторов.
Если все ваши окна созданы в одной и той же ветви, вы можете использовать привязку к потоку и избежать перемещения процедуры подключения в DLL.
Я смутно помню, что количество повторов генерируется самой клавиатурой, а перехватчик LL отправляет повторяющиеся события нажатия клавиш, хотя я могу ошибаться. В DOS частота и время повторения клавиш, которые были установлены в BIOS или через вызов BIOS, возвращались к значениям по умолчанию, когда клавиатура DIN или PS/2 была отключена и подключена повторно. Я не уверен, ПОЧЕМУ вам нужно точно знать.
Похоже, это "Не связано с программированием". Перейдите в "Опции доступности" на панели управления. Выберите "Настройки" в группе "Фильтрующие ключи", здесь вы можете отключить повторяющиеся клавиши для этого пользователя на этом компьютере.
Надеюсь, это то, что вы ищете.
PS Выше приведены инструкции для Windows XP.
Я полагаю, что вы, возможно, захотите отредактировать свой вопрос... фактический вопрос - "Как отключить автоповтор в Windows в ${yourLangauge}"...
На что мой ответ, я не имею понятия, я только когда-либо делал это в ассемблере (MASM 80286)... и даже тогда я нашел решение на BBS (кто-нибудь помнит их) и просто использовал его, Из памяти, перехват должен быть сделан на уровне драйвера устройства.
Реализация автоповтора ($100 говорит, что это ассемблер), вероятно, не проливает свет на его подавление... и Microsoft разыгрывает эти карты очень близко к груди.
Приветствия. Кит.
РЕДАКТИРОВАТЬ: Я просто подумал... методы могут теперь отличаться в разных версиях Windows и множество различных устройств... О, боже!