世界线变动率搜索中...
1305 字
7 分钟
使用 AHK 来实现多语言输入法快捷切换
2026-01-20
统计加载中...

为何抛弃 Windows 原生切换?#

Windows 默认的输入法切换键位在超过两种语言时,切换效率会变得极其低下。俺是有三种语言的输入需求,使用默认的切换键位痛苦不已。便借助 AutoHotKey 实现了使用键盘上多余的键位来进行输入法切换的功能。从“轮询切换”变为“确定性切换”。

个人的解决方法#

俺的键盘是 108 键的,它自带了 4 个多媒体按键。这几个按键对于我来说是低频按键,因此我选择它们作为我的语言切换按键。俺使用了 AutoHotKey 将这几个键位映射为了不同输入法的切换键。

俺的映射如下:

按键切换到
静音英文输入
音量 -中文输入
音量 +日语输入

实现逻辑#

使用 PostMessage 函数,直接伪装成系统,向窗口发送一条切换输入语言的消息。并在参数里面附带目标语言的 LCID。这样就可以做到确定性的切换。

具体代码如下。

#Requires AutoHotkey v2.0
; 强制只运行一个脚本实例。
; 如果脚本已经在运行,再次启动会自动替换旧实例,方便修改代码后直接生效。
#SingleInstance Force
; --- 键位映射区域 ---
; 逻辑:拦截媒体键 -> 调用切换函数 -> 传入对应的语言 ID (LCID)
; 注意:这些键的原始媒体功能(静音/调节音量)将被完全覆盖。
Volume_Mute::SwitchToLang(0x0409) ; 0x0409 = 英语 (美国)
Volume_Down::SwitchToLang(0x0804) ; 0x0804 = 中文 (中国大陆)
Volume_Up::SwitchToLang(0x0411) ; 0x0411 = 日语
; --- 核心功能函数 ---
SwitchToLang(LangID) {
; PostMessage: 将消息放入目标窗口的消息队列中(不等待结果直接返回,速度快)
; 参数详解:
; 1. 0x50 : 消息代码 WM_INPUTLANGCHANGEREQUEST (请求切换输入语言)
; 2. 0 : wParam (系统标志位),0 表示使用默认行为
; 3. LangID : lParam (语言标识符),即上面传入的 0x0409 等
; 4. (空) : Control (控件名),此处留空因为是对整个窗口发送
; 5. "A" : 当前活动窗口
PostMessage(0x50, 0, LangID,, "A")
}

常用的 LCID 参考如下#

可以根据自己的需求替换其中的 LCID。

语言/布局LCID
中文 (简体)0x0804
英文 (美国)0x0409
日文0x0411
韩文0x0412
中文 (繁体 - 台湾)0x0404
中文 (繁体 - 香港)0x0C04

适用范围 & 局限#

这个方法切的是“语言/键盘布局”,所以在下面这种情况下体验最好:

  • ✅ 适合:一个语言对应一个输入法的情况(例如:中文只有微软拼音、日语只有微软日语、英文只有美式键盘)
  • ❌ 不太适合:同一种语言下有多个输入法的情况(例如:中文有小狼毫、微软拼音两种输入法。然后你想指定切换到小狼毫的话,这个方法就不太适合)

如果是上面第二种情况的话,通常需要用 HKL 去定位到具体的输入法。我没有遇到这个需求,所以也不展开讲了。

如何找“按键名称”方便自己该映射?#

用 AHK 自带的 Key history and script info。

  1. 先运行上面的脚本(或者随便一个 AHK 的脚本)
  2. 在任务栏中找到 AHK 图标
  3. 右键选择 OpenHelp(不同版本可能有差异)
  4. 然后在打开的界面顶部选择 View
  5. 选择其中的 Key history and script info
  6. 然后按下你想绑定的按键,再刷新页面(默认是 F5)。就能看到界面日志里面对应的名称。

知道名称之后,你就可以修改上面的代码(像下面这样):

YourKeyName::SwitchToLang(0x0409)

如何设置开机自启动?#

下面有两种方式。一种是直接放入启动文件夹。另一种是利用任务计划程序。

方式 1:放入启动文件夹#

  1. Win + R
  2. 弹出的窗口输入 shell:startup
  3. .ahk 脚本快捷方式丢进去就行

这个方法非常简单。但在有些程序的窗口下,可能需要管理员权限才能够使用 AHK 脚本。

方式 2:任务计划程序#

如果你发现有些软件或窗口无法使用这个脚本,可能需要以管理员权限运行 AHK 脚本。

大致思路:

  1. 直接用 Windows 自带的搜索,搜「任务计划程序」。然后打开它
  2. 选择 创建任务,不要选择 创建基本任务
  3. 名称随便取
  4. 在「常规」页中找到「安全选项」,勾选其中的「只在用户登录时运行」,勾选「使用最高权限运行」
  5. 将界面切到「操作」页,选择「新建」,将你的 AHK 脚本路径填进去

PS:「常规」页中有一个「隐藏」的选项。如果勾选这个选项的话,启动是不会弹那个需要手动确认管理员权限的窗口。

可能的风险#

AHK 这类工具在某些游戏环境里可能会被反作弊系统判定为作弊程序。如果你游玩的游戏反作弊比较激进,建议不要使用 AHK 脚本或在游戏时退出 AHK 程序。

使用 AHK 来实现多语言输入法快捷切换
/posts/20260118_使用-ahk-来实现多语言输入法快捷切换/
作者
東山
发布于
2026-01-20
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

Profile Image of the Author
東山
Ciallo~(∠・ω< )⌒★

统计加载中...
实验室员布告
欢迎光临第八曜观测站。此处皆为東山的个人碎碎念,主观且片面。若有不同见解,请以您的观点为准 —— 您是对的。