Горячая клавиша для переназначения клавиш не вызывает горячую строку

У меня есть горячая клавиша и горячая строка, которые, кажется, не работают вместе:

9::(

:?ob0:(::){left 1}

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

Кажется достаточно простым, потому что они оба работают по отдельности, но вместе, когда я нажимаю клавишу для 9 и нажмите пробел, я получаю только открытые скобки ( как будто горячая строка была проигнорирована.

Я что-то упускаю из виду?

1 ответ

Решение

Попробуйте использовать комбинацию Send а также InputLevel,

#InputLevel 1
9::SendEvent (
#InputLevel 0

;; Add closing parenthesis
:?ob0:(::){left 1}

объяснение

  • #InputLevel

    • По умолчанию горячие клавиши подключения и горячие строки игнорируют события клавиатуры и мыши, генерируемые любым скриптом AutoHotkey. Это поведение может быть переопределено с помощью SendLevel или #InputLevel
    • Установив 9 Горячая клавиша для более высокого уровня InputLevel, она может активировать другие горячие строки.
  • SendEvent

    • Как ни странно, переназначение numkey в его эквивалент Shift + # не дает никакого ввода, когда #InputLevel 1 был активным.
      • т.е. не мог использовать 1::!, 2::@, 3::#,..., 8::*, 9::(, так далее.
      • Команда обхода использовалась, чтобы обойти это ограничение переназначения
    • По умолчанию, Send а также SendEvent являются синонимами друг друга.

Заметки

  • InputLevel не влияет на SendPlay.
  • Замечания по переназначению ключей могут объяснить, почему 9::( не будет запускать другие горячие клавиши.
    • " Хотя переназначенная клавиша может вызывать обычные горячие клавиши, по умолчанию она не может запускать горячие клавиши мыши или горячие клавиши с перехватом ".

связанные с

#InputLevel, Send, Remapping (Замечания)

Другие вопросы по тегам