gpt4 book ai didi

macos - 获取 NSEvent 中的字符重音

转载 作者:行者123 更新时间:2023-12-03 16:53:52 26 4
gpt4 key购买 nike

在 Cocoa 中,您可以重写某些类中的 keyDown(event:NSEvent) 方法,以便在用户按下某个键时收到通知。在大多数情况下,事件将包含按键代码和按下的字符等。但是,如果您在美式扩展键盘上按 '",您将获得按键代码,但不会获得符号。当您键入时,例如在文本编辑器中,您将在橙色背景上看到相应的符号,然后,如果您键入一个字母,如果该字母可以用该符号重音,您将获得重音字母,例如 ò öó

我可以以某种方式从事件中获取口音,或者在事件结束后立即在某个地方查找它吗?

最佳答案

首先,这样的键被称为“死键”。它们本身并不产生字符,而是修改后续击键产生的字符。

关于你的问题,死键事件没有一个重音。死键只会改变内部状态机的状态。在某些键盘布局中,单个死键可以具有多种效果,具体取决于后续键。例如,在爱沙尼亚语键盘布局中,Option-(退格键左侧的键)设置死键状态,将“a”更改为“ä”,“i”更改为“ů”,“z”更改为“ż”,以及“ö”到“ő”。

无论如何,如果你想手动处理关键事件,你可以使用 UCKeyTranslate() 。您需要键盘布局'uchr'数据,您可以使用TISCopyCurrentKeyboardLayoutInputSource()获取并调用TISGetInputSourceProperty()用 key kTISPropertyUnicodeKeyLayoutData .

您还需要键盘类型,可以从CGEvent获取。其中NSEvent基于。调用CGEvent()关于NSEvent然后调用CGEventGetIntegerValueField()用 key kCGKeyboardEventKeyboardType .

您还必须将事件中修饰键的 Cocoa 值转换为向右移动 8 位的 Carbon 值( shiftKeycmdKey 等的组合)。

您需要跟踪正在运行的死键状态。最初,您将其设置为 0,然后对于每个关键事件,您将设置 UCKeyTranslate()更新它。当焦点转移到另一个控件或窗口时,您可以将其重置为 0。

如果从 UCKeyTranslate() 返回时死键状态非零有一把死 key 。 UCKeyTranslate()也可能产生了人物。也就是说,击键既可以产生真实字符,又可以设置死键状态,该状态将修改后续的击键。

如果你想用一个字符来代表死键状态,你可以通过UCKeyTranslate()来处理击键。第二次处于死键状态和 kUCKeyTranslateNoDeadKeysMask在选项中。我相信这就是确定“标记”字符(以橙色显示)的方式,尽管正如我上面所说,该字符不一定与死键状态实际上如何影响后续击键有任何特定关系。您还可以处理假按空格键来确定该字符。

关于macos - 获取 NSEvent 中的字符重音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33203020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com