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

标签 objective-c cocoa macos

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

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

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

最佳答案

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

你使用

CFArrayRef sourceList= TISCreateInputSourceList (NULL,false);

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

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

关于objective-c - 如何使用 Cocoa 以编程方式更改键盘布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2608303/

相关文章:

ios - 应用程序中的高内存使用率

Java RXTX 库不加载 native 库

objective-c - 状态项中的默认文本字段

objective-c - cocoa 中少量数据的数据持久化

macos - 当 "Operation not permitted"和 `sudo` 不起作用时,如何在 macOS 上避免 `bypass`

ruby - 如何在 OSX 上正确更新系统 ruby​​ 版本到最新版本 (2.2.1)

ios - 尝试在两个 View Controller 之间传递数据

ios - 如何以编程方式在 iOS Objective C 中使文本标签的某些部分加粗?

iphone - CFAttributedStringSetAttribute 和 NSNumber 中的 EXC_BAD_ACCESS?

ios - 如何测试报刊亭新一期?