autotyper/humanizerkeyhandler.cpp

35 lines
964 B
C++

#include "humanizerkeyhandler.h"
#include <unistd.h>
HumanizerKeyHandler::HumanizerKeyHandler(std::unique_ptr<KeyHandler> keyHandler)
: m_keyHandler(std::move(keyHandler))
{
}
void HumanizerKeyHandler::Key(SpecialKey key, KeyModifiers mods)
{
m_keyHandler->Key(key, mods);
InsertDelay(0, key, mods);
}
void HumanizerKeyHandler::Key(char key, KeyModifiers mods)
{
m_keyHandler->Key(key, mods);
InsertDelay(key, SpecialKey::NONE, mods);
}
void HumanizerKeyHandler::InsertDelay(char, SpecialKey currentKeySpecial, KeyModifiers mods)
{
unsigned delay = minDelay + static_cast<unsigned>(rand()) % (maxDelay - minDelay);
if (currentKeySpecial == SpecialKey::RETURN) {
delay = delay * 2;
}
if (mods & KeyModifiers::KM_SHIFT_MASK) {
delay = (delay * 3) / 2;
}
if (currentKeySpecial == SpecialKey::HOME || currentKeySpecial == SpecialKey::END) {
delay = (delay * 3);
}
usleep(1000 * delay);
}