Горячая клавиша для переназначения клавиш не вызывает горячую строку
У меня есть горячая клавиша и горячая строка, которые, кажется, не работают вместе:
9::(
:?ob0:(::){left 1}
Чтобы дать некоторый контекст, в одной части кода я переназначил все символы на число под ними, и наоборот 9
печатает скобки (
, Позже я поставил горячую строку, которая будет вводить закрытые скобки после открытой, а затем помещать курсор между ними.
Кажется достаточно простым, потому что они оба работают по отдельности, но вместе, когда я нажимаю клавишу для 9
и нажмите пробел, я получаю только открытые скобки (
как будто горячая строка была проигнорирована.
Я что-то упускаю из виду?
1 ответ
Решение
Попробуйте использовать комбинацию Send
а также InputLevel
,
#InputLevel 1
9::SendEvent (
#InputLevel 0
;; Add closing parenthesis
:?ob0:(::){left 1}
объяснение
- По умолчанию горячие клавиши подключения и горячие строки игнорируют события клавиатуры и мыши, генерируемые любым скриптом AutoHotkey. Это поведение может быть переопределено с помощью SendLevel или #InputLevel
- Установив
9
Горячая клавиша для более высокого уровня InputLevel, она может активировать другие горячие строки.
- Как ни странно, переназначение numkey в его эквивалент Shift + # не дает никакого ввода, когда
#InputLevel 1
был активным.- т.е. не мог использовать
1::!
,2::@
,3::#
,...,8::*
,9::(
, так далее. - Команда обхода использовалась, чтобы обойти это ограничение переназначения
- т.е. не мог использовать
- По умолчанию,
Send
а такжеSendEvent
являются синонимами друг друга.
- Как ни странно, переназначение numkey в его эквивалент Shift + # не дает никакого ввода, когда
Заметки
- InputLevel не влияет на SendPlay.
- Замечания по переназначению ключей могут объяснить, почему
9::(
не будет запускать другие горячие клавиши.- " Хотя переназначенная клавиша может вызывать обычные горячие клавиши, по умолчанию она не может запускать горячие клавиши мыши или горячие клавиши с перехватом ".