提问人:Locksleyu 提问时间:11/4/2023 最后编辑:Locksleyu 更新时间:11/4/2023 访问量:32
创建与不同语言输入法交互的键盘事件
Creating keyboard events that interact with different language input methods
问:
我有一个需要生成击键的 Mac 应用程序,并且正在使用 CGEventCreateKeyboardEvent()、CGEventKeyboardSetUnicodeString() 和 CGEventPost() 执行此操作。这适用于英语,但是如果我将键盘输入法更改为非英语语言,我创建的击键将显示为英语,而不是通过我设置的语言。
例如,当我输入“a”键时,如果我设置日语,我希望看到“あ”,但我看到的是“a”。
是否可以让这些 API 通过当前启用的任何输入法?或者我需要不同的 API 吗?
这是相关代码。变量“s”是包含相关字符的字符串。在上面的示例中,它只是“a”。
NSRange composedRange = [s rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, s.length)];
unichar *characters = malloc(sizeof(unichar) * composedRange.length);
[s getCharacters:characters range:composedRange];
CGEventRef eventRef = CGEventCreateKeyboardEvent( nil, 0, true );
CGEventKeyboardSetUnicodeString(eventRef, composedRange.length, characters);
CGEventPost(kCGSessionEventTap, eventRef);
答: 暂无答案
评论
s
あ
CGEventKeyboardSetUnicodeString
CGEventKeyboardSetUnicodeString