Работа программы с раскладками помимо английской

Помощь в написании скриптов
Grungy+
Posts: 2
Joined: 20 Nov 2016, 10:37

Работа программы с раскладками помимо английской

20 Nov 2016, 10:52

Вопрос: существуют ли скрипты, позволяющие переключить работу программы на определенный язык или клавиатурную раскладку?

Конкретная ситуация: есть раскладка-транслитерация для Винды, где на клавиши кириллицы назначены латинские символы. Пишу хотспринг, на английской клавиатуре работает, перехожу на транслитерацию, и Винда тут же жестоко и необратимо повисает.
garry
Posts: 3763
Joined: 22 Dec 2013, 12:50

Re: Работа программы с раскладками помимо английской

20 Nov 2016, 17:30

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
;=====================================================

Return to “Помощь”

Who is online

Users browsing this forum: No registered users and 17 guests