Вопрос: существуют ли скрипты, позволяющие переключить работу программы на определенный язык или клавиатурную раскладку?
Конкретная ситуация: есть раскладка-транслитерация для Винды, где на клавиши кириллицы назначены латинские символы. Пишу хотспринг, на английской клавиатуре работает, перехожу на транслитерацию, и Винда тут же жестоко и необратимо повисает.
Работа программы с раскладками помимо английской
Re: Работа программы с раскладками помимо английской
change keyboard (?)
Code: Select all
;- EXAMPLE = CHANGE KEYBOARD
;- in WINDOWS-10 maybe use key WIN+SPACE
;----------------------------------------------------------
;https://autohotkey.com/boards/viewtopic.php?f=5&t=24591
;- keyboardx keyboardchangex languagex keyboardlanguage
; https://autohotkey.com/docs/misc/Languages.htm ---
; http://www.science.co.il/language/locale-codes.asp
; https://msdn.microsoft.com/en-us/library/dd318693%28v=vs.85%29.aspx
; https://msdn.microsoft.com/en-us/library/windows/desktop/ms724947%28v=vs.85%29.aspx
;--------------------------------------------------------------------
;-
;-------- https://autohotkey.com/boards/viewtopic.php?f=6&t=18519 ---
;- example-1 ctrl+2 > US
; ^1::SetDefaultKeyboard(0x0406) ; Danish
^1::SetDefaultKeyboard(0x0419) ; Russian
^2::SetDefaultKeyboard(0x0409) ; English (USA)
^3::SetDefaultKeyboard(0x0809) ; English (UK)
^4::SetDefaultKeyboard(0x0411) ; Japanese
^5::SetDefaultKeyboard(0x0408) ; Greek
^6::SetDefaultKeyboard(0x0807) ; swiss german
^7::SetDefaultKeyboard(0x7C04) ; chinese traditional
^8::SetDefaultKeyboard(0x0004) ; chinese simplified
^9::SetDefaultKeyboard(0x0C04) ; chinese HK
return
;====================================================================
;- example-2 = toggle F4 > russian or english-US
$F4::
V++
M:=mod(V,2)
if M=1
SetDefaultKeyboard(0x0419) ; Russian
else
SetDefaultKeyboard(0x0409) ; english-US
return
SetDefaultKeyboard(LocaleID){
Global
SPI_SETDEFAULTINPUTLANG := 0x005A
SPIF_SENDWININICHANGE := 2
Lan := DllCall("LoadKeyboardLayout", "Str", Format("{:08x}", LocaleID), "Int", 0)
VarSetCapacity(Lan%LocaleID%, 4, 0)
NumPut(LocaleID, Lan%LocaleID%)
DllCall("SystemParametersInfo", "UInt", SPI_SETDEFAULTINPUTLANG, "UInt", 0, "UPtr", &Lan%LocaleID%, "UInt", SPIF_SENDWININICHANGE)
WinGet, windows, List
Loop %windows% {
PostMessage 0x50, 0, %Lan%, , % "ahk_id " windows%A_Index%
}
}
return
;=====================================================
Who is online
Users browsing this forum: No registered users and 6 guests