OnMyDSeeAtAll
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: ...у всех уже есть хотя бы один | Увы, ни тем, ни другим. Цитата: ...без тестирования - никак? | Нет. Цитата: А можно ли сделать, чтобы переключение происходило на определённую раскладку? Тогда можно было бы сделать... | Ну почти так как Вы хотели, только родную функцию я всё же оставил, четыре раза жать под ряд конечно не сподручно, по этому добавил альтернативу: Код: SetStoreCapslockMode, Off WM_INPUTLANGCHANGEREQUEST:=0x0050, INPUTLANGCHANGE_FORWARD:=0x0002 enLocale:=67699721, ruLocale:=68748313, vk14i:=checkUp:="" CapsLock:: KeyWait, % A_ThisHotkey vk14i+=(bState:=A_TimeSinceThisHotkey>300) ? 4:1 SetTimer, % "Countervk14", % "-"(bState ? 0:250) Return Countervk14: IfGreater, vk14i, 4, Goto, % "ByPass" hWnd:=WinActive("A") Gosub, % ("Action"vk14i)"vk14" If vk14i Between 2 And 4 { Sleep, 25 HKL:=DllCall("GetKeyboardLayout", "UInt", DllCall("GetWindowThreadProcessId", "Ptr", hWnd, "UInt*", 0, "UInt"), "Ptr") TrayTip, % checkUp ? "Текущая":"Установлена", % (HKL&16 ? "Русская":"Английская")" раскладка",, 1 Sleep, 1000 TrayTip } ByPass: bState:=hWnd:=HKL:=vk14i:=checkUp:="" Return Action1vk14: ; одно нажатие - нативная функция клавиши SendEvent, {CapsLock} Return Action2vk14: ; два нажатия - переключение на русскую раскладку PostMessage, WM_INPUTLANGCHANGEREQUEST,, ruLocale,, % "ahk_id"hWnd Return Action3vk14: ; три нажатия - переключение на английскую раскладку PostMessage, WM_INPUTLANGCHANGEREQUEST,, enLocale,, % "ahk_id"hWnd Return Action4vk14: ; четыре нажатия/отжим после небольшого удержания - переключение на следующую раскладку PostMessage, WM_INPUTLANGCHANGEREQUEST, INPUTLANGCHANGE_FORWARD,,, % "ahk_id"hWnd checkUp:=1 Return |
|