Как изменить язык ввода только для клавиатуры Windows Emoji
У меня установлен испанский системный язык, а также язык ввода с клавиатуры. Однако я привык искать смайлы во всех приложениях, которые позволяют делать это на английском языке (Telegram, Twitter, WhatsApp...).
Судя по тому, что я видел, клавиатура эмодзи в Windows 10 (нажмите клавиши: Win + .) позволяет искать смайлы, но только с использованием языка вашей системы. Поэтому, если я попытаюсь выполнить поиск по слову «глаза», предложения окажутся пустыми, поскольку «глаза» не существуют на испанском языке, поэтому то, что я использую для поиска этого конкретного смайлика во всех других приложениях, не работает с этим поиском по смайлику с помощью клавиатуры.
Даже на моем рабочем ноутбуке, где системный язык настроен на английском, мне приходится использовать другие слова, чем на личном ноутбуке, хотя я использую одно и то же приложение из-за другого языка системы.
Можно ли каким-либо образом указать, что я хочу искать смайлы, используя определенный язык, а не язык моей системы?Или, может быть, использовать оба: тот, который я указываю, и язык моей системы по умолчанию, если ничего не найдено?
Это единственное приложение, затронутое этой проблемой, поэтому возиться с глобальными конфигурациями системы не получится.
Большое спасибо.
1 ответ
Я провел несколько тестов с панелью смайлов, и это очень проблематично.
Во-первых, любое изменение языка системы приведет к ее немедленному завершению, поэтому изменения языка необходимо внести до ее запуска.
Во-вторых, нет другого способа запустить его, кроме как с клавиатуры, а также невозможно программно определить, когда он запускается или завершается.
Мое решение (которое работает в моей среде) — это сценарий, который перехватывает Win+;и делает следующее (чтобы использовать Win+, .измените строку на$#;::
к$#.::
):
- Сохраняет текущее активное окно и язык системы.
- Меняет системный язык на английский (США).
- Выдает ключ Win+;(в этот раз не перехватывается)
- Ожидает, пока предыдущее активное окно снова станет активным (это означает, что языковая панель была закрыта)
- Сбрасывает системный язык к тому, что было.
Я использовал бесплатный инструмент AutoHotkey.
В приведенном ниже сценарии раздел между «начать отладку» и «завершить отладку» предназначен только для вашего удобства и должен быть удален, как только все заработает.
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: