Изменить скорость нажатия клавиш C ++ - PullRequest
0 голосов
/ 16 сентября 2009

В основном, когда вы печатаете, происходит событие нажатия клавиши. Если клавиша удерживается более определенного времени (~ 1 сек), она нажимается несколько раз, пока не произойдет нажатие клавиши. Я хотел бы изменить время, необходимое для автоматической репрессии ключа в моем приложении c ++. Как это можно сделать?

Спасибо

Ответы [ 5 ]

3 голосов
/ 16 сентября 2009

Скорость, с которой нажатие клавиш автоматически повторяется, контролируется Windows.

Если вы хотите манипулировать автоматическими повторными нажатиями клавиш, может быть более выгодно опрашивать состояние клавиши, а не ждать события нажатия клавиши. Это зависит от того, насколько отзывчивым должно быть ваше приложение.

Эта статья может помочь вам выяснить, как запрашивать ключевые состояния: ссылка

1 голос
/ 10 июня 2012

Вы можете использовать функцию SystemParametersInfo для изменения задержки клавиатуры и частоты обновления, как описано в этой теме группы новостей .

0 голосов
/ 20 сентября 2011

Возможно, вы сможете подключиться к Windows API, но это может контролироваться ОС. Точно сказать не могу... Может потребоваться вручную нарисовать команду, например, для имитации нажатия клавиши несколько раз через заданное количество секунд после нажатия клавиши.

0 голосов
/ 18 сентября 2009

Использовать SetKeySpeed ​​api (Kernel)

0 голосов
/ 16 сентября 2009

Простой способ справиться с этим - установить буфер времени вокруг события OnKeyDown. Установите таймер, который определяет, передается ли управление вторичному обработчику событий. Если время таймера истекло, то все в порядке, чтобы передать управление. Если таймер не истек, вы должны вернуться и оставить событие необработанным. Запустите таймер прямо перед передачей управления вашему вторичному обработчику событий.

void KeyDownHandler(...)
{
    // ...
    if (TimeLeft() <= 0)
    {
        StartTimer();
        handleKeyDown();
    }
}

Таймер лучше, чем подсчет повторяющихся событий, потому что вы не можете предполагать, что в данной системе будет установлена ​​та же частота повторения, что и у вас.

Я согласен со Стюартом, что опрос состояния ключа может работать лучше. Это зависит от того, чего вы пытаетесь достичь.

Также обратите внимание, что этот тип поведения может сильно раздражать вашего пользователя - зачем вам игнорировать дубликаты?

...