Что нового

Переключение раскладки клавиатуры с помощью клавиш Ctrl и Shift

4talk

Новичок
Сообщения
5
Репутация
0
Версия AutoIt: 3.3.14.1
Описание:

Приветствую всех!

Подскажите, пожалуйста, как с помощью AutoIt v3.3.14.1 (использую Windows 10, x64) сделать так, чтоб по нажатию на правый Shift включалась английская раскладка клавиатуры, а по нажатию на правый Ctrl — русская. Я решил отказаться от Punto Switcher, в котором можно было легко задать такое поведение.

Примечания: детальнее описано в этом сообщении, я не могу использовать внешние ссылки, поэтому даю ссылку на сообщение от более привилегированного участника форума.
 
Автор
4

4talk

Новичок
Сообщения
5
Репутация
0
Я так понимаю, что по моему вопросу решения нет, либо оно очень сложное в реализации?
 

InnI

AutoIT Гуру
Сообщения
4,911
Репутация
1,427
4talk
по нажатию на правый Shift включалась английская раскладка клавиатуры, а по нажатию на правый Ctrl — русская
Если без распознавания правый/левый, то можно так
Код:
;~ #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
Для возможности смены раскладки в приложениях, имеющих права администратора, скрипт тоже должен быть запущен с правами администратора.
 
Автор
4

4talk

Новичок
Сообщения
5
Репутация
0
InnI, спасибо большое за ваш ответ. Из-за ограничений, установленных на форуме, пришлось написать вам ответ в ЛС. Посмотрите, пожалуйста. Есть ещё некоторые нюансы, которые бы очень хотелось решить.
 

InnI

AutoIT Гуру
Сообщения
4,911
Репутация
1,427
4talk сказал(а):
Обнаружил следующие проблемы:
1. использую типографскую раскладку Бирмана, и как только я выполнил скрипт, в систему добавились две дополнительные раскладки. Возможно переключаться только между этими двумя раскладками, которые специально созданы под типографскую раскладку?
2. как выполнять скрипт от имени администратора? По нажатию ПКМ на скрипте вижу в контекстном меню только эти пункты;
3. как сделать так, чтоб переключение работало только по правому Ctrl / Shift?

Пункт 2: раскомментируйте первую строчку скрипта.
Остальное - не знаю. Опыта работы с раскладками у меня очень мало. Что знал, то сделал.
 
Автор
4

4talk

Новичок
Сообщения
5
Репутация
0
InnI, может подскажите к кому можно обратиться за улучшением предложенного вами скрипта? Очень бы хотелось получить описанный функционал.
 

InnI

AutoIT Гуру
Сообщения
4,911
Репутация
1,427
4talk
к кому можно обратиться за улучшением
Вы уже обратились ко всему русскочитающему сообществу. Кто сможет - поможет.

OffTopic:
Насколько я знаю, подобные вещи проще решаются на AutoHotkey.
 
Автор
4

4talk

Новичок
Сообщения
5
Репутация
0
madmasles, ответьте, пожалуйста, правильно ли я оформил шапку?
 
Верх