最近因为公司项目需要,需要做个模拟键盘输入软件来作为一个第三方的软件来控制另外一个软件,找了很多资料,终于解决了,至此把我遇到的问题贴出来。
1.单个键盘输入:
CGEventRef push = CGEventCreateKeyboardEvent(NULL, kVK_ANSI_P, true);
CGEventPost(kCGHIDEventTap, push);
// CFRelease(push);
首先创建一个键盘事件,其次post此事件进行输入即可,CFRelease()本人进行测试,在目前的xcode8版本下,不管加不加都不会造成内存泄漏,这个方法是我目前找到最简单的一个方法。
2.组合键盘的输入:
一开始认为是只要command+i(以command+i为例),最终的结果是分别按出了command和I键,并没有任何的反应.
后来经过各方面查资料在cocoachina上面找到一句精辟的话:CGEventRef+CGEventSetFlags+CGEventPost
完美解决了我的问题:
//快捷键command+i
CGEventRef push = CGEventCreateKeyboardEvent(NULL, kVK_ANSI_I, true);
CGEventSetFlags(push, kCGEventFlagMaskCommand);
CGEventPost(kCGHIDEventTap, push);