Учитывая спектр задач для которых может использоваться система OpenSCADA нужно предусмотреть и механизм управления интерактивными пользовательскими событиями. Это связано с тем, что при решении отдельных задач встраиваемых систем устройства ввода и управления могут значительно отличатся. Впрочем достаточно взглянуть на обычную офисную клавиатуру и клавиатуру ноутбука что бы снять любые сомнения о необходимости менеджера событий.
Менеджер событий должен работать используя карты событий. Карта событий это список именованных событий с указанием его происхождения. Происхождением события может быть клавиатура, манипулятор мыши, джойстик и т.д. При возникновении события менеджер событий ищет его в активной карте и сопоставляет с именем события. Сопоставленное имя события помещается в очередь на обработку. Виджеты, в этом случае, должны обрабатывать полученную очередь событий.
Активная карта событий указывается в профиле каждого пользователя или устанавливается по умолчанию.
В целом предусмотрены четыре типа событий:
Само событие представляет недостаточно информации, особенно если его обработка происходит на уровнях выше. Для однозначной идентификации события и его источника событие в целом записывается следующим образом: "ws_BtPress:/curtime". Где:
В таблице 4.6 приведён перечень стандартных событий, поддержка которых должна быть обеспечена в визуализаторах СВУ.
Таблица 4.6. Стандартные события
Id | Описание |
Клавиатурные события: key_[pres|rels][Ctrl|Alt|Shift]{Key} | |
*SC#3b | Скан код клавиши. |
*#2cd5 | Код не именованной клавиши. |
*Esc | "Esc". |
*BackSpace | Удаления предыдущего символа - "<--". |
*Return, *Enter | Ввод - "Enter". |
*Insert | Вставка - "Insert". |
*Delete | Удаление - "Delete". |
*Pause | Пауза - "Pause". |
Печать экрана - "Print Screen". | |
*Home | Дом - "Home". |
*End | Конец - "End". |
*Left | Влево - "<-". |
*Up | Вверх - "^". |
*Right | Вправо - "->". |
*Down | Вниз - "\/". |
*PageUp | Страницы вверх - "PageUp". |
*PageDown | Страницы вниз - "PageDown". |
*F1 - *F35 | Функциональная клавиша от "F1" до "F35". |
*Space | Пробел - " ". |
*Apostrophe | Апостраф - "`". |
*Asterisk | Звёздочка на дополнительном поле клавиатуры - "*". |
*Plus | Плюс на дополнительном поле клавиатуры - "+". |
*Comma | Запятая - ",". |
*Minus | Минус - "-". |
*Period | Точка - ".". |
*Slash | Наклонная черта - "\". |
*0 - *9 | Цифра от "0" до "9". |
*Semicolon | Точка с запятой - ";". |
*Equal | Равно - "=". |
*A - *Z | Клавиши букв латинского алфавита от "A" до "Z". |
*BracketLeft | Левая квадратная скобка - "[". |
*BackSlash | Обратная наклонная линия - "/". |
*BracketRight | Правая квадратная скобка - "]". |
*QuoteLeft | Левая кавычка - "'". |
События клавиатурного фокуса. | |
ws_FocusIn | Фокус получен виджетом. |
ws_FocusOut | Фокус утерян виджетом. |
Мышиные события: | |
key_mouse[Pres|Rels][Left|Right|Midle] | Нажата/отпущена кнопка мыши. |
key_mouseDblClick | Двойное нажатие левой кнопки мыши. |
События примитива элементарной фигуры ElFigure: | |
ws_Fig{n}[Left|Right|Midle|DblClick] | Активация фигуры {n} клавишей мыши. |
События примитива элементов формы FormEl: | |
ws_LnAccept | Установлено новое значение в строке ввода. |
ws_TxtAccept | Изменено значение редактора текста. |
ws_ChkChange | Состояние флажка изменено. |
ws_BtPress | Кнопка нажата. |
ws_BtRelease | Кнопка отпущена. |
ws_BtToggleChange | Изменена вдавленность кнопки. |
ws_CombChange | Изменено значение поля выбора. |
ws_ListChange | Изменен текущий элемент списка. |
ws_SliderChange | Изменение положения слайдера. |
События примитива медиа-контента Media: | |
ws_MapAct{n}[Left|Right|Midle] | Активирована медиа-область с номером {n} клавишей мыши. |