切换到特定的输入源


23

在Mac OS X中,有一个键盘快捷键可以激活的输入源之间切换。

替代文字

是否可以切换特定语言?因此,如果您有3种输入法,则可能有3种快捷方式:Ctrl-1英语,Ctrl-2西班牙语和Ctrl-3俄语。


键盘布局和界面语言是独立的。而且由于界面语言仅在重新启动程序后才适用,因此无论如何重新启动应用程序,您通过快捷方式获得的任何东西都会被否定。
丹尼尔·贝克

我对更改界面语言不感兴趣。只需要输入语言。
Nikem 2010年

我简化并澄清了您的问题。如果您认为我做错了(我是新来的),请回复。
丹尼尔·贝克

Answers:


7

我向您介绍最丑陋的“解决方案”:

  • 在“ 系统偏好设置”»“通用访问”中,启用对辅助设备的支持,
  • 并在系统偏好设置»语言和文本的菜单栏中显示“输入源”菜单。
  • 确保在“ 系统偏好设置”»“键盘”»“键盘快捷方式”»“键盘和文本输入”中Ctrl-F8为“ 将焦点移至状态菜单”定义了快捷方式
  • 确保“输入源”菜单是最左边的菜单项,可以在按住的同时拖动来移动它Cmd

使用AppleScript Editor并编写三个脚本,每个脚本带有以下代码:

tell application "System Events"
    key code 100 using control down # press Ctrl-F8
    delay 0.5 # wait a bit, UI might be slow
    key code 125 # press down to open the menu
    keystroke "german" # name of your desired language, in my case tested using German
    key code 36 # press enter
end tell

为每种语言保存一次,切换出语言名称。如果您想按不同的键,或要分配不同的键,请Ctrl-F8此处的键代码代替。您还可以通过按几次向右箭头键,从其最左侧的位置移动“输入源”菜单。

但是,可以根据需要调用脚本,例如使用应用程序启动器(Quicksilver,Launchbar等),或使用Automator将它们包装在Services中,然后在System Preferences»Keyboard»Keyboard Shortcuts»Services中为它们分配键盘快捷


1
@Nikem工作了吗?
丹尼尔·贝克

1
是的,它有效。
Nikem 2010年

1
安达(丹尼尔),尽管我选择了其他解决方案,但是仍然感谢您向我介绍Action Script and Services :)
Nikem 2010年

@Nikem不客气。如果您发现我的答案有用,请单击旁边的“向上箭头三角形”,以对我的答案进行投票。您也可以通过单击答案旁边的对勾来接受答案(表明这是您最喜欢的答案,并认为您的问题已解决)。顺便说一下,ActionScript是Adobe,这是AppleScript。
丹尼尔·贝克

@Daniel实际上,我不知道推荐哪个答案。我选择了我的,但您的选择更广泛使用...
Nikem

12

考虑到您要切换到的键盘布局的名称,我在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”。


绝对比我的好。我真的应该正确学习我的AppleScript。
丹尼尔·贝克

多年来,它一直运行良好,但是对于Catalina来说,菜单栏中的“输入文本”似乎不再可用
Frank Mittelbach

6

一种选择是下载changeInput为shell命令(如)分配快捷方式changeInput U.S.

您还可以使用KeyRemap4MacBook:

<?xml version="1.0"?>
<root>
  <vkchangeinputsourcedef>
    <name>KeyCode::VK_CHANGE_INPUTSOURCE_HIRAGANA</name>
    <inputsourceid_equal>com.apple.inputmethod.Kotoeri.Japanese</inputsourceid_equal>
  </vkchangeinputsourcedef>
  <item>
    <name>change_inputsources</name>
    <identifier>change_inputsources</identifier>
    <autogen>__KeyToKey__ KeyCode::E, VK_OPTION | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_ENGLISH</autogen>
    <autogen>__KeyToKey__ KeyCode::H, VK_OPTION | ModifierFlag::NONE, KeyCode::VK_CHANGE_INPUTSOURCE_HIRAGANA</autogen>
  </item>
</root>

请参阅private.xml文档

VK_CHANGE_INPUTSOURCE_ENGLISH在vkchangeinputsourcedef.xml中定义。您可以从EventViewer.app查看输入源的ID。没有| ModifierFlag::NONE例如,第一设置也将适用于选项-命令-E。有关关键代码值预定义设置,请参见源。


4

我知道这是一个老问题。但是即使在2016年底,我仍然没有找到一个简单而又不错的解决方案。因此,我制作了IMEShortcuts,在Sierra上工作。您可以为任何特定的输入方法分配自定义的快捷方式。请试一试。如果你们发现任何错误,我将很乐意为您提供帮助。

此外,铁锁(被称为KeyRemap4MacBook)是Mac很大键盘定制。但这有点复杂,目前在Sierra上已失效。如果您使用优胜美地或El Capitan,那将是另一个不错的选择。


感谢IMEShortcuts!这是很不错的。如果您在菜单栏中添加图标以显示活动语言,我很乐意为此支付5美元左右的费用(因此,我不需要菜单栏中的IMEshortcuts和app图标都占用空间)。我还希望能够自定义所使用的图标-例如,我想使用加拿大法语输入,因为它离美国QWERTY更近,但是我想看到法国国旗,因为加拿大国旗并不表示“法国”我。这些东西会让它变得很棒!
iconoclast

警告:如果您过去从未下载过IMEShortcuts(在域名注册过期并被带有chrome扩展恶意软件的擅自占地者页面取代之前),请在解决该问题之前不要从rockcell.com上获取任何东西。
ecmanaut

1

我有另一个最令我满意的解决方案。KeyRemap4MacBook是允许您重新映射键盘按钮的应用程序。除其他事项外,它允许(并非完全)支持语言更改。因此,我们进行了一些自定义配置,以实现我想要的功能。

缺点:-第三方应用程序-目前仅提供有限的语言支持

优点:-从概念上讲,在UI上运行脚本要好一些


我在网站上没有发现任何与灵活使用输入源有关的内容,只有与俄语/英语有关的硬编码操作。你能详细说明吗?
丹尼尔·贝克

它不灵活。碰巧它支持切换到英语和俄语(现在是爱沙尼亚语),这是我需要的语言。并且它允许您将任意组合键映射到这些操作。就我而言,切换到语言。
Nikem

我很难找到如何与Karabiner进行设置。
伊万·巴拉索夫

1

在AppleScript上,您仅需占用cmd +“ space”(或其他方式,您可以更改键盘源)。

以及您所需要的一切:

    key code 49 using command down

49-AppleScript的ASCII中“空格”按钮的代码。

PS:不要忘记在系统偏好设置中为您的AppleScript实用程序提供访问权限。


1

找到kawa-非常简单的应用程序,可以完全满足您的需求。设置快捷方式可直接切换到所需的输入源。


1
欢迎来到超级用户。请阅读“ 如何推荐软件”,然后编辑您的答案,至少包括最低要求的信息(粗体项目)。没有此信息的帖子可能会被删除。感谢您的贡献。
我说恢复莫妮卡

0

链接包含有关如何执行此操作的视频。它已经有一个“命令+空格”的热饼,但是聚光灯热键也是“命令+空格”。Spotlight会取代热键,因此不会发生语言切换。链接中的视频将向您展示如何更改热键,以便您可以切换热键。

祝好运,


1
他已经知道如何在多种语言之间进行切换,他想切换到一种特定的语言,因为他可能激活了2种以上。
丹尼尔·贝克

是的,正如丹尼尔所说。我有3种输入语言,需要选择一种特定的语言。
Nikem 2010年

抱歉...我一定是误解了这个问题。我以为您正在尝试找到一种使用热键在语言之间切换的方法。
大卫2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.