So klappt die Implementierung der Keyboard-Events

Keyboard-Events bei der Firefox-OS-TV-Plattform
Kommentare

In den Anfangszeiten des Smartphones gab es für sie nur eine begrenzte Anzahl verschiedener Tasten, etwa die Power-, Home- oder Lautstärketasten. Viel geändert hat sich bis heute daran nichts, doch trotzdem stellt die richtige Implementierung von Keyboard-Events Entwickler vor eine Herausforderung – immerhin unterscheidet sich das Verhalten von Input-Events über Hardware-Tasten von App zu App sowie von Device zu Device.

Gerade bei den immer beliebter werdenden Smart-TVs gilt es, ein angemessenes Verhalten beim Auslösen von Keyboard-Events zu definieren, wenn die Fernbedienungstasten sowohl vom System, als auch von Apps genutzt werden können. Schon seit einiger Zeit gibt es Firefox OS auch als TV-Plattform, und die Definition des richtigen Verhaltens bei der Betätigung der einzelnen Tasten ist auch hier zu einer wichtigen Frage geworden.

Chun-Min Chang und Shiqi Gao zeigen im Mozilla-Entwicklerblog, welchen Herausforderungen sich Entwickler beim Programmieren ein TV-Fernbedienung zum Managen von Keyboard-Events auf der Firefox-OS-TV-Plattform stellen müssen.

Keyboard-Events und Keyboard-Event-Szenarios

Ein typisches Beispiel für die unterschiedliche Besetzung der Fernbedienungstasten ist die Info-Taste. Bei Smart-TVs kann sie nicht nur für die Anzeige von Systeminformationen, sondern auch zur Anzeige von App-Informationen genutzt werden. Dementsprechend muss definiert werden, wann welche Art von Informationen dargestellt werden sollen, wenn der User die entsprechende Taste drückt.

Dafür gibt es vier unterschiedliche Keyboard-Event-Szenarien:

  • SYSTEM-ONLY
  • SYSTEM-FIRST
  • APP-CANCELLED
  • APP-FIRST

Die passende Antwort auf ein Keyboard-Event hängt dabei vom Szenario ab, in dem es auftritt. So kann das Drücken der Info-Taste zum Beispiel als APP-FIRST kategorisiert werden, während die Default-Aktion des Systems die Anzeige von System-Informationen ist. Dadurch können beim Pressen der Info-Taste mit App-Z im Vordergrund entweder die App-Informationen oder – sofern kein Event-Handler für die Taste definiert wurde – die System-Informationen angezeigt werden.

Um die oben genannten Szenarien zu implementieren, wurden bei der Firefox-OS-TV-Plattform vier neue Keyboard-Events (mozbrowserbeforekeydown, mozbrowserafterkeydown, mozbrowserbeforekeyup und mozbrowserafterkeyup) eingeführt, die nur von dem Fenster empfangen werden, das mozbrowser-iframe einbettet. Dabei treten die einzelnen Keyboard-Events in einer spezifischen Sequenz auf, was Entwicklern die Möglichkeit gibt, die einzelnen Szenarios passend zu implementieren.

Die iframe-Struktur in Firefox OS

iframe-Struktur Firefox OS

iframe-Struktur Firefox OS, Quelle: Mozilla

Bevor an die Implementierung der vier Szenarien geht, ist es wichtig zu verstehen, wie die iframe-Struktur in Firefox OS funktioniert. Dabei ist der äußerste iframe shell.html, in dem ein in-process iframe eingebettet ist, der auf system/index.html basiert. Die System-App beinhaltet wiederum die einzelnen Web-Apps, die entweder in-process oder out-of-process sein können (siehe Screenshot).

Auch die Reihenfolge der Keyboard-Events ist interessant. Wird beispielsweise ein keydown-Event an ein Element in einer mozbrowser-iframe-embedded-page gesendet, empfängt die Host-Page das mozbrowserbeforekeydown-Event, bevor das keydown-Event gesendet wurde, und das mozbrowserafterkeydown-Event nachdem es an die eingebettete Seite gesendet wurde. Dabei folgt der Event-Versandprozesss dem DOM-Tree-Event-Flow und lässt sich wie im folgenden Screenshot dargestellt visualisieren:

Event-Versandprozess Firefox OS

Event-Versandprozess Firefox OS, Quelle: Mozilla

Allerdings lassen sich einige Keyboard-Events auch zu nested mozbrowser-iframes erweitern; zudem sind keyup– und keydown-Events voneinander unabhängig, sodass sich die entsprechenden Pfade durchaus überschneiden können. Mehr Informationen zu den verschiedenen Prozessmöglichkeiten finden sich im oben genannten Blogpost, der sie nochmal ausführlich zusammenfasst.

Bei der Implementierung der vier Szenarien SYSTEM-ONLY, SYSTEM-FIRST, APP-CANCELLED und APP-FIRST gibt es jeweils einiges zu beachten – auch wenn es durchaus einige Überschneidungen bei der Implementierung von SYSTM-ONLY und SYSTEM-FIRST sowie APP-CANCELLED und APP-FIRST gibt. Worauf Entwickler bei der Definition von Keyboard-Events auf der Firefox-OS-TV-Plattform achten sollten, erklären Chang und Gao sehr ausführlich und mit zahlreichen Codebeispielen in ihrem Artikel Implementation details for keyboard events.

So bietet sich Entwicklern ein guter Anhaltspunkt, der die Implementierung von Keyboard-Events bei unter Firefox OS laufenden Smart-TVs vereinfachen kann und so am Ende auch zu einer besseren User Experience beitragen kann – dann nämlich, wenn die Tasten der TV-Fernbedienung mit einer passenden Antwort auf den Tastendruck des Users reagieren

Aufmacherbild: Watching tv and using remote control von Shutterstock / Urheberrecht: Marc Bruxelle

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -