FalseTrue
31-08-2015, 11:47
Приветствую всех!
Подскажите, пожалуйста, как с помощью AutoIt v3.3.14.1 (использую Windows 10, x64) сделать так, чтоб по нажатию на правый Shift включалась английская раскладка клавиатуры, а по нажатию на правый Ctrl — русская. Я решил отказаться от Punto Switcher, в котором можно было легко задать такое поведение.
FalseTrue
06-09-2015, 18:51
Мне подсказали вот такой код для решения моей задачи:
;~ #RequireAdmin
;~ #NoTrayIcon
#include <WinAPISys.au3>
#include <WindowsConstants.au3>
#include <APISysConstants.au3>
OnAutoItExitRegister("OnAutoItExit")
$hWnd = GUICreate("")
GUIRegisterMsg($WM_HOTKEY, "WM_HOTKEY")
_WinAPI_RegisterHotKey($hWnd, 1, $MOD_SHIFT, 0)
_WinAPI_RegisterHotKey($hWnd, 2, $MOD_CONTROL, 0)
While Sleep(1000)
WEnd
Func WM_HOTKEY($hWnd, $iMsg, $wParam, $lParam)
Switch $wParam
Case 1
_WinAPI_SetKeyboardLayout(WinGetHandle(""), 0x0409)
Case 2
_WinAPI_SetKeyboardLayout(WinGetHandle(""), 0x0419)
EndSwitch
EndFunc
Func OnAutoItExit()
_WinAPI_UnregisterHotKey($hWnd, 1)
_WinAPI_UnregisterHotKey($hWnd, 2)
EndFunc
но в нём есть следующие недостатки:
переключение языка происходит по левому и правому Ctrl / Shift, а нужно чтоб только по правому;
я использую типографскую раскладку (http://ilyabirman.ru/projects/typography-layout/) Бирмана, и как только я выполняю скрипт с вышеуказанным кодом, то в системе появляется две дополнительные раскладки (скриншот (http://take.ms/iTt1f)).
Ещё мне подсказали, что решить мою задачу можно проще с помощью AutoHotkey (http://www.autohotkey.com/), может кто-то знает как?
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.