在什么情况下 [NSEvent characters] 可以是长度大于 1 的 NSString?

Under what conditions can [NSEvent characters] be a NSString of length greater than 1?

NSEvent 有一个字符 属性,它是一个对关键 up/down 事件有效的 NSString。什么情况下字符串长度可以大于1?

到目前为止我能找到的唯一条件是 NSEvent 对应于来自 IME(输入法编辑器)的输入。

编辑 - 我知道代理对案例,但在问这个问题时不知何故从我脑海中溜走了。我对没有的情况更感兴趣。字素(字符)本身大于 1。

Under what conditions can the string length be greater than 1?

当您有一个 keyboard/input 方法可以输入任何需要 UTF-16 代理项对的单个字符时,例如a (Unicode Linear B Syllable B008 A),那么 length 将是 2。这是因为 length returns 16 位代码单元的数量,而不是字符的数量。

高 unicode 代码点使用 Mac OS X 中的字符序列进行编码。尝试 .

您也可以通过以编程方式发布的事件获得此信息。 CGEventKeyboardSetUnicodeString() 允许调用者将任意字符串附加到按键事件。