2015-03-24 3 views
-2

Для моего приложения все, что я хочу сделать, это переместить мышь, чтобы скопировать что-то из буфера обмена, переместить указатель мыши в текстовое редактирование и вставить его туда. У меня все работает, кроме пасты. Как смоделировать пасту в какао-приложении? При вставке я имею в виду команду + v на моем macbook pro. Спасибо.Как смоделировать вставку в приложении для какао?

Это то, что я пробовал, но все, что он делает, заканчивается тем, что набирает «v» в текстовое редактирование. Я не думаю, что он обнаруживает CMD.

CGEventRef event1, event2, event3, event4; 
    event1 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)55, true); // CMD 
    event2 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)9, true); // v 
    event3 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)9, false); // v 
    event4 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)55, false); // CMD 

    CGEventPost(kCGSessionEventTap, event1); 
    CGEventPost(kCGSessionEventTap, event2); 
    CGEventPost(kCGSessionEventTap, event4); 
    CGEventPost(kCGSessionEventTap, event3); 

ответ

0

Вам нужны только два события, но вам необходимо применять модификаторы.

CGEventRef event1, event2; 
event1 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)9, true); // v 
event2 = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)9, false); // v 

CGEventSetFlags(event1, (CGEventFlags) kCGEventFlagMaskCommand); 
CGEventSetFlags(event2, (CGEventFlags) kCGEventFlagMaskCommand); 

CGEventPost(kCGSessionEventTap, event1); 
CGEventPost(kCGSessionEventTap, event2); 

Кроме того, вы можете #import <HIToolbox/Events.h> и использовать kVK_ANSI_V вместо магического числа 9.