Как без особых проблем переносить свои скрипты из одной версии JAWS в другую? |
| Автор: | © Владимир Довыденков |
| Дата публикации: | 2004 |
Это далеко не такой простой вопрос, как может показаться с первого взгляда.
Действительно, записывая свои небольшие скрипты непосредственно в файл default.jss мы сильно рискуем потратить изрядное время, перенося их в новую версию. Ведь для этого нужно найти все свои переменные, все свои константы, все подключаемые заголовочные файлы и собственно тела скриптов и скопировать их на новые места в default.jss от новой версии.
Если скрипт один, да еще при этом не имеет ни собственных глобальных констант, ни собственных глобальных переменных, то перенести его не сложно. Но если скриптов, хотябы, пять-семь, то их перенос превращается в трудоемкий процесс, в ходе которого могут возникать ошибки и теряться строки.
Между тем, есть хороший способ избежать подобных проблем изначально.
Итак, давайте, в качестве примера, оформим свой скрипт таким образом, чтобы перенести его в новую версию JAWS было делом нескольких минут.
Для этого:
Тем самым мы создали свой файл-скриптов, в который и будем, отныне, добавлять все свои скрипты.
Чтобы теперь переключаться между текстом default.jss и нашим файлом "addons.jss" используйте комбинацию клавиш Ctrl+Tab (или Ctrl+F6).
Теперь вписываем в наш файл текст скрипта. Будте внимательны, не перепутайте файлы "default.jss" и "addons.jss". В заголовке нужного нам окна должно быть написано: "JAWS Script Manager - [addons.JSS]".
Перед скриптами, в самом начале текста, весьма рекомендую вам вписать следующие две строки:
Include "HjGlobal.jsh" Include "hjconst.jsh"
Первая строка подключает файл с описанием глобальных переменных, а вторая - с описанием глобальных констант. Скрипты, которые мы будем рассматривать ниже, используют глобальные константы и без второй строки работать не будут.
Чтобы излагаемый здесь подход не был чисто умозрительным, а имел какой-нибудь практический результат, давайте создадим два весьма полезных скрипта: "Максимизация" (развертывание) окна и "Минимизация" (сворачивание) окна.
Мы продолжаем редактировать файл addons.jss в Диспетчере скриптов.
var
int StepsCounter
SpeechOff ()
SaveCursor ()
If (FindGraphic (GetCurrentWindow (), "maximize symbol", S_TOP, S_UNRESTRICTED) == 1) then
LeftMouseButton ()
Else
PCCursor ()
{alt+space}
let StepsCounter= 0
While ((GetWord () != "развернуть") && (StepsCounter < 10))
PriorLine ()
let StepsCounter= StepsCounter +1
Pause ()
EndWhile
If StepsCounter < 10 then
{enter}
Else
{escape}
EndIf
EndIf
RestoreCursor ()
SpeechOn ()
Здесь есть одна тонкость. Дело в том, что вышеприведенный скрипт ищет на экране значок для развертывания окна. Однако, имя у этого значка может быть разным, в зависимости от ваших настроек. По умолчанию, в англоязычной версии этот значек называется "maximize symbol". Чтобы проверить, как он называется в вашей версии настроек нажмите Insert+NumPad_минус (минус на правом цифровом блоке); далее Ctrl+Home, для того, чтобы поднять курсор мыши на самый верх текущего окна; End, чтобы перевести курсор мыши в конец строки, и, наконец, Ctrl+Стрелка_Влево, чтобы попасть на средний из трех управляющих значков. Если окно находится в обычном, не развернутом состоянии, то вы услышите название "значка максимизации".
Можете теперь нажать Insert+Gчто вызовет появление Программы наклейки ярлыков на графические объекты (GraphicsLabeler). Название значка можно скопировать из первой же строки появившегося окна.
Закройте GraphicsLabеler и Не забудте теперь включить PC курсор клавишей Плюс на правой цифровой клавиатуре.
Теперь, когда вы узнали, как называется символ максимизации (развертывания) окна в вашей версии JAWS, найдите в скрипте строку:
If (FindGraphic (GetCurrentWindow (), "maximize symbol", S_TOP, S_UNRESTRICTED) == 1) Then и вставте ваше название внутрь кавычек вместо слов "Maximize symbol"
Другая тонкость заключается в том, что работа скрипта ориентирована на русский вариант Windows. Поэтому название "Развернуть" пункта меню окна мы менять не будем. Если Windows таки англоязычный, это замечательная возможность попрактиковаться в знании языка скриптов и самостоятельно разобраться где и что нужно поменять, чтобы скрипт корректно выбирал нужный пункт меню.
Возвращаемся к нашей теме.
Итак, мы создали скрипт максимизации (развертывания) окна. Теперь, по аналогии, самостоятельно создайте скрипт минимизации (свертывания) окна.
Давайте, при этом, условимся, что называться он будет "MinWindow" и определим мы его на комбинацию клавиш "Control+Insert+PageDown".
Текст скрипта минимизации окна:
var
int StepsCounter
SpeechOff ()
SaveCursor ()
If (FindGraphic (GetCurrentWindow (), "minimize symbol", S_TOP, S_UNRESTRICTED) == 1) then
LeftMouseButton ()
Else
PCCursor ()
{alt+space}
let StepsCounter= 0
While ((GetWord () != "свернуть") && (StepsCounter < 10))
PriorLine ()
let StepsCounter= StepsCounter +1
Pause ()
EndWhile
If StepsCounter < 10 then
{enter}
else
{escape}
EndIf
EndIf
RestoreCursor ()
SpeechOn ()
Напомню, что этот текст следует вставить между заголовком скрипта: "Script MinWindow ()" и его концом: "EndScript".
Мы дошли уже до самой сути статьи и сейчас вы поймете, как подключить описаные в отдельном файле скрипты в глобальную систему скриптов, действующую во всех окнах и во всех программах.
use "addons.jsb"
Все. Теперь наши скрипты добавлены в основной файл default.jss и будут использоваться везде, во всех окнах.
Но осталось последнее тонкое место. Скрипты хоть и вписаны в основной файл, но не будут из него вызваны после нажатия назначеных для них комбинаций клавиш.
Происходит это потому, что при нажатии клавиши JAWS ищет сопоставление скрипта в файле default.jkm, а наши комбинации сохранены в файле addons.jkm
Для исправления ситуации откройте любым текстовым редактором файл addons.jkm из папки:
Jawsxxx\settings\enu и скопируйте в буфер обмена две строчки:
Control+JAWSKey+PageDown=MinWindow
Control+JAWSKey+PageUp=MaxWindow
Теперь этим же образом открываем в любом текстовом редакторе файл default.jkm из той же папки, что и addons.jkm и всттавляем после строки:
[Common Keys]
из буфера обмена те строки, которые только что скопировали из addons.jkm.
Сохраняем файл default.jss, закрываем редактор и перегружаем JAWS. То есть, выгружаем его по Insert+F4 и вновь загружаем.
Теперь заданные нами комбинации клавиш будут выполнять те скрипты, которые мы задали.
Настоятельно рекомендую все скрипты, которые вы когда-либо напишите (или же просто где-то найдете тексты отдельных скриптов), размещать в файле addons.jss и подключать описаным выше способом. Так как, во-первых, вам будет проще ориентироваться в своих собственных скриптах, а не "раскапывать" каждый раз огромный default.jss. Вво-вторых, при установке новой версии JAWS вам достаточно будет скопировать все файлы с именем addons в новую папку JAWSxxx\settings\enu и вписать в default.jss магическую строку
use "addons.jsb"
Кроме того, не забудьте скопировать назначение клавиш из addons.jkm в default.jkm.
Если в новой версии ваши скрипты не заработают с первого раза, то их необходимо будет лишь заново скомпилировать в Диспетчере Скриптов.
Завершая эту статью, мы хотим преподнести маленький сюрприз тем, кто добрался до этих строк и у кого уже установлен Jaws версии 5.10. Ниже приведены модифицированные для указанной версии варианты тех скриптов, о которых шла речь в статье.
Script MaxWindow () SendMessage (GetAppMainWindow (GetCurrentWindow ()), 274, 61488, 0) EndScript Script MinWindow () SendMessage (GetAppMainWindow (GetCurrentWindow ()), 274, 61472, 0) EndScript
| Проект осуществлен при поддержке компании RU-CENTER | |||
| Распространение материалов сайта означает, что распространитель принимает условия лицензионного соглашения. Идея и реализация: © Владимир Довыденков и Анатолий Камынин, 2004-2012 |
| ||