Как избавиться от мигания лампочки - я не знаю. По идее это сам Autohotkey постоянно обновляет её состояние, из за команды
SetCapsLockState.
Лично мне здесь видится 4 пути:
- Закомментировать функцию SetCapsLockState вовсе. Но тогда любая другая программа или скрипт может отключить лампочку, и уже будет непонятно - работает именно этот скрипт, или нет.
- Оставить всё как есть, НО добавить в самом начале скрипта функцию SetStoreCapsLockMode(0). Эффект, предположительно, будет как в п.1.
- Если добавить постоянный ToolTip как индикатор, то SetCapsLockState можно смело закомментировать - важность управления лампочкой отойдёт на задний план.
- Использовать другую кнопку, например ScrollLock - неплохой кандидат, и реализовать засыпание скрипта (Suspend), а не просто остановку таймера. Но лампочка всё равно будет мигать, только уже соседняя А иконка скрипта в трэе хоть и будет меняться от текущего режима (сон/работа), но мне она кажется малоинформативной. Хотя и иконку можно сменить на другую, но это будет уже совсем другая история.
Как добавить тултип:
Code: Select all
#Requires Autohotkey v2.0
vk14::
{
Static trigger := 0,
procKeySend := ()=>(Send('{vkC0 down}'), Sleep(10), Send('{vkC0 up}'))
SetCapsLockState(trigger ^= 1),
SetTimer(procKeySend, trigger && 50),
trigger && ( procKeySend(), ToolTip('РАБОТАЕТ') ) || ToolTip()
}
Дальше экспериментируй сам - лыжи то твои
ЗЫ. В функции
ToolTip можно задать координаты на экране, где подсказка будет отображаться, например
ToolTip('РАБОТАЕТ', 800, 600).