Как изменить язык ввода только для клавиатуры 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:

Другие вопросы по тегам