Отправляет email-рассылки с помощью сервиса Sendsay

[prg] Дополнение NVDA - цепочка скриптов

Привет всем!

Я хочу в NVDA повесить скрипт на клавишу, но не вместо уже существующей функции, а в дополнение к ней.
Например, чтобы по Insert+F12 сначала срабатывал мой скрипт, а потом стандартно выполнялось объявление времени.
Подскажите, пожалуйста, это вообще возможно?
В руководствах я что-то такого нигде не нахожу. Везде просто назначение жеста на скрипт.
Может быть как-то можно посмотреть, что уже на этих клавишах висит и вручную потом вызвать?

Ответить   Mon, 28 Oct 2024 09:28:32 +0300 (#3708301)

 

Ответы:

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, то
дальнейшая обработка жеста будет отменена.

Ответить   Tue, 29 Oct 2024 17:49:12 +0800 (#3708337)

 

Здравствуйте, Кварк!

У меня этот скрипт не сработал (
Пробел вроде убрал лишний, а где посмотреть ошибку?
В логе я название скрипта не нахожу...

Ответить   Mon, 04 Nov 2024 23:42:37 +0300 (#3708502)

 

05.11.2024 Vladimir Dovydenkov пишет:

Вот тоже самое, но в виде уже готового дополнения. При вызове команды
чтения времени/даты в начале произносится фраза "Привет мир", и только
после этого отрабатывает стандартный скрипт NVDA:
https://disk.yandex.ru/d/4P_dXr-1Q7hvHA

Ответить   Tue, 5 Nov 2024 19:48:09 +0800 (#3708515)

 

Здравствуйте, Кварк!

Подскажите, пожалуйста, у вас скрипт перехватывается
globalCommands.commands.script_dateTime
А где посмотреть названия всех скриптов этого метода? Если я
другие команды хочу перехватывать, где посмотреть их список?
Речь вот про этот кусок:

def _gestureHandler(self, gesture):
if gesture.script == globalCommands.commands.script_dateTime:
ui.message("Привет мир!")

Пытаюсь самостоятельно копаться в Developer Guide, но что-то для
меня пока это темный лес...

Ответить   Sun, 22 Dec 2024 21:07:22 +0300 (#3709069)

 

23.12.2024 Vladimir Dovydenkov пишет:

globalCommands.commands - это экземпляр класса
globalCommands.GlobalCommands, который собственно и содержит
методы/скрипты глобальных команд NVDA.
Для ознакомления со списком команд лучше всего скачать архив с исходным
кодом NVDA себе на компьютер и открыть файл source/globalCommands.py в
любимом редакторе кода.
Ещё можно в Python-консоли NVDA импортировать модуль globalCommands,
написать globalCommands.commands.script_ и пару раз нажать клавишу Tab.
Вылезет менюшка со списком всех доступных глобальных скриптов. В NVDA
2024.4 их будет 217 штук.

Ответить   Tue, 24 Dec 2024 20:56:54 +0800 (#3709108)