我怎样才能同时激活三种或更多种输入语言(即英语/俄语/中文),但只在其中两种(英语/俄语)之间使用Alt+循环?Shift
Punto Switcher 仅使用自定义快捷方式(如Caps Lock或右 )来处理此任务Ctrl。
答案1
我使用 AutoHotKey 解决了这个问题。
设置 3 种语言,一个热键用于在它们之间切换,另一个热键用于切换到要跳过的语言。我有英语、俄语和日语,我想跳过日语,所以我指定 Ctrl+Shift+0 切换到 JP。
我已经有一个 AutoHotKey 脚本,它允许我使用 Caps 在这 3 种语言之间切换。它看起来像这样:
CapsLock::Send, {Alt Down}{Shift Down}{Shift Up}{Alt Up}
这个想法是,一旦您切换到要跳过的语言,就会自动切换语言。日语的 0x0411。将您的代码粘贴到下面脚本中的 if 子句中,保存并运行它。
这里是语言 ID 列表,请在第一列中找到您的语言 ID。
该脚本仅适用于使用 CapsLock 在语言之间切换,但您可以将其调整为 Alt+Shift 开关。可能只需将“CapsLock”替换为“{Alt Down}{Shift Down}{Shift Up}{Alt Up}”即可。
CapsLock::
Send, {Alt Down}{Shift Down}{Shift Up}{Alt Up}
if !LangID := GetKeyboardLanguage(WinActive("A"))
{
MsgBox, % "GetKeyboardLayout function failed " ErrorLevel
return
}
if (LangID = 0x0411)
Send, {Alt Down}{Shift Down}{Shift Up}{Alt Up}
return
GetKeyboardLanguage(_hWnd=0)
{
if !_hWnd
ThreadId=0
else
if !ThreadId := DllCall("user32.dll\GetWindowThreadProcessId", "Ptr", _hWnd, "UInt", 0, "UInt")
return false
if !KBLayout := DllCall("user32.dll\GetKeyboardLayout", "UInt", ThreadId, "UInt")
return false
return KBLayout & 0xFFFF
}
答案2
在“高级键设置”选项卡(在“文本服务和输入语言”对话框中)上,您可以更改已设置的每种语言的键盘快捷键。
默认情况下,“在输入语言之间”操作设置为左 Alt+Shift,正如您提到的那样。其他操作(“转换为英语”、“转换为俄语”等)不会分配快捷键,除非您手动将其设置为您喜欢的快捷键。