
- •Часть I: начало работы со скриптами
- •3.3 В Jaws for Windows появилась возможность загружать файлы
- •Void, если вам не нужно, чтобы ваша функция возвращала какое-либо
- •Insert Function Call - выводит диалог вставки функции, который
- •Insert PerformScript (вставить выполнение скрипта) - при выборе этой
- •InvisibleCursor() - активизирует невидимый курсор.
- •InvisibleCursor() ; активизируется невидимый курсор
- •InvisibleCursor () ; активизируется невидимый курсор
- •InvisibleCursor(), нажимайте Enter, чтобы вставить ее в наш скрипт.
- •Часть II
- •Include "hjglobal.Jsh"
- •IntVar на 1)
- •If (nAttributes & attrib_highlight) Then
- •Visual Basic.
- •If GetExcelVersion Then
- •If (nAttributes & attrib_highlight) then
- •1. Используйте комментарии, комментарии и еще раз комментарии!
- •InvisibleCursor() - активизирует невидимый курсор.
- •2. Диспетчер скриптов проверяет .Jsd файл на наличие строк
- •Include файлы проверяются, когда они включаются. Всегда ставьте
- •If (IsSameScript ()) Then
- •Import Macro File: используется для импорта файла макроса из ранних версий
- •If (GetAttributes() & attrib_underline) then ... (более подробное описание
- •VerbosityLevel - контролирует количество информации, произносимой jfw,
InvisibleCursor() ; активизируется невидимый курсор
RouteInvisibleToPC() ; перемещает невидимый курсор к PC курсору, чтобы он
был в нужном окне
JAWSPageDown() ; перемещает невидимый курсор в нижнюю строку окна
JAWSHome() ; перемещает невидимый курсор в начало нижней строки
SayLine() ; озвучиваем нижнюю строку окна
RestoreCursor() ; восстанавливаем курсор, который мы сохранили, и его позицию
EndScript ; конец скрипта
Посмотрите, как все это работает! Вы могли бы использовать этот скрипт,
чтобы читать строку состояния в Microsoft Word. В строке состояния
сообщаются номер страницы, номер строки, номер столбца и другая
подобная информация. Если вам нужен был только номер страницы, вы могли
бы подставить функцию SayWord(), после чего NextWord(), и еще одну
функцию SayWord(), вместо функции SayLine(). Тогда вы услышите только
слова: страница и номер.
Есть важная тонкость в функциях SaveCursor и RestoreCursor, и эту тонкость
необходимо понимать. Эти функции сохраняют, а затем восстанавливают тип
курсора, каким бы ни был активный курсор, когда используется функция
SaveCursor. Кроме того, если активными являются JAWS курсор или
невидимый курсор, когда используется функция SaveCursor, позиция курсора
также сохраняется, а затем восстанавливается функцией RestoreCursor.
Курсоры, которые активизируются и перемещаются после того, как была
использована функция SaveCursor, не будут восстанавливаться в своем
первоначальном типе или позициях. Таким образом, в вышеприведенном
примере, позиция невидимого курсора не будет восстановлена, если он не
оказался активным курсором при вызове функции SaveCursor. Однако, есть
возможность использовать несколько утверждений типа SaveCursor и
RestoreCursor в одном скрипте. Эти утверждения будут "вкладываться", во
многом походя на то, как вкладываются скрипты приложений и скрипты по
умолчанию. Это означает, что если вам пришлось воспользоваться вторым
утверждением SaveCursor, и вам нужно было иметь активным другой курсор,
а не тот, который у вас был, когда вы использовали первое утверждение
SaveCursor, то сохранена будет позиция второго курсора, когда SaveCursor
будет выполняться во второй раз. Более того, утверждения RestoreCursor будут
откатывать утверждения SaveCursor в обратном порядке. Таким образом, если
вы выполняете два утверждения SaveCursor, а затем выполняете RestoreCursor,
сначала будет восстановлен второй сохраненный курсор. Чтобы вернуть
первый SaveCursor, вы должны выполнить RestoreCursor во второй раз.
Следующий пример иллюстрирует вложение вызовов функции SaveCursor:
Script ReadBottomLine () ; начинает скрипт и присваивает ему имя
ReadBottomLine
SaveCursor () ; мы не знаем, какой курсор был активным, но мы сохраняем
его и его положение
InvisibleCursor () ; активизируется невидимый курсор
SaveCursor () ; сохраняет невидимый курсор и его положение
RouteInvisibleToPC () ; перемещает невидимый курсор к PC курсору, так чтобы
тот находился в нужном окне
JAWSPageDown () ; перемещает невидимый курсор в нижний край окна
JAWSHome () ; перемещаем невидимый курсор в начало нижней строки окна
SayLine () ; озвучивается нижняя строка окна
RestoreCursor () ; восстанавливается невидимый курсор и позиция, которую мы
сохранили
RestoreCursor () ; восстанавливается первоначальный курсор пользователя и
положение, которое мы сохранили
EndScript ; конец скрипта
Наконец, если вы используете SaveCursor () в скрипте, Jaws автоматически
поместит RestoreCursor () в конце скрипта, даже если вы забудете вызвать эту
функцию. Jaws предполагает, что вы хотите восстановить курсор, если вы
пользуетесь функцией SaveCursor () в скрипте. Если вы использовали
несколько утверждений SaveCursor (), Jaws автоматически вернет их на свои
места в обратном порядке, когда скрипт закончит работу, даже если вы
забудете поместить все положенные утверждения RestoreCursor ().
Соединяем все вместе
Теперь давайте рассмотрим процесс создания скрипта, закрепления его за
определенной клавишей и компиляции файла скриптов, чтобы им можно было
пользоваться. Предлагается такой план. Мы создадим скрипт для диспетчера
скриптов, который будет читать номер текущей строки. Для этой задачи нам
понадобится диспетчер скриптов. Как вы помните, мы уже пользовались этим
редактором ранее, когда создавали наши первые скрипты. На этот раз мы
заставим диспетчер скриптов поработать на нас немного побольше. В точности
выполняйте все шаги:
Запустите диспетчер скриптов, выбрав его в меню Jaws Utilities.
Нажмите Insert+Q чтобы убедиться, что настройки диспетчера скриптов
загружены в стек поверх файла скрипта по умолчанию и что имя программы
для диспетчера скриптов - jscript.exe. Это, конечно, означает, что текущим
файлом, контролирующим Jaws, является jscript.jss.
Чтобы загрузить этот файл, чтобы вы могли его отредактировать, войдите в
меню "Файл", нажав ALT+F, нажимайте стрелку вниз, пока не дойдете до
пункта "open" и нажмите Enter. В поле редактирования, введите имя файла
jscript.jss и нажмите Enter.
Наконец, нажмите Ctrl+End чтобы поместить курсор в конец файла скриптов,
то есть, в самое лучшее место для добавления новых скриптов.
Но прежде чем мы начнем писать наш скрипт, давайте исследуем окно, чтобы
посмотреть, что мы хотим узнать от нашего скрипта.
Диспетчер скриптов имеет строку состояния в нижней строке окна, которая
содержит подсказку, номер текущей строки и общее количество строк в
файле. Мы хотим, чтобы наш скрипт сообщал нам только номер текущей
строки.
Просто для того, чтобы убедиться в том, что мы знаем, что мы хотим
услышать от нашего скрипта, давайте сначала проделаем всю процедуру
вручную.
Сначала активизируйте Jaws курсор.
Затем нажмите Pgdn, чтобы встать на нижнюю строку, после чего нажмите
Home, чтобы встать в начало строки.
Теперь нажмите Insert+5 на цифровой клавиатуре, чтобы озвучить текущее
слово, и вы услышите слово "for". Воспользуйтесь командой "Следующее
слово" (Insert+^ на цифровой клавиатуре), чтобы прочесть строку слово за
словом. Теперь вы знаете, что пятое слово на этой строке является номером
текущей строки. Теперь мы знаем, что должен делать наш скрипт: он должен
активизировать курсор, поставить его в нужное место, а затем прочитать
слово. Ладно, активизируйте снова PC курсор, и мы начнем.
В меню Script (скрипт) выберите New script (Новый скрипт). Появится диалог
нового скрипта. Теперь мы должны назвать наш скрипт и написать его
документацию. Когда появляется диалог нового скрипта, курсор находится в
поле имени скрипта. Наберите SayLineNumber. Буквы S,L и N должны быть
заглавными, никаких пробелов быть не должно.
Нажмите Tab, чтобы переместиться к блоку проверки Can be attached to key
(может быть закреплен за клавишей) и нажмите пробел, чтобы включить его.
Позже мы закрепим наш скрипт за клавишей.
Нажмите Tab, чтобы переместиться к полю Synopsis и наберите "читает номер
текущей строки"
Нажмите Tab, чтобы переместиться к полю Description ?описание% и наберите
"строку, которая содержит PC курсор".
Нажмите Tab, чтобы переместиться в поле "Category" (категория) и наберите
"Say", потому что наш скрипт будет что-то говорить.
Нажмите Tab, чтобы переместиться в поле Assign To (закреплен за) и
нажмите Shift+Ctrl+L, чтобы закрепить эту комбинацию клавиш за скриптом
SayLineNumber.
Больше нам никаких полей заполнять не надо, поэтому нажмите Enter, чтобы
закрыть диалог нового скрипта и поместить наш новый пустой скрипт в
область редактирования.
Теперь у нас есть скрипт с утверждением begin с именем скрипта и
утверждение EndScript. Между ними имеется несколько пустых строк, куда
мы и должны вводить наши утверждения, и курсор находится на одной из
пустых строк. Нажимайте клавишу "Стрелка вверх", пока не окажетесь на
первой пустой строке скрипта.
На этот раз мы не будем писать имена функций вручную, как мы это делали
в случае с нашим первым скриптом. Мы воспользуемся диалогом диспетчера
скриптов Insert Function (Вставить функцию).
Выберите Insert Function Call (вставить вызов функции) в меню Скрипт или
воспользуйтесь горячей клавишей Ctrl+I. Появляется диалог вставки функции
и курсор устанавливается в поле редактирования имени функции. Под полем
редактирования имени функции также выводится список всех функций. С
помощью клавиши Tab можно переместиться в этот список и с помощью
клавиш-стрелок найти ту, которая вам нужна, но это не очень-то эффективно,
поскольку их больше двух сотен. Jaws имеет способ получше, но он требует,
чтобы вы имели хоть какое-то представление об имени функции.
Как и в нашем предыдущем примере, мы должны начать с сохранения
курсора и его положения. Функция будет SaveCursor(), но нам нужно будет
нажать только букву S, после чего инструмент Insert Function начнет искать
сразу же, как только вы начнете набирать. SaveCursor() - это первая функция,
которая начинается с буквы S. Обратите внимание, что как только фокус
переместился к SaveCursor(), было прочитано сообщение-подсказка,
объясняющая, как используется эта функция. Нажмите Enter, и функция
поместится в наш скрипт. Просто, не правда ли?
Теперь давайте активизируем невидимый курсор. Здесь мы используем
невидимый курсор, поскольку мы хотим просто прочитать номер строки и
вернуться. Нет никакого смысла тащить с собой мышь, поэтому мы не будем
пользоваться Jaws курсором. Нажмите Enter, чтобы вставить новую строку, а
затем снова CTRL+I.
На этот раз нам нужна функция InvisibleCursor(). На этот раз нам придется
набрать две буквы, поскольку InvisibleCursor() - это не первая функция,
которая начинается на букву I. Набирайте медленно, чтобы вы успевали
услышать, какая функция высвечивается. Как только вы услышите