2

Я использовал это замечательное программное обеспечение в течение некоторого времени, но только для нескольких основных вещей. Поэтому мне интересно, возможно ли следующее:

  • использовать разные наборы ярлыков для разных приложений - поэтому один ярлык выполняет разные действия в разных местах.

  • чтобы сделать какую-то форму режимов для приложения, где вы могли бы использовать некоторый переключатель (стиль vim), и это изменило бы то, что делал бы шорткат

  • если можно было бы разместить заголовок, который указывает, какой режим вы используете - небольшое улучшение предыдущего пункта

Я благодарю всех за их ответы.

3 ответа3

1

чтобы сделать какую-то форму режимов для приложения, где вы могли бы использовать некоторый переключатель (стиль vim), и это изменило бы то, что делал бы шорткат

Вы можете использовать оператор #If, доступный в текущем выпуске AutoHotkey_L (тот, который вы должны загрузить с сайта). Вы можете написать что-то вроде этого:

#If Winactive("window_name") and (Mode = Mode1)

F1::MsgBox, Mode1
::mode::Mode1

#If Winactive("window_name") and (Mode = Mode2)

F1::MsgBox, Mode2
::mode::Mode2

Вы можете положить #If в конце, чтобы завершить все условия.

Что вы подразумеваете под «подписью»? Вы можете создать небольшое окно, похожее на панель инструментов, с названием режима или изображения и обновлять его всякий раз, когда вы меняете режим, или с помощью таймера, который отслеживает текущий режим.

1

Да.

Для разных правил для разных приложений, посмотрите в #ifWinActive.

Например:

; Make Ctrl+PageUp and Ctrl+PageDown work in Safari
#ifWinActive ahk_class {1C03B488-D53B-4a81-97F8-754559640193}
^PgUp::Send ^+[
#ifWinActive ahk_class {1C03B488-D53B-4a81-97F8-754559640193}
^PgDn::Send ^+]

#ifWinNotActive ahk_class PuTTY
+Ins::Send ^v
#ifWinNotActive ahk_class PuTTY
+Del::Send ^x
#ifWinNotActive ahk_class PuTTY
^Ins::Send ^c

Вы щелкаете правой кнопкой мыши значок AutoHotkey и правой кнопкой мыши Window Spy, чтобы выяснить значение ahk_class.

Режимы вроде Vi тоже возможны. Взгляните, например, на Команд .

1

Пункт 1 кажется решенным. Что касается пунктов 2 и 3, вот как вы могли бы это сделать; мой код может быть не очень эффективным, но он работает:

#Persistent                   ;--This needs to come before any
SetTimer, IsActiveTimer, 20   ;--return in the script.

IsActiveTimer:  ;--Below comes what the timer does
if StateIsActive = 1
{
  MouseGetPos, Px, Py   ;--The below creates tooltip when active
  ToolTip, "State is: Active", Px+40, Py+50, 5
}
else
{
ToolTip,,,, 5  ;--Removes tooltip when not active
   }
return

!^#z::   ;--This is the hotkey that toggles the state
         ;--between active and not active.
If StateIsActive = 1
{
StateIsActive := 0
}
else
{
StateIsActive := 1
}
return

!^#a::  ;--Hotkey that types either Zerg or Borg
        ;--depending on active/not active, so that you
        ;--may automatically choose the right party in
        ;--your documents in any potential war
If StateIsActive = 1
{
Sendinput, Zerg
}
Else
{
Sendinput, Borg
}
return

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .