在 OS X 中切换到特定输入源

在 OS X 中切换到特定输入源

我对此主题有一个后续问题:切换到特定输入源

阿斯穆斯发布这个答案

我在 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。请参阅这个问题

相关内容