我已将系统语言和键盘输入语言设置为西班牙语。但是,我习惯在所有允许使用英语的应用程序中搜索表情符号(Telegram、Twitter、WhatsApp...)。
据我所知,Windows 10 中的表情符号键盘(按键:赢 + 。) 允许您搜索表情符号,但只能使用您的系统语言。因此,如果我尝试搜索“眼睛”,建议将为空,因为“眼睛”在西班牙语中不存在,所以我在所有其他应用程序中搜索此特定表情符号的方法不适用于此表情符号键盘搜索。
即使在我的办公笔记本电脑中,我的系统语言设置为英语,但由于系统语言不同,尽管我使用相同的应用程序,但我必须使用与个人笔记本电脑不同的词语。
有什么方法可以指定我想使用特定语言而不是系统语言来搜索表情符号?或者也许同时使用:我指定的语言和我的系统语言作为默认语言(如果未找到任何内容)?
这是唯一受此问题影响的应用程序,因此弄乱全局系统配置是不可能的。
太感谢了。
答案1
我对表情符号面板进行过一些测试,问题很大。
首先,系统语言的任何变化都会导致它立即终止,因此需要在启动之前进行语言更改。
其次,除了通过键盘之外,没有其他方法可以启动它,也无法通过编程检测它何时运行或何时终止。
我的解决方案(适用于我的环境)是一个拦截
Win+;并执行以下操作的脚本(使用Win+.将行更改为$#;::
)
$#.::
:
- 保存当前活动窗口和系统语言
- 将系统语言更改为英语(美国)
- 发出密钥Win+ ;(这次没有被拦截)
- 等待前一个活动窗口再次变为活动窗口(意味着语言面板已终止)
- 将系统语言重置为原来的状态。
我使用的工具是免费的自动热键。
在下面的脚本中,“开始调试”和“结束调试”之间的部分只是为了您的方便,一旦一切正常就应该删除。
curlang := 0
; >>>> start debug : function keys for testing
; https://docs.microsoft.com/en-us/previous-versions/ms957130(v=msdn.10)
F7:: SetDefaultKeyboardLang(0x0409) ; english usa
F8:: SetDefaultKeyboardLang(0x040c) ; french
F9:: SetDefaultKeyboardLang(0x0415) ; polish
F12:: ;- show current keyboard language
SetFormat, Integer, H
curlang:= DllCall("user32.dll\GetKeyboardLayout", "UInt", ThreadId, "UInt")
msgbox,Language identifier=%curlang%
curlang := 0
Return
; <<<< end debug
$#;:: ; intercept win+;
WinGet, activewin, ID, A
curlang:= DllCall("user32.dll\GetKeyboardLayout", "UInt", ThreadId, "UInt")
ActiveHwnd := WinExist("A")
SetDefaultKeyboardLang(0x0409) ; english usa
Sleep, 100
Send, {LWin down}`;{LWin up} ; semi-colon needs to be escaped
curlang := 0
SetTimer, waitactive, 200
return
waitactive:
if WinActive("ahk_id" activewin) {
SetDefaultKeyboardLang(curlang)
SetTimer, waitactive, Off
}
return
;-------------------------------
; https://autohotkey.com/boards/viewtopic.php?f=6&t=18519
SetDefaultKeyboardLang(LocaleID){
Static SPI_SETDEFAULTINPUTLANG := 0x005A, SPIF_SENDWININICHANGE := 2
Lan := DllCall("LoadKeyboardLayout", "Str", Format("{:08x}", LocaleID), "Int", 0)
VarSetCapacity(binaryLocaleID, 4, 0)
NumPut(LocaleID, binaryLocaleID)
DllCall("SystemParametersInfo", "UInt", SPI_SETDEFAULTINPUTLANG, "UInt", 0, "UPtr", &binaryLocaleID, "UInt", SPIF_SENDWININICHANGE)
WinGet, windows, List
Loop % windows {
PostMessage 0x50, 0, % Lan, , % "ahk_id " windows%A_Index%
}
}
安装 AutoHotKey 后,将上述文本放入一个.ahk
文件中并双击进行测试。您可以通过右键单击托盘栏中的绿色 H 图标并选择退出来停止脚本。要让它在登录时运行,请将其放在 的启动组中
C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
。
有用的 AutoHotkey 文档: