システムには、英語、ロシア語、日本語の3つの言語があります。しかし、私はできるようになりたいだけです Alt+Shift 英語とロシア語の間。 Windows 10でそれを行う方法はありますか?
This 質問は、Windows 10では機能しないため、ここでは適用されません。
次の手順に従います。
; 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}
満足のいく場合は、スクリプトをコンパイルして(右クリック->コンパイル)、。exeファイルを作成できます。次に、。exeまたは。ahkファイルをスタートアップに移動しますフォルダ(RUNを開き、引用符なしで「Shell:startup」と入力します)。
追記:
私はおそらく同じオートホットキーソリューションで少し良いアプローチを提案します。
以前のレイアウト(3番目になる可能性があります)に切り替える代わりに、ネイティブのAlt + Shiftサイクリングホットキーを無効にして、独自のレイアウト切り替えロジックに道を譲る方がよいでしょう。
そして、おそらく必要な調整を加えて、次のスクリプトを使用します。
#SingleInstance force
SendMode Input
; Cycled list of language ids
; 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
; in this case 0x409 means standard US English, and 0x419 means standard Russian
AltShiftLangs := [0x0409, 0x0419]
; 0x411 means japanese IME
CtrlAltLang := 0x0411
; This returns currently active language id
GetKeyboardLayout() {
WinGet, WinID,, A
ThreadID:=DllCall("GetWindowThreadProcessId", "UInt", WinID, "UInt", 0)
return DllCall("GetKeyboardLayout", "UInt", ThreadID, "UInt") & 0xFFFF
}
; This sends request to change system language to lang argument
SetKeyboardLayout(lang) {
PostMessage, 0x50,, lang,, A
}
; This returns 0-based index of Value in Arr
IndexOf(Arr, Value) {
Loop % Arr.Length()
if Arr[A_Index] == Value {
return A_Index-1
}
return -1
}
; This sets language based on current system lanuage and next value by index in Arr
; If current language is not found, it sets system to first language from Arr
SetNextLanguage(Arr) {
lang := GetKeyboardLayout()
idx := IndexOf(Arr, lang)
if (idx < 0) {
SetKeyboardLayout(Arr[1])
return
}
nextIdx := mod(idx+1, Arr.Length())
next := Arr[nextIdx+1]
SetKeyboardLayout(next)
}
; Alt+Shift hotkey - cycle between AltShiftLangs
LAlt & LShift::
SetNextLanguage(AltShiftLangs)
return
; Ctrl+Alt hotkey - switch directly to isolated CtrlAltLang
LCtrl & LAlt::
SetKeyboardLayout(CtrlAltLang)
return