很多 FPS 游戏(如 CS:GO)会在启动的时候添加一个美式英文键盘,但不会在结束游戏的时候卸载这个键盘。

在 Steam 社区找到一个批处理的解决方案,不过需要保存两个额外的 xml 文件在硬盘来调用。

研究了下相关的 API,用汇编做了个简单的小程序。

下载

源码使用 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"