Всё, что вы хотели знать о написании скриптов для JFW, но не знали, кого спросить

(Переработанный и дополненный вариант)
Источник:www.tiflocomp.ru
Дата публикации:2004
Twitter Facebook Vkontakte

Приложение E. Как справиться с неизвестным приложением и настроить его

I. Определите, насколько хорошо приложения работают без всяких настроек

  1. Озвучиваются ли окна диалогов на должном уровне?
  2. Может ли пользователь быстро найти важную информацию на экране?
  3. Все ли задачи можно выполнить с помощью клавиатуры?
  4. Какую информацию следует объединить на брайлевском дисплее для быстрого доступа?

II. Изучение диалогов

  1. Скрипты утилит в режиме Home Row и скрипт ScreenSensitiveHelpTechnical (Ctrl+Insert+F1) могут помочь следующим образом:
    1. Определить, является ли каждый элемент управления самостоятельным окном.
    2. Если окна имеют нестандартные классы окон, постараться их переназначить. Приводит ли это к озвучиванию правильных типов окон, когда вы переходите к ним? (неизвестные классы окон можно переназначить на известные, используя диалог Window Class (классы окон), доступ к которому осуществляется через команду Insert+7 на основной клавиатуре или через команду Insert+F2, после чего нужно нажать букву W и Enter.)
      Реклассификация полей редактирования в Internet Explorer таким образом имеет в результате то, что такие окна читаются как положено.
  2. Если приглашения не озвучиваются, попробуйте изменить значение EditPromptSearch. Это можно изменить в диспетчере конфигурации, доступ к которому осуществляется через Insert+6 или по команде Insert+F2, после чего нажимается Enter. Настройка EditPromptSearch находится в разделе Advanced Options (Продвинутые опции) в пункте меню Set Options (установить параметры). Более высокий номер означает более агрессивный поиск с большей вероятностью того, что приглашения будут озвучиваться, но возможность ошибок также увеличивается. Эта техника использовалась в просмотре таблиц в MS Access.
  3. Если PC курсор не отслеживает нужный объект в нестандартном элементе управления:
    1. Попробуйте установить TrackFocusRect=1 в файле конфигурации .jcf для конкретного приложения. Это делается путем добавления этой строки к разделу [OSM] соответствующего .jcf файла. Это должно позволить PC курсору отслеживать фокус, если фокус является прямоугольником.
      (некоторые электронные таблицы, такие как Microsoft Excel, используют вариант прямоугольного фокуса, который может отслеживаться только включением блока проверки "Include lines" (Включать строки), который находится в разделе Advanced Options (Продвинутые настройки) в пункте меню Set Options (Установить параметры). Если любая из этих настроек приводит к отслеживанию фокуса, автоматическое озвучивание можно заскриптовать, добавив вызовы функции SayFocusRect к скриптам, связанным с клавишами курсора и табуляции.
    2. Модифицируйте функцию FocusChangedEvent или SayFocusedWindow чтобы настроить обработку диалогов, создающих проблемы. В качестве примера посмотрите функцию FocusChangedEvent в файле EUDORA.JSS.
    3. Напишите пользовательскую функцию для каждого диалога, и пусть FocusChangedEvent вызывает эту функцию, когда будет активным этот диалог.
      Для примера посмотрите функцию FocusChangedEvent в файле WINWORD.JSS, которая была модифицирована для обработки SDM окон и двух версий Microsoft Word.
    4. Когда вы клавишей Tab перемещаетесь между элементами управления, вызывается ли FocusChangedEvent? Если нет, добавьте строку
      ForceFocusChange=1
      в раздел [OSM] файла конфигурации .JCF для приложения, и попробуйте еще раз. Функция FocusChangedEvent обычно вызывается только в том случае, если фокус ввода переместился в окно с дескриптором, отличным от дескриптора окна, где прежде находился фокус ввода. В некоторых приложениях, например в некоторых частях MS Access, поле редактирования может иметь тот же самый дескриптор, что и предыдущее поле. Активизировав опцию ForceFocusChange, вы заставляете функцию FocusChangedEvent запускаться всякий раз, когда новое окно имеет другие координаты пикселей, нежели старое.
    5. Имеют ли элементы управления уникальные контрольные идентификаторы? Если да, пользуйтесь ими, чтобы определить, какой элемент управления является активным. Таким образом, можно использовать выражение If-Then чтобы проверить значение контрольного идентификатора окна, а затем выполнить какие-то операции или озвучивать какие-либо сообщения для каждого уникального контрольного идентификатора.
    6. Используйте координаты пикселей, чтобы определить, какой элемент управления является активным. (координаты должны быть относительно окна, а не относительно экрана). Таким образом, можно использовать выражение If-Then, чтобы проверить текущие координаты, а затем выполнить определенные операции или озвучить определенные сообщения для каждого уникального набора координат.
    7. Пишите пользовательский код для каждого проблематичного элемента правления.
    8. Если диалог представляет собой одно большое окно, то есть, элементы управления не имеют уникальных контрольных идентификаторов, установив TrackFocusRect=1, PC курсор может перемещаться, когда вы нажимаете клавишу Tab, среди элементов управления.
    9. Напишите скрипт для озвучивания соответствующей информации, основываясь на координатах пикселей, и закрепите этот скрипт за клавишами Tab и Shift+Tab.

III. Обнаружение важной информации на экране

  1. Создайте фреймы вокруг областей, представляющих интерес. Закрепите их за горячими клавишами или сделайте так, чтобы они озвучивались автоматически. (пример того, где это можно сделать, это номера страниц на строке состояния в Microsoft Word. Можно читать номер текущей страницы по горячей клавише, задав ей читать фрейм, или создать фрейм так, чтобы он озвучивал все изменения в номерах страниц автоматически.
  2. Проследите иерархию окон, чтобы найти интересующую информацию. То есть перемещайтесь вверх и вниз по родительским и дочерним окнам, или по окнам на одном и том же логическом уровне, чтобы найти элемент управления или текстовое поле, которое вас интересует.
  3. Поищите текст или графические элементы на экране. Примером этого может служить поиск кнопок на панели инструментов в Microsoft Office чтобы проверить их состояние. Это не так надёжно, как отслеживание иерархии окон.

IV. Предоставление расширенного доступа при помощи клавиатуры

  1. Напишите скрипт для перемещения в определенные места и пусть там щёлкает мышь. Закрепите эти скрипты за клавишами. Это симулирует доступ через клавиатуру и увеличивает эффективность:
    1. Воспользуйтесь функцией MoveToFrame для позиционирования в важные точки внутри определяемых пользователем фреймов.
    2. Воспользуйтесь функцией MoveTo для позиционирования в важных точках на экране.
    3. Используйте функцию FindGraphic для позиционирования в важных точках, ассоциированных с элементами графики.
    4. Используйте функцию FindString для позиционирования в важных точках, которые содержат конкретный текст.

V. Настройка брайлевского вывода

  1. Модифицируйте BrailleBuildLine чтобы объединить необходимую информацию в разных обстоятельствах, такую как braille build диалог, меню и другое в скриптах по умолчанию.
  2. Модифицируйте BrailleBuildStatus чтобы использовать BrailleSetStatusCells, чтобы предоставлять контекстно зависимую информацию, такую как информацию об атрибутах.
  3. Добавьте информационные сообщения:
    1. Сделайте пользовательские версии помощи по горячим клавишам (Insert+H0.
    2. Сделайте пользовательскую версию контекстно зависимой подсказки (Insert+F1).

VI. Наименование скриптов и функций для конкретных приложений

  1. Если скрипт имеет аналогичное назначение, что и скрипт или функция в файле по умолчанию, присвойте ему то же имя и не присваивайте клавишу, специфичную для конкретного приложения. Закрепление в раскладке клавиатуры по умолчанию будет запускать именно этот скрипт.
  2. Используйте раскладку клавиатуры, специфичную для приложения, чтобы закреплять клавиши за скриптами, которые являются уникальными (и имеют уникальные имена) для данного приложения. Например, посмотрите использование F7 для проверки орфографии в Microsoft Word.
  3. Если скрипт обрабатывает и обычную, и специфичную ситуации, пусть вызывается версия по умолчанию из default.jss для всех нормальных ситуаций, чем дублировать код по умолчанию в файле скриптов по умолчанию. Скрипт для приложения должен содержать специальный код, необходимый для специальных ситуаций:
    1. Используйте скрипты для создания действий, которые можно закрепить за клавишами.
    2. Используйте функции для создания шаблонных действий, которые нет необходимости закреплять за клавишами.
    3. Используйте поля Synopsis и Description, когда будете создавать скрипты и функции. Эти поля предоставляют информацию для режима помощи по клавиатуре.


Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2019