世界线变动率搜索中...
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. 右键选择 Open 或 Help(不同版本可能有差异)
  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~(∠・ω< )⌒★

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