#include "humanizerkeyhandler.h" #include HumanizerKeyHandler::HumanizerKeyHandler(std::unique_ptr 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(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); }