我对此主题有一个后续问题:切换到特定输入源
我在 AppleScript 中想出了一个更好的解决方案,只要你知道要切换到的键盘布局的名称。创建一个这样的函数:
on changeKeyboardLayout(layoutName) tell application "System Events" to tell process "SystemUIServer" tell (1st menu bar item of menu bar 1 whose description is "text input") to {click, click (menu 1's menu item layoutName)} end tell end changeKeyboardLayout
然后调用它
changeKeyboardLayout("English") changeKeyboardLayout("German")
请注意,键盘布局的名称是本地化的,例如,在德语系统上,上述示例需要调用“Englisch”和“Deutsch”。
因此,我尝试创建这样的脚本,用于在西班牙系统上切换到越南语:
on changeKeyboardLayout("Vietnamita")
tell application "System Events" to tell process "SystemUIServer"
tell (1st menu bar item of menu bar 1 whose description is "text input") to {click, click (menu 1's menu item "Vietnamita")}
end tell
end changeKeyboardLayout
不起作用。如果我删除单词“Vietnamita”的引号,或者删除两个引号,也不起作用。您能看出我做错了什么吗?谢谢。
答案1
你应该这样称呼它:
on changeKeyboardLayout(layoutName)
--
end changeKeyboardLayout
changeKeyboardLayout("Vietnamita")
或者直接删除处理程序:
tell application "System Events" to tell process "SystemUIServer"
tell (menu bar item 1 of menu bar 1 where description is "text input")
click
click menu item "Vietnamita" of menu 1
end tell
end tell
如果您收到“辅助设备访问已被禁用”之类的错误,请在辅助功能偏好设置窗格中启用辅助设备访问。
您还可以使用 changeInput 或 KeyRemap4MacBook。请参阅这个问题。