开发者

How do I programmatically change keyboard layout with Cocoa?

How can I programmatically change the keyboard layout in Cocoa?

Assume I have, say, two active ones "Estonian" and "U.S." in the System Preferences (i.e. those two layouts visible in the keyboard layout 开发者_JAVA技巧menu bar).

So how would I read that those two are available, and how would I programmatically change between them?


Use Text Input Source Services if you're on 10.5 or higher. It's based on CoreFoundation, so don't worry it's inside Carbon framework. If you need to support 10.4 or older, you need to use Keyboard Layout Services. I only know the former, so let me explain just that.

You use

CFArrayRef sourceList= TISCreateInputSourceList (NULL,false);

to get the array of TISInputSourceRef corresponding to all the enabled keyboard types. Then you can use other functions to examine them. To select/deselect one, you can use TISSelectInputSource and TISDeselectInputSource, etc.

Don't forget to CFRelease the array you got, though, even in the garbage collected environment, because the garbage-collection of CF objects are not automatic!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜