Touch Unterstützung

Das WinCC OA UI unterstützt zur Laufzeit Touch-Bedienung. Die Bedienung per Touch kann parallel zu Maus und Tastatur erfolgen.

Hinweise und Voraussetzungen

  • Das UI wird für die Bedienung per Touch durch die UI Manager Startoption "-touch" oder den Config-Eintrag in der [UI] Sektion "usesTouchScreen = 1" optimiert (Einblenden von Bildschirmtastatur, Ausblenden von Scrollbars). Der -touch Parameter muss zur Verwendung der Bildschirmtastatur gesetzt sein.

  • Im Touch-Modus werden keine Bildaufleisten für scrollable Widgets (Tabelle, SelectionList, Tree, DpTypeView, DpTreeView, Module (die Fläche in der das Panel angezeigt wird)) angezeigt, weil diese Objekte durch Panning bedient werden können. Die Bildlaufleisten werden angezeigt, wenn sie als sichtbar konfiguriert werden.

  • Damit es zu keinen Konflikten zwischen den Betriebssystem-Einstellungen und den WinCC OA Touch-Einstellungen kommt, ist es notwendig, die Touch-Aktionen unter Windows zu konfigurieren. Gehen Sie hierfür zu Systemeigenschaften - Stift- und Fingereingabe, wählen Sie in der Registerkarte Fingereingabe den Eintrag Gedrückthalten aus und klicken Sie auf Einstellungen. Hier deaktivieren Sie die Checkbox "Gedrückthalten für Rechtsklick aktivieren".

Touchbedienung

Beim Arbeiten im Touch-Modus stehen die folgenden Gesten zur Verfügung:

Linker Mausklick

Ein Klick mit der linken Maustaste wird durch einen kurzen Tap auf den gewünschten Bereich des Panels durchgeführt.

Doppelklick

Zum Ausführen eines Doppelklicks sind schnell hintereinander zwei Taps auf den gleichen Punkt notwendig.

Rechter Mauspress / Long Tap

Ein Klick mit der rechten Maustaste (RightMousePressed-Event) wird durch einen langen Tap (Finger muss für 700 Millisekunden auf dem Punkt bleiben) ausgeführt.

Pinching

Um ein Panel mit zwei Fingern zu zoomen (=pinching), müssen die beiden Finger zu- bzw. auseinander bewegt werden.

Panning

Zum Verschieben des Panels (=panning) drücken Sie mit einem Finger auf den Bildschirm und bewegen diesen in die entsprechende Richtung.

Swipe

Durch eine Wischbewegung mit 1 oder 2 Fingern in eine beliebige Richtung kann das GestureTriggered-Event ausgelöst werden, welches für das Panel sowie eingebettete Module verfügbar ist. Diese Geste funktioniert nur, wenn das Panel nicht größer als der Anzeigebereich ist, da sonst Panning ausgelöst wird. Durch Panning wird jedoch das GestureTriggered-Event nicht ausgeführt. Eine detaillierte Beschreibung zum GestureTriggered-Event finden Sie unter Eigenschaften und Ereignisse des Panels.

Um den Abstand zwischen den Fingern für eine Swipe Bewegung zu definieren kann der Config Eintrag touchDetectionDistance verwendet werden.

HINWEIS

Für GNOME Desktops und den ULC UX werden die 2 Finger Swipe Gesten nicht unterstützt.

Scrollbars

Im Touchmodus eingeblendete Scrollbars werden größer dargestellt, um die Bedienung zu erleichtern.

HINWEIS

Allgemein sind alle Änderungen an Widgets im Touchmodus in der Datei "touchscreen.css" unter < wincc_oa_path >/config abgelegt. Somit ist es möglich, für Objekte eigene Definitionen anzugeben.

Zweihandbedienung

Um zu vermeiden, dass auf Touch-Panels durch unbeabsichtigtes Berühren des Monitors Befehle abgesetzt werden, kann die Zweihandbedienung konfiguriert werden.

Abbildung 1. Zweihand-Button

Der Zweihand Button ermöglicht es, alle Objekte die einen bestimmten Typnamen besitzen, zu deaktivieren.

Wird der Zweihand Button "TwoHand_op" aus STD_INPUTS mittels Drag & Drop in das Panel eingefügt, erscheint das folgende Dialogfenster:

Abbildung 2. Definieren der $-Parameter

Aktiviert man die Checkbox bei "$bActivateChild", so können die Multitouch-Gesten der Zweihandbedienung auch auf Childpanels übergeben werden.

Allgemein gilt: Fensterübergreifende Multitouch-Gesten sind mit zwei Root-Panels nicht möglich. Embedded Modules können hingegen über die Zweihandbedienung angesprochen werden.

Die Zweihandbedienung wird auf Windows unterstützt, wenn das Öffnen des Childpanels richtig synchronisiert ist (Siehe twoHands_op.pnl), z.B.: mit einem Delay im "Initialize"-Skript oder später vom "Clicked"-Skript des Mainpanels.

Dem $-Parameter "$sTypeNames" müssen die Typnamen aller Objekte angegeben werden, die von der Zweihandbedienung angesprochen werden sollen. Die Typnamen müssen durch Semicolons (;) getrennt eingegeben werden.

Anmerkung: Beachten Sie, dass die Typnamen keine Leerzeichen, Semicolons (;) und Punkte (.) enthalten dürfen. Zwischen den angegebenen Typnamen dürfen ebenfalls keine Leerzeichen eingegeben werden.

Alle Shapes die über einen entsprechenden Typnamen verfügen, werden beim Initialize für die Bedienung gesperrt, also auf Inaktiv gesetzt. Erst durch gedrückt halten des Buttons werden die Objekte wieder aktiviert, was sicherstellt, dass diese nicht unbeabsichtigt gedrückt werden können.

Folgende Shapes unterstützen die Zweihandbedienung:

  • Checkbox
  • Label
  • Push button
  • Radio box
  • Slider widget
  • Spin box
  • Textfield
  • TextEdit
  • Toggle button EWO
Anmerkung: Bitte beachten Sie, dass vor dem Auslösen der Events eine Verzögerung von 200msec stattfindet, um die korrekte Auswertung der durchgeführten Touch Geste zu ermöglichen. Dies ist der Standardwert des Config-Eintrags [ui] touchDetectionTimeout und kann darüber eingestellt werden.

Ereignisse

Maus-/Touchereignisse

Das UI kann im Touchmodus parallel mit Maus und Touchgesten bedient werden. Löst eine Touchgeste ein Ereignis aus, so wird dies auf die entsprechenden Mausereignisse abgebildet. Das betrifft folgende Ereignisse:

MousePressed, MouseReleased, RightMousePressed, Clicked, DoubleClicked

Zur Unterscheidung ob ein Ereignis durch Maus- oder Touchbedienung ausgelöst wurde, werden im Mapping der jeweiligen Main-Funktion main(mapping event) des Ereignisskripts zusätzliche Elemente übergeben. Das boolsche Flag isSynthesized==TRUE wird hierbei verwendet, um ein Auslösen durch Touch anzuzeigen.

Mapping-Elemente Beschreibung
buttons

MOUSE_LEFT

MOUSE_RIGHT

MOUSE_MIDDLE

Repräsentiert den Zustand der Buttons beim Auslösen des Ereignisses. Der "buttons" Zustand ist eine ODER-Kombination der MOUSE_* Elemente (=CTRL-Konstanten) oberhalb. Bei den Ereignissen MousePressed und DoubleClicked ist hier auch der Button der das Ereignis ausgelöst hat beinhaltet. Bei MouseReleased ist dies nicht der Fall.

buttonsAsString

“LeftButton”

“RightButton”

“MiddleButton”

Die Namen der Buttons welche beim Auslösen des Ereignisses gedrückt sind. Wenn mehrere Buttons gedrückt sind werden diese als ein String mit einem "|" Charakter als Trennzeichen zurückgeliefert.

button Beinhaltet den Zustand des Buttons der das Ereignis ausgelöst hat.
buttonAsString

“LeftButton”

“RightButton”

“MiddleButton”

Der Name des Buttons welcher das Ereignis ausgelöst hat.

modifiersAsString

”ShiftModifier”

”ControlModifier”

”AltModifier”

“MetaModifier”

Die Namen der Hilfstasten (Modifier) welche beim Auslösen des Ereignisses gedrückt sind. Wenn mehrere Tasten gedrückt sind werden diese als ein String mit einem "|" Charakter als Trennzeichen zurückgeliefert.

localPos X,Y Mapping der Maus-Postion relativ innerhalb des Panels.
globalPos X,Y Mapping der Maus-Position auf dem globalen Schirm.
modifiers

KEY_SHIFT

KEY_CONTROL

KEY_ALT

KEY_META

Repräsentiert den Zustand der Hilfstasten (Modifier) beim Auslösen des Ereignisses. Der "modifiers" Zustand ist eine ODER-Kombination der obigen CTRL-Konstanten..

isSynthesized Liefert TRUE wenn das Ereignis durch eine Touchgeste bzw. FALSE wenn es durch eine Maustaste ausgelöst wurde.

Implementierung von Touch Bedienung

Alle einfachen Grafikobjekte besitzen die MousePressed, MouseReleased, RightMousePressed, Clicked und DoubleClicked Events. Zusätzlich besitzen alle einfachen Grafikobjekte sowie die unterstützten Widgets die Read-only Eigenschaft "armed", welche TRUE ist so lange das Objekt mit dem Finger gedrückt wird und sich der Finger über dem Objekt befindet.

BEISPIEL

Wenn bei der Verwendung von Multitouch Bedienung ein Objekt gedrückt sein muss, während ein anderes genau dann eine Aktion auslösen soll wenn das erste Objekt noch gedrückt ist, so muss im Clicked/Pressed Script des zweiten Objektes der Zustand "armed" des ersten Objektes geprüft werden.

Bildschirmtastatur

WinCC OA liefert eine angepasste Bildschirmtastatur bei der Verwendung von -touch. Die Tastatur wird automatisch angezeigt wenn ein Feld durch den Benutzer ausgewählt wird welches bearbeitet werden kann. Die Tatstatur wird im Vordergrund des UIs angezeigt. Die verfügbaren Sprachen sind Deutsch, Englisch und Russisch.

Hinweis

Die Bildschirmtastatur wird nicht für die Mobile UI Applikation verwendet.

Zusätzliche Informationen

Die Bildschirmtastatur wird geladen wenn die Umgebungsvariable QT_IM_MODULE entweder nicht oder explizit auf "WinCC_OA_VirtualKeyboard" gesetzt wurde. Wenn die Umgebungsvariable entsprechend gesetzt wurde lädt der UI Manager intern das Skript "virtualKeyboard.ctl".

Das Skript arbeitet intern mit den beiden CallBack Funktionen "show()" und "hide()" welche automatisch aufgerufen werden sollte die Tastatur angezeigt oder ausgeblendet werden.

Um diese Bildschirmtastatur Panel vollständig zu deaktiveren und die Bildschirmtastatur zu verwenden welche das Betriebssystem zur Verfügung stellt muss die Umgebungsvariable QT_IM_MODULE auf "WinCC_OA_VirtualKeyboard:nopanel" gesetzt werden.

Um die Bildschirmtastatur anzuzeigen wird standardmäßig das Panel "virtualKeyboard.pnl" geöffnet, welches sich innerhalb eines eigenen Parent Moduls "_VirtualKeyboard_" befindet. Dieses Modul wird automatisch durch den UI Manager angelegt.

Da der UI Manager ein Panel nur nach dem Laden der config Datei öffnen kann steht dieses Bildschirmtastatur Panel nicht für die Projektauswahl des Desktop UIs zur Verfügung. Aus diesem Grund wird hier die Standard Bildschirmtastatur des Betriebssystems verwendet. Für Windows wird die TapTip.exe und für Linux xvkdb (und als Ersatz die kvkbd) verwendet.

Einschränkungen

Folgende Einschränkungen müssen bei Verwendung des WinCC OA Multitouch Features berücksichtigt werden:

  • Der GEDI unterstützt keine Touch Eingaben
  • Beim Trend Widget ist eine Touch-Bedienung der Trend Achsen nicht vorgesehen.
  • Panning und Pinching kann nur auf Objekten gestartet werden, welche keine dezidierte Touchbedienung implementiert haben. Hierunter fallen der WinCC OA Trend sowie eigene EWOs welche entsprechenden Code verwenden.
  • Multitouch-Bedienung zum gleichzeitigen Auswählen mehrerer Objekte ist nur bei folgenden Kombinationen möglich:
    • alle Gesten auf Widgets
    • alle Gesten auf einfachen Grafikobjekten

HINWEIS

Die gleichzeitige Bedienung von Widgets und einfachen Grafikobjekten in einem Multitouch-Event ist nicht möglich.

Folgende Widgets unterstützen die Multitouch-Bedienung:

  • Pushbutton
  • Slider
  • Thumbwheel
  • Toggleswitch

Bei Ereignissen gibt es im Touchmodus folgende Einschränkungen:

Ereignis Nicht unterstützte Widgets
DoubleClicked Auswahlliste, Bartrend, TextEdit, Tabelle, TreeView, DP-TreeView
KeyboardFocusIn Einfache Objekte, Auswahlliste, Registerkarte, Bartrend, Uhr
KeyboardFocusOut Einfache Objekte, Auswahlliste, Registerkarte, Bartrend, Uhr, DP-TreeView
MouseOver Registerkarte
RightMousePressed Auswahlliste, Bartrend, TextEdit, TreeView, DP-TreeView
SelectionChanged Einfache Objekte, Tabelle

Touch Support für ULC UX

Die Touch-Unterstützung funktioniert mit den freigegebenen Browsern.