【问题标题】:How do I programmatically change keyboard layout with Cocoa?如何使用 Cocoa 以编程方式更改键盘布局?
【发布时间】:2010-04-09 14:36:30
【问题描述】:

如何以编程方式更改 Cocoa 中的键盘布局?

假设我有两个活跃的“爱沙尼亚”和“美国”在系统偏好设置中(即键盘布局菜单栏中可见的这两个布局)。

那么我将如何得知这两个是可用的,以及我将如何以编程方式在它们之间进行更改?

【问题讨论】:

    标签: objective-c cocoa macos


    【解决方案1】:

    如果您使用的是 10.5 或更高版本,请使用 Text Input Source Services。它基于 CoreFoundation,所以不用担心它在 Carbon 框架内。如果需要支持 10.4 或更早版本,则需要使用Keyboard Layout Services。我只知道前者,所以让我解释一下。

    你使用

    CFArrayRef sourceList= TISCreateInputSourceList (NULL,false);
    

    获取与所有启用的键盘类型对应的TISInputSourceRef 数组。然后您可以使用其他功能来检查它们。要选择/取消选择一个,您可以使用TISSelectInputSourceTISDeselectInputSource等。

    不要忘记CFRelease你得到的数组,即使在垃圾收集环境中,因为 CF 对象的垃圾收集不是自动的!

    【讨论】:

    • Yikes,Core Foundation :S 看起来我必须阅读一下这方面的内容,因为我只研究 Objective-C 和 Cocoa,而不是低级别的东西。不过谢谢,我会试着弄乱它,看看它是怎么回事,然后回复你。
    • 别担心,Core Foundation 只是 OS X 对象系统的 C API。它的行为与NSObjectNSArray 等非常相似。事实上,CFArrayRef 可以转换为NSArray* 并照此使用。 Apple 的文档通常非常好。玩得开心,祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多