4

Как я мог иметь три или более активных языков ввода (а именно английский / русский / китайский), но циклически нажимать Alt+Shift только между двумя из них (английский / русский)?

Punto Switcher выполняет эту задачу только с помощью пользовательских ярлыков, таких как Caps Lock или правый Ctrl.

2 ответа2

2

Я решил эту проблему с помощью AutoHotKey.

Установите 3 языка, горячую клавишу для переключения между ними и другую горячую клавишу для переключения на язык, который вы хотите пропустить. У меня был английский, русский и японский языки, и я хотел пропустить японский, поэтому я назначил Ctrl+Shift+0, чтобы переключиться на JP.

У меня уже был скрипт AutoHotKey, который позволял мне переключаться между всеми тремя языками, используя Caps. Это выглядело так:

CapsLock::Send, {Alt Down}{Shift Down}{Shift Up}{Alt Up}

Идея состоит в том, чтобы переключать язык автоматически после переключения на язык, который вы хотите пропустить. Это 0x0411 для японцев. Вставьте свою фразу if в приведенный ниже скрипт, сохраните ее и запустите.

Вот список языковых идентификаторов, найдите свой в первом столбце.

Скрипт работает только для переключения между языками с помощью CapsLock, но вы можете адаптировать его к переключателю Alt+Shift. Возможно, просто заменив "CapsLock" на «{Alt Down} {Shift Down} {Shift Up} {Alt Up}».

CapsLock::
Send, {Alt Down}{Shift Down}{Shift Up}{Alt Up}

if !LangID := GetKeyboardLanguage(WinActive("A"))
{
    MsgBox, % "GetKeyboardLayout function failed " ErrorLevel
    return
}

if (LangID = 0x0411)
    Send, {Alt Down}{Shift Down}{Shift Up}{Alt Up}
return

GetKeyboardLanguage(_hWnd=0)
{
    if !_hWnd
        ThreadId=0
    else
        if !ThreadId := DllCall("user32.dll\GetWindowThreadProcessId", "Ptr", _hWnd, "UInt", 0, "UInt")
            return false

    if !KBLayout := DllCall("user32.dll\GetKeyboardLayout", "UInt", ThreadId, "UInt")
        return false

    return KBLayout & 0xFFFF
}
-1

На вкладке «Дополнительные настройки клавиш» (в диалоговом окне «Текстовые службы и языки ввода») вы можете изменить сочетание клавиш для каждого языка, который вы установили.

По умолчанию для действия "Между входными языками" установлено значение «Alt +Shift» влево, как вы упоминали. Для других действий ("На английский", "На русский" и т.д.) Ярлык не будет назначен, пока вы не установите его вручную на свой вкус.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .