[Homeros] О концепции accessibility в MacOS (was: Q: Терминал в MacOS)

Nikita nikita-mailings на rambler.ru
Пт Ноя 7 22:13:09 MSK 2014


Здравствуйте, Michael Pozhidaev.

> Во всех ОС (точно в Linux и MacOS,
> в Windows очень вероятно) accessibility-системы строят структуры
> интерфейса приложений, откуда экранные чтецы забирают эту информацию.

Боюсь, что как раз в Windows тут не всё так просто. Конечно, в начале 
двухтысячных стали появляться штуки типа Microsoft Active Accessibility, то 
есть специальные accessibility API, но вообще-то до этого screenreader'ы 
работали подпольными методами, да и до сих пор, насколько я понимаю, 
разработчики этого ПО не отказались от подходов через заднюю дверь, типа 
считывания экранной информации на уровне трояноподобных методов ловли 
событий ядра по выводу данных.
Как говориться, "здесь вам не там": в Windows графический интерфейс не 
оторван от ядра в той степени, как на *nix.
На первых ставших доступными мобильных OS, типа Symbian, экранные чтецы тоже 
делались такими хакерскими методами. Разработчики буквально вручную побайтно 
дешифровывали изменения в памяти и сопоставляли их с экранным выводом, чтобы 
научиться распознавать события для последующей их обработки чтецами, ибо 
accessibility API не было как сущности.
Если полагаться только на стандартные accessibility API, то далеко, боюсь, 
уехать не получится. За примером далеко ходить не приходится, достаточно 
посмотреть на то, как обстоит дело с обеспечением доступности интерфейсов на 
базе кросс-платформенных фреймворков, типа Qt, да и той же Java.
По сути, их доступность требует обязательной поддержки соответствующих API 
со стороны разработчика приложения, что в реальном мире утопия, поэтому Java 
или Qt приложения так плохо доступны, особенно вторые.
То есть прямое взаимодействие с GUI убрать, конечно, можно, но, скорей 
всего, после этого в большей части приложений вы ничего прочитать только 
через accessibility API не сможете.

> логически сама по себе напрашивается
> идея эту информацию оттуда забрать и вынести в Luwrain, где пользователю
> показать не в таком виде, как он её воспринимает, работая с приложением
> напрямую, а после некоторой очистки и причёски.

Честно говоря, я с трудом себе представляю принципы "очистки". Если только 
вручную создавать правила для конкретных приложений.
Дело в том, что без попытки подражать GUI, как делают фоновые чтецы экрана, 
будет, как минимум, очень трудно передать логику интерфейса.
Невизуальное восприятие графического интерфейса ведь складывается из 
нескольких составляющих:
1) Текстовых меток объектов
2) Метаданных о типе объектов (кнопка, флажок и пр.)
3) Некоторое взаиморасположение объектов (что-то рядом с чем-то или 
несколько объектов объединены в группу с единым заголовком)
Все эти три составляющие и складываются в общую картину, которая даёт 
возможность понять с чем и как в интерфейсе можно взаимодействовать.
Я не верю, что возможно распарсить просто данные из accessibility API в 
какой-то принципиально другой текстовый интерфейс, который сохранит 
консистентность. Ну и тем более сделать это универсальным 
кросс-платформенным алгоритмом.
Я бы с радостью посмотрел на такую попытку, хотя бы просто потому, что 
интересуюсь accessibility извращениями, но честно говоря, мне это 
представляется утопией.

> Лично мне эта идея нравится применительно для
> обзора веб-страниц, чтобы осматривать их не в понимании Firefox, а
> в некотором упрощенном виде.

Ну в таком частном случае это, конечно, возможно. Правда фактически речь 
просто идёт о разработке своего браузера, ну или просто обработчика страниц 
на уровне DOM.
По большому счёту, это ведь история про FireVox или ChromeVox.
Только ведь web-интерфейсы-то усложняются, так что вы со своим упрощением 
будите терять всё больше и больше функциональных кусков страниц. Мне 
кажется, браузер в Emacs - это вряд ли хороший пример для подражания.

> Могут ли незрячие пользователи MacOS выполнять установку системы
> самостоятельно?

Сложный вопрос... Зависит от того, что вы вкладываете в это понятие.
В принципе, контроль за системой потерять достаточно сложно.
Озвучка запускается в любой момент без проблем.
Обновления максимально бесшовные, и озвучивается даже этап с установкой 
данных в режиме монопольного доступа. То есть тот переходный период, когда 
новая система перезаписывает старую. Ну там правда и озвучивать-то не чего, 
просто прогрессбар.
Если мы меняем машину, то просто на Time капсулу записываем образ со старой, 
а потом раскатываем его на новой и запускаемся с сохранением даже открытых 
вкладок в браузере.
Если возникли какие-то проблемы, то можем раскатать новую систему, хотя если 
там не совсем криминал, то это же не Windows, так что достаточно пересоздать 
пользователя.
Но всё это гарантировано только на машинах производства Apple, а на другое 
железо ставить во-первых, запрещает лицензия, а во-вторых, геморройно.
Ну и всякие там загрузочные меню с BIOS и прочее, конечно, не озвучиваются. 
Так что особо жёсткий низкоуровневый сбой вслепую всё равно не починить.
Успехов. Никита. 



Подробная информация о списке рассылки Homeros