假设我可以从 Windows 7 32 位的语言栏中切换 3 种键盘布局,英语、德语和西班牙语。可以从 cmd 运行什么命令来返回当前使用的布局的值?我的最终目标是将返回值传递到外部编辑器(Emacs),以便它可以根据当前键盘布局更改文本的字体。也就是说,如果我用英语写一个句子,字体将是 font1,如果用德语写一个句子,字体将是 font2,依此类推。但这只有当我可以从 Windows 的命令行获取一些返回值(无论是国家/地区语言环境的数量还是字符串行english
,german
等等)时才会起作用。
答案1
编辑:下面的操作实际上不会满足 OP 的要求,因为通过语言栏快捷键切换键盘时值不会改变,即使通过控制面板切换时值会改变。为了完整性,这里就不多说了。
我找不到任何可以检索此信息的已记录的 systeminfo 或 Powershell 命令。我以为类似这样的命令可能会有用,但遗憾的是,这个或其他 cmdlet 的参数似乎都无法获取此设置。
powershell -Command "& {(Get-culture).keyboardlayoutid;}"
似乎 Windows 8 可能添加了执行此操作的 Powershell 命令,但在 Windows 7 中似乎无法检测到以这种方式所做的更改。
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
以下将返回当前键盘:
reg query "HKEY_CURRENT_USER\Keyboard Layout\Preload"
这将返回所有已安装键盘的列表,其中当前正在使用的键盘为1
。
HKEY_CURRENT_USER\Keyboard Layout\Preload
1 REG_SZ 00000809
2 REG_SZ 00000407
3 REG_SZ 00000c0a
作为参考,返回的值列在此处:msdn.microsoft.com/en-gb/goglobal/bb895996.aspx