Дополнение BrowserNav предоставляет пользователям NVDA мощные команды навигации в режиме обзора. Оно работает в веб-браузерах, а также в любых других приложениях, поддерживающих режим обзора NVDA, таких как документы Word и почтовые клиенты.
Пожалуйста, установите через магазин дополнений.
Обратите внимание, что начиная с NVDA v2024.2, команды вертикальной навигации и навигации по элементам с одинаковым стилем теперь доступны в ядре NVDA. Предпочтительнее использовать встроенные команды. Для них не назначено никаких жестов по умолчанию, поэтому жесты должны быть назначены пользователем в диалоге «Жесты ввода».
BrowserNav можно использовать для навигации по горизонтальному отступу от левого края экрана, по размеру шрифта или по стилю шрифта.
NVDA+Alt+Стрелка вниз или Стрелка вверх, чтобы перейти к следующему или предыдущему абзацу с таким же отступом. Например, это может быть полезно при просмотре иерархических деревьев комментариев (например, на reddit.com) для перехода между комментариями первого уровня, пропуская все комментарии более высокого уровня.Ротор BrowserNav используется для переключения между этими параметрами. В зависимости от настройки ротора BrowserNav будет звуковыми сигналами указывать либо горизонтальный отступ, либо размер шрифта текущего выбранного элемента. Кроме того, BrowserNav будет издавать треск при командах быстрой навигации, чтобы указать, сколько текста было пропущено (эта функция доступна только в Google Chrome и Firefox).
BrowserNav работает в любом браузере, поддерживаемом NVDA. Хотя некоторые функции могут быть недоступны во всех браузерах. BrowserNav также работает в других приложениях, поддерживающих режим обзора NVDA, таких как документы Word и почтовые клиенты.
NVDA+Alt+Стрелка вверх или Стрелка вниз: Перейти к предыдущему или следующему абзацу с тем же горизонтальным отступом или размером шрифта.NVDA+Alt+Home или NVDA+Alt+Стрелка влево: Перейти к предыдущему абзацу с меньшим отступом или большим размером шрифта (родительский абзац).NVDA+Alt+End или NVDA+Control+Alt+Стрелка влево: Перейти к следующему абзацу с меньшим отступом или большим размером шрифта (следующий родительский абзац).NVDA+Alt+PageDown или NVDA+Alt+Стрелка вправо: Перейти к следующему абзацу с большим отступом или меньшим размером шрифта (дочерний абзац).NVDA+Alt+PageUp или NVDA+Control+Alt+Стрелка вправо: Перейти к предыдущему абзацу с большим отступом или меньшим размером шрифта (предыдущий дочерний абзац).NVDA+O: Переключение параметров ротора между горизонтальным отступом, размером шрифта, размером шрифта со стилем шрифта.\ или Shift+\ (обратная косая черта): Прокрутка вверх или вниз для отображения каждого элемента страницы; может быть полезно на динамических веб-страницах для загрузки всех элементов; также может быть полезно на веб-страницах с бесконечной прокруткой для загрузки следующей порции.NVDA+Shift+Стрелка влево: Вернуться к предыдущему положению курсора в текущем документе.NVDA+E: Редактирование полу-доступных полей редактирования — см. соответствующий раздел ниже.T или Shift+T: Перейти к следующей или предыдущей таблице, но поместить курсор в первую ячейку. Иногда NVDA помещает курсор прямо перед первой ячейкой, и BrowserNav исправляет это поведение.Закладки быстрого перехода BrowserNav — это мощный инструмент, позволяющий перемещаться по веб-страницам и автоматизировать некоторые повторяющиеся действия.
NVDA+J: Показать всплывающее меню быстрого перехода.J или Shift+J: Перейти к следующей или предыдущей закладке быстрого перехода./ и Control+/: Включение/отключение режима пропуска беспорядка (SkipClutter) для навигации по строкам (стрелки вверх/вниз) и по абзацам (Control+Стрелка вверх и Control+Стрелка вниз) соответственно.Alt+J: Активировать все закладки быстрого щелчка на текущей странице.Control+J: Озвучить все закладки быстрого озвучивания на текущей странице.Alt+1, Alt+2, ..., Alt+0: Перейти к следующей иерархической закладке соответствующего уровня. 0 соответствует уровню 10; альтернативно, вызвать числовой скрипт, если он определен.Shift+Alt+1, Shift+Alt+2, ..., Shift+Alt+0: Перейти к предыдущей иерархической закладке.Alt+`` или Shift+Alt+``: Перейти к следующей или предыдущей иерархической закладке любого уровня.Вы также можете настроить пользовательские клавиши для большинства типов закладок (кроме закладок пропуска беспорядка, иерархических и закладок с числовыми скриптами).
Первое, что вам нужно будет настроить, это сайт, на котором вы хотите создавать закладки. В большинстве случаев вы захотите указать тип соответствия как «Соответствие домену» или «Соответствие домену и его поддоменам». Чтобы проиллюстрировать последний вариант, вы можете указать:
Если вам нужен более точный контроль, вы также можете указать точный URL или определить регулярное выражение для URL.
Из-за такого гибкого определения на каждой данной веб-странице может быть одновременно активно несколько сайтов быстрого перехода.
После того как вы настроили определение сайта, вы можете приступить к созданию на нём закладок.
BrowserNav поддерживает несколько типов закладок:
J или Shift+J.Control+Стрелка вверх/Стрелка вниз). Это позволяет скрыть беспорядок на веб-страницах, такой как пустые строки, временные метки и любую другую избыточную информацию. Информация не удаляется полностью, пропуск беспорядка можно временно отключить с помощью команд / или Control+/. По умолчанию пропуск беспорядка пропускает пустые абзацы на всех веб-сайтах.Alt+J, вы можете быстро активировать все закладки быстрого щелчка на текущей странице одним нажатием клавиши, не перемещая курсор. Это может быть удобно для нажатия часто используемой кнопки на веб-сайте, например, кнопки воспроизведения на YouTube или кнопки отключения звука на сайтах видеоконференций.Control+J; курсор не перемещается. Это удобно для проверки часто изменяющихся элементов страницы. Вы также можете настроить закладку быстрого щелчка на автоматическое обновление, то есть BrowserNav будет периодически сканировать страницу и автоматически озвучивать сообщение, если соответствующий текст изменится.Alt+цифра или Shift+Alt+цифра, где цифра означает ряд цифр 1, 2, 3,...0 — это уровень комментария. По умолчанию BrowserNav имеет иерархические закладки, настроенные для Hacker News и reddit.com.Alt+0...Alt+9, чтобы выполнить скрипт, принимающий число в качестве входных данных. Может быть полезно, например, для перехода к i-й закладке на странице одним нажатием клавиши.После того как вы настроили сайт, проще всего создать новую закладку, перейдя к нужному абзацу в документе, нажав NVDA+J, чтобы вызвать контекстное меню закладок, и выбрав «Закладки» > «Создать новую закладку для сайта...»
Откроется диалог настройки закладки. Теперь вы можете настроить закладку. Вы можете изменить способ сопоставления текста (например, сопоставление строки или регулярное выражение).
Другие параметры в этом диалоге:
В диалоге настройки сайта вы можете указать ряд дополнительных параметров:
Начиная с BrowserNav v2.5, вы можете настраивать свои закладки с помощью скриптов на Python. Скриптинг можно использовать для двух целей:
В вашем скрипте вам доступны следующие переменные:
p — текущий абзац. Это экземпляр класса Paragraph, определенного в paragraph.pyt — текущий объект textInfo.Рекомендуется работать с абзацами, так как они предоставляют интерфейс более высокого уровня, чем textInfo.
Ваш скрипт должен решить, соответствует ли текущий абзац вашему пользовательскому правилу или нет. Вы можете:
True, если совпадает, в противном случае False.None или не использовать оператор return, чтобы указать на отсутствие совпадения.i, чтобы указать, что i-й следующий или i-й предыдущий абзац совпадает и должен быть озвучен вместо текущего абзаца.(i: int, s: str), чтобы указать совпадение со смещением (см. предыдущий пункт) и заставить BrowserNav озвучить сообщение s.match(), чтобы указать на совпадение. Эта функция внутренне вызывает исключение, так что выполнение вашего скрипта будет прекращено после вызова match. Функция определяется как:def match(
offset: int | TextInfo | Paragraph = None,
message: str|TextInfo|Paragraph = None,
xLocation: int|TextInfo|Paragraph = None) -> None,
)
message — необязательное сообщение, которое будет озвучено перед совпадением.xLocation является необязательным и используется только в иерархических закладках для вычисления уровня.Вам также разрешено импортировать любые модули и писать скрипты общего назначения.
Вы можете использовать оператор print() для отладки вашего скрипта: вывод будет направлен в журнал NVDA.
try:
if controlTypes.Role.LINK in p.roles and p.previousHeading5.textInfo.text.startswith(p.text):
print(f"pp5 {p.previousHeading5.textInfo.text}")
return True
except NotFoundError:
return None
p.end.previous.previousEdit.activate()
user = p.next
if user.text == "downvote":
user = user.next
try:
username = user.text.split()[0]
except IndexError:
username = '?'
pp = p
begin = None
for i in range(5):
fs = pp.attributes.get(ParagraphAttribute.FONT_SIZE, [])
#print(f"i={i} fs={fs}")
if '9_pt' in fs:
begin = pp
break
pp = pp.next
else:
return
end = begin
while end.text != 'reply':
end = end.next
match(textInfoRange(begin, end), username)
p.home.nextEmbeddedObject.activate()d = getFocusParagraph()retry. Затем после паузы в 500 мс находит кнопку «Run Query» и нажимает её.def waitForDialogAndClickCheckbox():
try:
p.home.find("Link Last Used").activate()
p.home.nextEmbeddedObject.activate()
except NotFoundError:
pass
d = getFocusParagraph()
c = d.home.nextCheckBox
if controlTypes.State.CHECKED not in c.obj.states:
c.activate()
d.home.find("Link QCPR Project").activate()
yield from retry(waitForDialogAndClickCheckbox, count=20)
yield 500
yield from retry(lambda: p.home.find("Run Query").activate(), count=10)
level в качестве входной переменной. Он находит level-е поле редактирования от начала страницы (или от конца, если level отрицательный) и вызывает для него script_editJupyter.if level > 0:
p = p.home
for i in range(level):
p = Paragraph(p.nextEdit.textInfo)
elif level <= 0:
level = 1-level
p = p.end.previous
tones.beep(500, 50)
for i in range(level):
p = Paragraph(p.previousEdit.textInfo)
else:
tones.beep(500, 50)
p.textInfo.obj.currentFocusableNVDAObject = p.textInfo.focusableNVDAObjectAtStart
p.textInfo.obj.script_editJupyter(None)
Определения закладок хранятся в каталоге конфигурации NVDA в файле browserNavRules.json. Вы можете редактировать этот файл вручную или поделиться им с кем-либо.
Каталог конфигурации NVDA можно найти, открыв меню «Пуск» и введя: «Открыть каталог пользовательской конфигурации NVDA».
BrowserNav поставляется с файлом конфигурации по умолчанию, содержащим примеры закладок.
Многие современные веб-приложения, в частности Jupyter и другие, используют поля редактирования, которые не совсем доступны: например, они выглядят пустыми, но вы можете копировать текст в них и из них с помощью клавиш Control+A, Control+C и Control+V.
BrowserNav предлагает экспериментальную функцию для редактирования этих полей более удобным способом. Чтобы использовать её:
NVDA+E.Escape, чтобы закрыть доступное окно редактирования и обновить поле редактирования на веб-странице.Control+Enter, Shift+Enter или Alt+Enter. Это закроет окно редактирования, обновит поле и передаст нажатие клавиш веб-приложению.Alt+F4.NVDA+Control+E, чтобы скопировать его в буфер обмена.Примечания:
Control, Shift или Alt после нажатия Control+Enter, Shift+Enter или Alt+Enter. Удержание их более секунды вызовет проблемы.Исходный код доступен по адресу: http://github.com/mltony/nvda-indent-nav.