Итак автохоткей. Скинул бы свой рабочий скрипт, но с работы нельзя ничего уносить к сожалению(( Поэтому накидаю куски из которых собирал его.
Для начала скрипт для активации нужных окон:
https://gist.github.com/realchrisolin/fb10b20c832acb7e54605980afd14836
А вот тут тема про использование Numlock, Capslock и ScrollLock в качестве дополнительных модификаторов:
https://www.autohotkey.com/boards/viewtopic.php?t=20661
Это наверное главная моя находка. Основная проблема замены горячих клавиш при помощи AHK, как мне кажется, в том, что они рано или поздно начинают пересекаться и конфликтовать со стандартными сочетаниями. Поэтому имея дополнительные модификаторы мы можем избежать этой проблемы, т.к. все стандартные сочетания работают как обычно, а другой человек, сев за мой компьютер, даже и не заметит никаких отличий. Проблема скрипта по ссылке выше в том, что клавиши …lock тоже иногда используются, да и в качестве модификаторов барахлят периодически вопреки моему желанию, выполняя свои стандартные функции. В общем я заменил Lock-клавиши на F23 и F24 которых даже нет на стандартной клавиатуре, зато их легко можно назначить на дополнительные кнопки мыши.
Получился вот такой код:
Спойлер
;скрипт ждет пока будет нажата клавиша F23
F23::
KeyWait, F23
#if, GetKeyState(“F23”, “P”) ; открываем условие if, после этого идут наши команды которые запускаются указанными сочетаниями только в том случае, если одновременно нажата клавиша F23
;не помню точно какая, но без этой строчки возникала ошибка, то ли задвоение, то ли лишнее нажатие на кнопку
F23::F23
;свернуть активное окно
q::WinMinimize, A
;открыть интренет эксплорер
w::RunOrActivate(“C:\Program Files\Internet Explorer\iexplore.exe”)
;открыть NP++
e::RunOrActivate(“C:\Program Files\Notepad++\notepad++.exe”)
;поместить нажатием Space+R в переменную WIN1 ID активного окна, а затем вывести сообщение с этим ID для наглядности. Я пользуюсь этим когда работаю например с несколькими файлами WORD или таблицами Excel. Можно запомнить несколько окон и вызывать их назначенными клавишами.
Space & r::
WinGet, WIN1, ID, A
MsgBox, %WIN1%
Return
;активировать клавишей R окно сохраненное в переменной WIN1
r:: WinActivate, ahk_id %WIN1%
#if ; конец скрипта, закрываем if
Конечно функция RunOrActivate() из первой ссылки должна быть в том же файле, что и этот скрипт.
есть еще вот такое сочетание:
#SC029:: Send #+{Right}
Что означает Win+~ = Win+Right и используется для переноса активного окна на другой монитор. Это гораздо удобнее если работаешь с мышкой, т.к. в стандартном варианте нужно две руки на клавиатуре для выполнения этого действия
Еще заменами пользуюсь. Например вот:
::2цц::(2 шт.) т.е. жмем 2цц, а на экране получаем (2 шт.)
или вот замена для того чтобы поставить скобки и поместить курсор между ними нажав **9 на нумпаде:
::**9::
Send ()
Send {Left}
Return
В общем тут уж у кого на что фантазии хватит. У меня есть еще всякие скрипты которые например меняют настройки прокси в браузере или еще один который тыкает на кнопки и переключает расчеты в расчетной программе для подбора свай (если расчитываемых свай в проекте около сотни, то я иду пить чай, а мой сосед-лентяй, которому лень разобраться с АХК вынужден 100 раз выполнить одну и ту же операцию).
Если будут вопросы по тому, что под спойлером, то готов в личке помочь чтобы тему не засорять.