Code: Select all
;--------------------; Keyboard Layout for Language ;--------------------;
; For [LAlt]+[LShift] Button key
#IfWinActive
~LAlt & ~LShift::
SetFormat, Integer, H
LocaleRussian=0x4090409 ; English Language
LocaleEnglish=0x4190419 ; Russian Language
LocaleWinID := WinExist("A")
ThreadID:=DllCall("GetWindowThreadProcessId", "Int", LocaleWinID, "Int", "0")
InputLocaleID:=DllCall("GetKeyboardLayout", "Int", ThreadID)
If(InputLocaleID!=LocaleRussian)
{
PostMessage, 0x50,, % LocaleRussian,, A
}
Else
{
If(InputLocaleID!=LocaleEnglish)
PostMessage, 0x50,, % LocaleEnglish,, A
}
Return
; For [LShift]+[LAlt] Button key
#IfWinActive
~LShift & ~LAlt::
SetFormat, Integer, H
LocaleRussian=0x4090409 ; English Language
LocaleEnglish=0x4190419 ; Russian Language
LocaleWinID := WinExist("A")
ThreadID:=DllCall("GetWindowThreadProcessId", "Int", LocaleWinID, "Int", "0")
InputLocaleID:=DllCall("GetKeyboardLayout", "Int", ThreadID)
If(InputLocaleID!=LocaleRussian)
{
PostMessage, 0x50,, % LocaleRussian,, A
}
Else
{
If(InputLocaleID!=LocaleEnglish)
PostMessage, 0x50,, % LocaleEnglish,, A
}
Return
; For [LControl]+[LAlt] Button key
#IfWinActive
~LControl & ~LAlt::
LocaleJapan=0x4110411 ; Japan Language
PostMessage, 0x50,, % LocaleJapan,, A
Sleep 50
Send !{CapsLock} ; Katakana
Return
; For [LAlt]+[LControl] Button key
#IfWinActive
~LAlt & ~LControl::
LocaleJapan=0x4110411 ; Japan Language
PostMessage, 0x50,, % LocaleJapan,, A
Sleep 50
Send ^{CapsLock} ; Hiragana
Return
;;;
Проблема, как мне видится, связана с PostMessage. Как эту проблему исправить я не знаю, особого опыта работы с ahk нет, про вики знаю, но и там не получилось разобраться в проблеме. Надеюсь на вашу помощь;
P.S. Дополнительными, не столь важным вопросами-
1) Можно ли при смене языка ввода сразу указать способов ввода? Чтобы не ставить Хирагану или Катакану через комбинации клавиш, а обойтись чем-то на уровне PostMessage?
2) Можно ли объединить ~LAlt & ~LShift и ~LShift & ~LAlt в одну комбинацию? Их пришлось продублировать со сменной порядка, потому что этот самый порядок нажатия клавишь для их исполнения важен.
Спасибо за ваше время