Beberapa bahasa input, beralih di antara dua

4

Bagaimana saya bisa memiliki tiga atau lebih bahasa input aktif (yaitu Inggris / Rusia / Cina), tetapi siklus dengan Alt+ Shifthanya di antara dua dari mereka (Inggris / Rusia)?

Punto Switcher menangani tugas ini hanya dengan pintasan khusus suka Caps Lockatau kanan Ctrl.

Michael Sayapin
sumber
Pertanyaan ini mungkin dijawab di sini: superuser.com/questions/496771/…
ehdr

Jawaban:

2

Saya memecahkan masalah ini menggunakan Autohotkey.

Siapkan 3 bahasa, hotkey untuk beralih di antara mereka dan hotkey lain untuk beralih ke bahasa yang ingin Anda lewati. Saya memiliki bahasa Inggris, Rusia, dan Jepang dan ingin melewati bahasa Jepang jadi saya menugaskan Ctrl + Shift + 0 untuk beralih ke JP.

Saya sudah memiliki skrip Autohotkey yang memungkinkan saya untuk beralih di antara semua 3 bahasa menggunakan Caps. Itu terlihat seperti ini:

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

Idenya adalah untuk beralih bahasa secara otomatis setelah Anda beralih ke bahasa yang ingin Anda lewati. Ini 0x0411 untuk Jepang. Tempelkan Anda di klausa if dalam skrip di bawah ini, simpan dan jalankan.

Berikut adalah daftar id bahasa, temukan milik Anda di kolom pertama.

Script hanya berfungsi untuk beralih antar bahasa menggunakan CapsLock tetapi Anda dapat menyesuaikannya dengan Alt + Shift. Mungkin hanya dengan mengganti "CapsLock" dengan "{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
}
nikkou
sumber
-1

Pada tab Pengaturan Kunci Lanjutan (dalam dialog Layanan Teks dan Bahasa Input) Anda dapat mengubah pintasan keyboard untuk setiap bahasa yang telah Anda tetapkan.

Secara default, tindakan "Antara bahasa input" diset ke Alt Kiri + Shift, seperti yang Anda sebutkan. Tindakan lain ("Ke Bahasa Inggris", "Ke Bahasa Rusia", dll.) Tidak akan memiliki pintasan yang ditetapkan sampai Anda mengaturnya secara manual ke salah satu yang Anda sukai.

Matt Hanson
sumber
1
Ya, saya tahu itu. Tapi sulit untuk melupakan untuk beralih antar bahasa di Alt + Shift. Apa yang saya inginkan adalah beralih antara En & Ru dengan Alt + Shift, dan beralih ke Cina dengan beberapa cara pintas lainnya.
Michael Sayapin