Разделы
Социальные сети
|
Как без особых проблем переносить свои скрипты из одной версии JAWS в другую? |
Это далеко не такой простой вопрос, как может показаться с первого взгляда. Действительно, записывая свои небольшие скрипты непосредственно в файл default.jss, мы сильно рискуем потратить изрядное время, перенося их в новую версию. Ведь для этого нужно найти все свои переменные, все свои константы, все подключаемые заголовочные файлы и собственно тела скриптов и скопировать их на новые места в default.jss от новой версии.
Если скрипт один, да ещё при этом не имеет ни собственных глобальных констант, ни собственных глобальных переменных, то перенести его не сложно. Но если скриптов, хотя бы, пять-семь, то их перенос превращается в трудоёмкий процесс, в ходе которого могут возникать ошибки и теряться строки.
Между тем, есть хороший способ избежать подобных проблем изначально.
Итак, давайте, в качестве примера, оформим свой скрипт таким образом, чтобы перенести его в новую версию JAWS было делом нескольких минут. Для этого:
- Откройте файл default.jss (комбинация клавиш Ctrl+Shift+0)
- Когда файл загрузится, нажмите Ctrl+N, чтобы создать новый файл
- В открывшемся диалоге выберите пункт "Source (JSS)" ("исходник", он выбран по умолчанию) и нажмите Enter
- Откроется новое окно с заголовком "Untitled". Нажмите Ctrl+S и введите вместо "untitled.jss" строку "addons.jss" (без кавычек)
- Нажимайте Enter.
Тем самым мы создали свой файл-скриптов, в который и будем, отныне, добавлять все свои скрипты.
Чтобы теперь переключаться между текстом 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 в Диспетчере скриптов.
- Нажмите Ctrl+E для создания нового скрипта
- Впишите в соответствующие поля следующие значения:
- Имя скрипта ("Script Name"): MaxWindow
- Привязать к клавише ("Can be attached to Key"): включите этот флажок
- Краткий комментарий ("Synopsis"): Скрипт для развертывания текущего окна
- Описание ("Description"): Ищет на экране значок развертывания окна и, если находит, щелкает на нем курсором мыши. Если нужного значка на экране нет, вызывает меню окна (Alt+Пробел) и выбирает соответствующий пункт меню.
- Категория ("Category"): Mouse
- Привязать к... ("Assign To"): нажмите удобную для вас комбинацию клавиш. Например: Control+Insert+PageUp
- Найдите клавишей Tab кнопку "OK" и нажмите Enter
- Теперь вы вернулись в текст файла addons.jss и курсор находится между заголовком и концом скрипта MaxWindows. Пора вписывать текст скрипта.
- Итак, вставте без изменений в тело скрипта следующий текст:
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). Название значка можно скопировать из первой же строки появившегося окна.
Закройте GraphicsLabeler и Не забудьте теперь включить 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".
Мы дошли уже до самой сути статьи и сейчас вы поймёте, как подключить описаные в отдельном файле скрипты в глобальную систему скриптов, действующую во всех окнах и во всех программах.
- Компилируем получившийся текст скриптов: комбинация клавиш Ctrl+S
- Если компиляция прошла успешно и появилось сообщение "Compile complete addons.jss", то переходим к следующему пункту. Если же произошла какая-то ошибка, то попытайтесь самостоятельно разобраться в причинах, или же удалите скрипты и попробуйте сделать все сначала.
- Теперь переходим в текст default.jss (комбинация клавиш Ctrl+Tab) и подключаем наш скомпилированый файл. Для этого найдите строки, начинающиеся со слова
use .
- вслед за последней строкой, начинающейся со слова
use впишите следующее, сохранив кавычки:
use "addons.jsb"
- Теперь компилируем основной файл скриптов - default.jss (комбинация клавиш Ctrl+S). Компиляция этого файла займёт несколько больше времени, чем компиляция файла addons.jss.
Всё. Теперь наши скрипты добавлены в основной файл 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
|
|
Социальные сети