如何使用Cocoa以编程方式更改键盘布局?

时间:2010-04-09 14:36:31

标签: objective-c cocoa macos

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

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

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

1 个答案:

答案 0 :(得分:3)

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

您使用

CFArrayRef sourceList= TISCreateInputSourceList (NULL,false);

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

不要忘记你所拥有的数组CFRelease,即使在垃圾收集环境中也是如此,因为CF对象的垃圾收集不是自动的!