很多 FPS 游戏(如 CS:GO)会在启动的时候添加一个美式英文键盘,但不会在结束游戏的时候卸载这个键盘。
在 Steam 社区找到一个批处理的解决方案,不过需要保存两个额外的 xml 文件在硬盘来调用。
研究了下相关的 API,用汇编做了个简单的小程序。
下载
- 本地下载 (密码
jixun
) - GitHub Release
源码使用 BSD 3-Clause 协议授权,可以在 GitHub:JixunMoe/RemoveUSKeyboardLayout 获取。
启动游戏并移除美式键盘
- 此处使用的例子是“军团要塞2”。
- 其他游戏的 Steam APPID 可以从其对应的商店地址找到。
将批处理与编译后的文件放在同一目录:
REM 启动游戏
start steam://rungameid/440
REM 等待游戏启动并添加键盘
timeout /t 5
REM 移除键盘
%~dp0\RemoveUSKeyboardLayout.exe
或,使用 VBScript
脚本启动来隐藏命令行窗口:
Set objShell = CreateObject("Shell.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(Wscript.ScriptFullName)
strFolder = objFSO.GetParentFolderName(objFile)
' 启动游戏
objShell.ShellExecute "steam://rungameid/440"
' 等待游戏启动并添加键盘
WScript.Sleep(5000)
' 移除美式键盘
objShell.ShellExecute strFolder & "\RemoveUSKeyboardLayout.exe"