個人習慣系統默認輸入法是美式鍵盤。新買的筆記本自帶的是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文件

創建完成以后,運行測試一下沒問題,重啟電腦測試,結果跟預想的一樣。
搞定收工,繼續搬磚
