From 32fe0493c4e8262719482f66faa87697694fd92d Mon Sep 17 00:00:00 2001 From: Weslly Date: Thu, 23 Mar 2017 10:36:52 -0300 Subject: [PATCH] Add auto-type {CLEARFIELD} on mac --- src/autotype/mac/AutoTypeMac.cpp | 27 +++++++++++++++++++++++++++ src/autotype/mac/AutoTypeMac.h | 1 + 2 files changed, 28 insertions(+) diff --git a/src/autotype/mac/AutoTypeMac.cpp b/src/autotype/mac/AutoTypeMac.cpp index 08df6310..504103fc 100644 --- a/src/autotype/mac/AutoTypeMac.cpp +++ b/src/autotype/mac/AutoTypeMac.cpp @@ -488,3 +488,30 @@ void AutoTypeExecutorMac::execKey(AutoTypeKey* action) m_platform->sendKey(action->key, false); usleep(25 * 1000); } + +void execClearFieldHelper(uint16 keyCode, bool isKeyDown, bool modifier = false) +{ + CGEventRef keyEvent = ::CGEventCreateKeyboardEvent(nullptr, keyCode, isKeyDown); + if (keyEvent != nullptr) { + if (modifier) { + ::CGEventSetFlags(keyEvent, kCGEventFlagMaskCommand); + } + + ::CGEventPost(kCGSessionEventTap, keyEvent); + ::CFRelease(keyEvent); + } + usleep(25 * 1000); +} + +void AutoTypeExecutorMac::execClearField(AutoTypeClearField* action = nullptr) +{ + Q_UNUSED(action); + + execClearFieldHelper(kVK_ANSI_A, true, true); + execClearFieldHelper(kVK_ANSI_A, false); + execClearFieldHelper(kVK_Command, false); + execClearFieldHelper(kVK_Delete, true); + execClearFieldHelper(kVK_Delete, false); + + usleep(25 * 1000); +} diff --git a/src/autotype/mac/AutoTypeMac.h b/src/autotype/mac/AutoTypeMac.h index 5fbbf763..c2dde398 100644 --- a/src/autotype/mac/AutoTypeMac.h +++ b/src/autotype/mac/AutoTypeMac.h @@ -73,6 +73,7 @@ public: void execChar(AutoTypeChar* action) override; void execKey(AutoTypeKey* action) override; + void execClearField(AutoTypeClearField* action) override; private: AutoTypePlatformMac* const m_platform;