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.
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:
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.
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
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.