个人习惯系统默认输入法是美式键盘。新买的笔记本自带的是Win11的操作系统, 默认是中文语言,卸载了微软自带的输入法,换成了搜狗。
然后想添加美式键盘作为默认的输入法。
百度以后进行下列操作
在设置=>时间和语言=>语言和区域=>首选语言中添加美国英语
这时候发现输入法状态栏里面多出来了一个ENG,完美!~~开始搬砖…………
搬砖结束以后关机,第二天打开电脑,WTF,美式键盘怎么不见了。
检查设置发现美国英语还在里面啊,什么鬼,交换了一下语言顺序,再改回去,发现美式键盘又冒出来了。
然后第三天开机美式键盘又不见了T_T
发现设置里面的美国英语一栏里面有一行字:你的Windows许可证只支持一种显示语言,WTF。
百度以后说是需要升级Windows Pro才能显示多种语言,需要小一千块。为了个美式键盘花费1000块,不划算啊。
想起来交换首选语言列表就可以让美式键盘恢复,能不能通过脚本完成交换首选语言列表呢?然后开启自动执行这个脚本
说试就试
决定直接用PowerShell来搞,不要问我为什么不用BAT,直觉告诉我要选PS的。谷歌关键字"powershell preferred language"(不要问为什么这里用谷歌不用百度, 问就是专业的还是要找谷歌,也许会有人问那你怎么知道首选语言是preferred language呢?我也不知道啊,我百度的。神马?有人说谷歌访问不了?打死我也不会供出梯子来的)
直接来到Windows官网文档关于Set-WinUILanguageOverride的函数说明
发现里面有: sets a user-preferred display language的字样
先试试这个函数, 文档提示这个函数需要传入一个 -Language的参数,是使用的语言名称,这个名称明显是需要符合一定规则的,怎么知道中文和美国英语对应的名称呢
翻文档看到有一个Get-WinUserLanguageList函数, 在PowerShell里面执行,得到简体中文的名称是zh-Hans-CN, 美式英语的名称是en-US
再执行命令: Set-WinUILanguageOverride -Language zh-Hans-CN
然后没有什么反应,说明Set-WinUILanguageOverride不是我要找的
继续翻文档,有一个函数叫做Set-WinUserLanguageList,应该是设置语言列表的。试试这个
$OldList = Get-WinUserLanguageList $Temp = $OldList[0] $OldList[0] = $OldList[1] $OldList[1] = $Temp Set-WinUserLanguageList -LanguageList $OldList
刷新设置页面,咦,起作用了,美式键盘也出现了,就是你了。
接下来是完整的PS脚本
Write-Host "Start first switch preferred language" $OldList = Get-WinUserLanguageList $Temp = $OldList[0] $OldList[0] = $OldList[1] $OldList[1] = $Temp Set-WinUserLanguageList -LanguageList $OldList -Force Write-Host "Start second switch preferred language" $Temp = $OldList[0] $OldList[0] = $OldList[1] $OldList[1] = $Temp Set-WinUserLanguageList -LanguageList $OldList -Force Write-Host "Update US keyboard done."
喂,兄弟, 输出的日志为什么是英文啊?我不会告诉你我一开始写的是中文,后面发现输出到文件变成乱码了,结果就改英文了,反正也无关紧要的。PS大神不要嘲讽我中文日志都不会输出,懒得去搜索了,第一次写PS脚本。
接下来就是开启运行脚本
百度一下 "powershell 开机运行" (又换百度了啊?说好的专业的要找谷歌的呢?我的地盘我做主)
找到这篇文章:https://www.jianshu.com/p/a82c6bb91422
需要写一个BAT脚本来运行PS脚本啊,简单,我们来个五鬼搬运法:
照搬上面文章里面的CMD文件就好
在Windows开始菜单,搜索Task打开<计划任务程序>
创建一个新任务, 注意要选上使用最高权限运行
触发器为登录时
操作添加上面那个CMD文件
创建完成以后,运行测试一下没问题,重启电脑测试,结果跟预想的一样。
搞定收工,继续搬砖