【发布时间】:2015-07-25 05:22:49
【问题描述】:
我编写了需要德语和英语输入的 python 软件。目前,我正在使用 Mac 快捷方式 cmd-space 来快速更改键盘布局,但我需要这样做数百次,这会减慢速度。由于我确切知道何时需要英语和德语输入,有没有办法以编程方式更改 python 中的键盘语言?
我正在使用 Mac OS X Yosemite。
【问题讨论】:
我编写了需要德语和英语输入的 python 软件。目前,我正在使用 Mac 快捷方式 cmd-space 来快速更改键盘布局,但我需要这样做数百次,这会减慢速度。由于我确切知道何时需要英语和德语输入,有没有办法以编程方式更改 python 中的键盘语言?
我正在使用 Mac OS X Yosemite。
【问题讨论】:
是的,但不好玩。
您要查找的方法是TISSelectInputSource 和相关的TIS methods。 TIS 是一个用 C 编写的 Core Foundation 库。您需要使用 pyobjc。
真正设置好之后,过程就很简单了。使用TISCreateInputSourceList 获取您要使用的语言的TISInputSourceRef 并将其传递给TISSelectInputSource。
【讨论】:
TkTech 提供了一些通用指针,但似乎 pyobjc 实际上并没有包装您需要的两个 Carbon 方法(TISCreateInputSourceList 和 TISSelectInputSource)。事实上,pyobjc 在 Python 3 中完全停止了对 Carbon 的支持。
所以是的,pyobjc 将有助于在 Python 中调用 Objective-C 代码,但您将不得不手动包装您需要的这两个方法,可能使用 ctypes。执行此操作的代码比应有的更长且有点乏味,所以我将您链接到my implementation。
【讨论】:
使用 subprocess 从 python 调用 xkbswitch 可能比您在此处找到的其他解决方案更容易。
【讨论】: