[prg] Дополнение NVDA - цепочка скриптов
Привет всем!
Я хочу в NVDA повесить скрипт на клавишу, но не вместо уже существующей функции, а в дополнение к ней.
Например, чтобы по Insert+F12 сначала срабатывал мой скрипт, а потом стандартно выполнялось объявление времени.
Подскажите, пожалуйста, это вообще возможно?
В руководствах я что-то такого нигде не нахожу. Везде просто назначение жеста на скрипт.
Может быть как-то можно посмотреть, что уже на этих клавишах висит и вручную потом вызвать?
28.10.2024 Vladimir Dovydenkov пишет:
Стандартным способом этого сделать нельзя, но можно зарегистрировать
более низкоуровневый обработчик жестов, где уже и добавлять нужную логику.
class GlobalPlugin(globalPluginHandler.GlobalPlugin):
def __init__(self):
super().__init__()
inputCore.decide_executeGesture.register(self._gestureHandler)
def terminate(self):
inputCore.decide_executeGesture.unregister(self._gestureHandler)
def _gestureHandler(self, gesture):
if gesture.script == globalCommands.commands.script_dateTime:
ui.message("Привет мир!")
# Отключаем прерывание речи при дальнейшей обработке этого
жеста
gesture.speechEffectWhenExecuted = None
return True
Здесь мы перехватываем весь пользовательский ввод (экземпляры
inputCore.InputGesture), и если очередной жест вызывает скрипт чтения
времени/даты, то произносим строку "Привет мир!".
Так как по умолчанию любой жест останавливает речевой вывод, то
необходимо установить свойство speechEffectWhenExecuted в None, чтобы
избежать такого поведения, иначе приветствие мы просто не успеем услышать.
В конце обработчик должен вернуть True. Если вернуть False, то
дальнейшая обработка жеста будет отменена.