我想允许我的应用程序执行诸如按Enter键或键入单词而不实际触摸键的操作。这可能吗?如何制作一个允许您键入不同应用程序的屏幕键盘?
答案 0 :(得分:2)
关于“如何创建屏幕键盘”的问题非常广泛,因为有许多有效的方法,而不是单一和规范的方法。因此,除非您能够缩小具体问题,否则您可能无法获得有关此任务的高级详细信息的帮助。
但是,就键盘事件而言,您可以使用Quartz Event Services API来制作键盘事件。具体而言,您正在寻找CGEventCreateKeyboardEvent
和CGEventPost
。
// CGEvent functions
#import <ApplicationServices/ApplicationServices.h>
// kVK_* values
#import <Carbon/Carbon.h>
// press and release "abcd"
int virtualKeys[] = { kVK_ANSI_A, kVK_ANSI_B, kVK_ANSI_C, kVK_ANSI_D };
for (int i = 0; i < 4; i++)
{
// press the letter
CGEventRef event = CGEventCreateKeyboardEvent(NULL, virtualKeys[i], YES);
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);
// wait .1 seconds
usleep(100000);
// release the letter
event = CGEventCreateKeyboardEvent(NULL, virtualKeys[i], NO);
CGEventPost(kCGHIDEventTap, event);
CFRelease(event);
}
对于大写字母,您需要在信件前“按”kVK_Shift
(并且您还需要将其释放)。