NW.js still provides the Chrome Apps API which has been removed from Chrome, but not ChromeOS. This will allow us to access in a platform-independant manner devices which are connected with the PC per USB.
Without this API, a 3rd party Node.js module like node-hid could be used. This will however come with platform-dependant libraries and will have to be updated or rebuild each time the Node.js version changes.
This article concentrates on sending data to the controller. However it is also possible to retrieve data like pressed buttons using the established connection. Aside from using chrome.hid there is also the Gamepad API for read-only access.
Identifying the controller
First we need a way to identify the DS4. Devices come with a vendor Id and product Id. According to the Gentoo Wiki they are as follows:
Device
Vendor Id
Product Id
DS4 (1st gen)
hex 054C / dec 1356
hex 05C4 / dec 1476
DS4 (2nd gen)
hex 054C / dec 1356
hex 09CC / dec 2508
Having tested with both devices, I can also confirm the Ids.
Get the device
For all communication with the device, we will use the chrome.hid API. First we define a filter using the vendor and product Id, and then query the available devices:
Den Anfang der API-Reihe macht der YouTube-Player. Der Artikel wird ein wenig länger, weshalb ich ihn in zwei Teile aufgespalten habe. In Part 1 kommt der weniger geekige codelastige Teil mit den Parametern. In zwei Wochen kommt in Part 2 dann der eigentliche API-Inhalt mit selbstgebastelten Bedienelementen für ein Video.
Die Code-Beispiele mit eingebundenen Videos sind eine valide und gekürzte Form dessen, was YouTube zum Rauskopieren anbietet. embed und param name="movie" entfallen, dafür steht der Verweis zum Video in object data="…". Sieht man gleich.
Parameter für das Video
fs (default 0)
Wenn auf 1 gesetzt, lassen sich Videos in den Fullscreen-Modus umschalten. Kopiert man den YouTube-Code, steht es bereits mit drin.
hd (default 0)
Wenn auf 1 gesetzt, wird das Video in HD abgespielt, insofern vorhanden. Es wird nicht automatisch die höchste Auflösung genommen! Ein Video mit 360p und 480p wählt dann nicht die höheren 480p.
iv_load_policy (default 1)
Setzt man den Wert auf 3, werden video annotations nicht angezeigt.
Da müsst ihr API lesen. Schaut in die API. Steht alles in der API.
Als Erstsemester im Informatikbereich hört man das sehr häufig von seinen Professoren. Das Ding ist, sie haben auch noch recht. So eine ausführlich dokumentierte API macht vieles einfacher, reinigt Flüsse und lässt Blumen aus dem Monitor sprießen. Ja okay, da habe ich jetzt vielleicht etwas übertrieben, aber ist schon schnieke. Deswegen gibt es ab sofort eine kleine Artikelserie zu verschiedenen APIs, hauptsächlich solche, die auch für Nicht-Programmierer von Interesse sein können. Aber das seht ihr dann.
Nun kommt die Erklärung, was zum Henker eine „API“ ist. Fangen wir damit an, dass die Abkürzung für application programming interface steht. Dabei handelt es sich um eine Schnittstelle um mit Software zu interagieren – dazu zählt zum Beispiel auch, eine Programmiersprache wie Java nutzen zu können.
Ein paar Beispiele zum flüchtigen Anschauen (denn Durchlesen wäre wahnsinnig):
Die API-Dokumentation listet alle Methoden auf, die von der Software zur Verfügung gestellt werden, und liefert eine Beschreibung zur Wirkungsweise und Nutzung.
Zur 2. Stunde sollen wir uns vor der Cafta treffen. Die geringe Teilnehmerzahl macht nicht gerade Mut. Aber die meisten sind nur ein wenig spät. An der Treppe zum Schulgarten und den Tischtennisplatten bauen wir auf. Tische und Stühle mopsen wir uns aus einem unbesetzten Fünferklassenraum.
Ein Trupp geht hoch ins Lehrerzimmer. Ein Teil sucht sich Opfer zusammen und stylt diese in einem Nebenraum mit den Resten des got2be-Gewinnes um und der andere Teil der Gruppe passt auf, dass die Lehrer nicht so einfach flüchten. Die gutgläubige Annahme einer recht jungen Lehrerin „Ich dachte ihr lasst mich in Ruhe, weil ihr mich nicht kennt.“
müssen wir enttäuschen.
Auf dem Schulhof wird Musik aufgelegt und Hot Dogs und Getränke verkauft. Außerdem geht auf dem Schulhof das Styling weiter – nicht mehr mit Lehrern, sondern mit Schülern.
Programm wird auch noch geboten. Zuerst ein Sackhüpfen unter Lehrern, später auch mit Gewinnen für Schüler. Zudem ein Lehrerwettbewerb mit zwei Teams, wer zuerst den Kollegen/die Kollegin komplett in Toilettenpapier eingewickelt hat.
Das Ganze dauert die 3., 4. und 5. Stunde über. Danach geht es für die Schüler normal mit Unterricht weiter und für uns mit Aufräumen.