Kecualikan bahasa input dari Alt + Shift switching cycle pada Windows 10

2

Saya memiliki 3 bahasa di sistem saya: Inggris, Rusia dan Jepang. Tapi saya hanya ingin dapat Alt + Shift antara bahasa Inggris dan Rusia. Apakah ada cara untuk melakukannya di W10?

Ini pertanyaan tidak berlaku di sini, karena tidak bekerja pada W10.

Liburia
sumber
Bisakah Anda jelaskan mengapa Kecualikan bahasa input dari Alt + Shift / Ctrl + Shift switching cycle pada Windows tampaknya tidak berlaku di sini? Sepertinya duplikat yang tepat.
Scott
@Scott Ini untuk Windows 7, saya tidak dapat menemukan cara untuk meniru jawaban pada W10 dari pertanyaan itu.
Liburia
1
OKE,  edit pertanyaan Anda untuk menjelaskannya.
Scott

Jawaban:

0

Ikuti langkah-langkah ini:

  1. Instal AutoHotkey .
  2. Buat file teks dan rekatkan teks berikut:
; This scripts changes the functionality of Shift + Alt from "switch keyboard layout"
; to "change to previous layout".
; this is usefull when you have more than 2 keyboard layouts and want to switch between 
; only 2 of them.

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

LAlt & LShift::send, #^{space down}{space up}
  1. Simpan dan ganti nama file dengan ekstensi .ahk (mis. "Kecualikan Layout Keyboard Tambahan."
  2. Klik dua kali untuk menjalankan skrip. Sekarang Alt + Shift harus beralih hanya antara dua tata letak keyboard pertama.

Jika Anda puas, Anda dapat mengkompilasi skrip (klik kanan -> kompilasi) untuk membuat file .exe . kemudian pindahkan file .exe atau .ahk ke folder start-up (buka RUN dan ketik " shell: startup " tanpa tanda kutip).

Catatan tambahan:

  • Jika Anda menyalin file .exe Anda tidak perlu AutoHotkey lagi sehingga Anda dapat menghapusnya.
  • Jika Anda menyalin file skrip .ahk Anda tidak boleh menghapus AutoHotkey.
  • Posting ini memecahkan masalah yang agak mirip, membantu memunculkan ide.
Ewindar
sumber
0

Saya menyarankan pendekatan yang mungkin sedikit lebih baik dengan solusi autohotkey yang sama.

Alih-alih beralih ke tata letak sebelumnya (yang mungkin yang ketiga), lebih baik menonaktifkan hotkey bersepeda Alt + Shift asli sekaligus dan menetapkan untuk bahasa yang Anda ingin siklus hotkey seperti Alt + Shift + 0, Alt + Shift + 1, dll.

contoh hotkey

Dan kemudian gunakan skrip berikut bersama dengan petunjuk @Ewindar:

#SingleInstance force
SendMode Input

; initial language hotkey
Lang := 0

; attempting to get currently selected language
WinGet, WinID,, A
ThreadID:=DllCall("GetWindowThreadProcessId", "UInt", WinID, "UInt", 0)
InputLocaleID:=DllCall("GetKeyboardLayout", "UInt", ThreadID, "UInt") & 0xFFFF

; this attempts to adjust initial hotkey according to currently selected language
; refer to https://docs.microsoft.com/en-us/windows/win32/intl/language-identifiers
; and https://docs.microsoft.com/en-us/windows/win32/intl/language-identifier-constants-and-strings
; for finding out correct values
if (InputLocaleID = 0x0419) {
  Lang := 1
}

; alt+shift hotkey
LAlt & LShift::
; switch to next language in [0,1] range.
; To change number of used languages (2) adjust modulo accordingly.
Lang := mod(Lang+1,2)
; send alt+shift+N combination
send !+%Lang%
return

Anda mungkin dapat menghitung semua bahasa yang tersedia menggunakan panggilan winapi dan mempertahankan daftar id yang dikecualikan saja, tetapi itu kemungkinan akan melampaui solusi quick'n'dirty dan membutuhkan setidaknya beberapa jam waktu investasi.

Alexander Tumin
sumber