如何获取NSTextView的输入源

时间:2012-06-18 15:11:01

标签: macos cocoa macos-carbon

我设置了一个小型测试应用程序,将App Delegate设置为NSTextView的委托。

有了这个,我提供了以下NSTextView委托方法:

- (BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString

我想确定哪个输入源生成replacementString

主要是,我有兴趣了解replacementString是来自角色查看器(编辑>特殊字符...)还是来自键盘。

我已经研究过使用Carbon Text Input API,它可以为您提供有关字符查看器是“被选中”的信息(在屏幕上与屏幕外),但我找不到一种方法来确定它是否负责生成文字字符串。

这样做的原因是我正在编写一个简单的插件,利用字符查看器将Unicode字符转换为HTML实体。字符查看器将所有字符放在一个位置,并且可在操作系统级别使用。似乎比使用我自己更有意义。

可以在Cocoa或Carbon中完成吗?

非常感谢任何帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

从以下代码中找到了一些关于文本输入源的知识:

CFArrayRef TISCreateInputSourceList (
   CFDictionaryRef properties,
   Boolean includeAllInstalled
);

Apple documentation

从以下link中了解到这一点,这也可能对您有所帮助。欢呼声。