我有一段非常简单的代码,旨在模拟键盘事件。下面的简单示例应输入“Cz” - 按下shift键,按下c键,按下c键,然后按下shift键。然后 z 键向下和向上。
但有时顺序似乎会变得混乱。当我创建一个计时器每秒调用此例程时,输出应该是 CzCzCzCz...但是这是我得到的:
CZcZCZCzczCzczCzczCZCZCzCz
我将再次运行它:
CzCzCzCzCZCzCZCzCZCzCZCzCZCzCzCz
不同的。同样是错误的。
代码:
e1 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)56, true);
CGEventPost(kCGSessionEventTap, e1);
CFRelease(e1);
e2 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)8, true);
CGEventPost(kCGSessionEventTap, e2);
CFRelease(e2);
e3 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)8, false);
CGEventPost(kCGSessionEventTap, e3);
CFRelease(e3);
e4 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)56, false);
CGEventPost(kCGSessionEventTap, e4);
CFRelease(e4);
e7 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)6, true);
CGEventPost(kCGSessionEventTap, e7);
CFRelease(e7);
e8 = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)6, false);
CGEventPost(kCGSessionEventTap, e8);
CFRelease(e8);
在如何实现 Shift 键的 keydown 和 keyup 方面,我是否遗漏了什么?我认为这可能是一个错误 - 我应该在哪里报告它?