Diese Funktion soll die Funktionen des Touch-Controllers oder der Touch-Benutzeroberfläche ergänzen . Es ist nicht beabsichtigt, sie zu ersetzen .

Anwendungsbeispiele:

  • In Klassenräumen und bei Vorträgen kann eine kleine Fernbedienung verwendet werden, um ein Gerät aus dem Standby-Modus zu aktivieren. Es kann auch praktisch sein, eine Fernbedienung zu verwenden, um auszuwählen, welche Eingabequelle präsentiert werden soll.

  • Steuerung der Kameraansicht (schwenken, kippen und zoomen) in Situationen, in denen Sie den Touch-Controller nicht verwenden dürfen. Zum Beispiel in Räumen in einem Krankenhäuser.

Funktionsübersicht

Wenn eine Taste auf dem USB-Eingabegerät gedrückt wird, wird eine Aktion in der API des Cisco-Geräts ausgelöst. Makros oder externe Steuergeräte von Dritten können eingerichtet werden, um diese Aktionen zu erkennen und entsprechend zu reagieren. Diese Funktionalität ähnelt dem Verhalten der Raumsteuerungstasten. Darüber hinaus ist es möglich, diese Aktionen über Webhooks oder direkt innerhalb einer SSH-Sitzung zu überwachen.

Es wird keine vorhandene Bibliothek mit Aktionen zur Auswahl zur Verfügung gestellt. Sie müssen die spezifischen Aktionen definieren und festlegen, die als Reaktion auf die Ereignisse erfolgen sollten. Beispiel:

  • Erhöhen Sie die Lautstärke des Cisco-Geräts, wenn die Lautstärketaste gedrückt wird.

  • Versetzen Sie das Cisco-Gerät in den Standby-Modus, wenn die Taste für den Energiesparmodus gedrückt wird.

Konfigurationen, Ereignisse und Status

Die Konfigurationen und der Status, auf die in diesem Artikel Bezug genommen wird, sind sowohl über die lokale Weboberfläche des Geräts als auch über die APIs verfügbar. Lesen Sie den Artikel zu Gerätekonfigurationen , um Informationen zum Zugriff auf die Weboberfläche und zur Verwendung der API zu erhalten.

Wenn die Weboberfläche des Geräts geöffnet ist, klicken Sie auf Einstellungen. Ändern Sie unter Konfigurationen die Option Peripheriegeräte > Eingabegerätemodus zu Ein. Die Unterstützung von USB-Eingangsgeräten von Drittanbietern ist standardmäßig deaktiviert.

Durch Drücken und Freigeben einer Schaltfläche werden ein gedrücktes und ein freigegebenes Event generiert:

 *e Tastenaktion-Schlüssel für Benutzerschnittstelle InputDevice:  *e Tastenaktion-Code für Benutzerschnittstelle InputDevice:  *e Tastenaktion-Typ für Benutzerschnittstelle InputDevice: ** Ende gedrückt *e Tastenaktion der Benutzeroberfläche InputDevice:  *e Tastenaktion des Benutzeroberflächen InputDevice:  *e Tastenaktion des Benutzeroberflächen InputDevice: Freigegeben ** Ende 

Um auf Events zu hören, müssen Sie sich über den InputDevice-Event registrieren:

 xFeedback Registrieren /Event/Benutzeroberfläche/Eingabegerät ** Ende 

Wenn das Cisco-Gerät das Drittanbieter-Peripheriegerät erkennt, wird es unter Status und unter Peripheriegeräte > ConnectedDevice aufgeführt. Das Drittanbietergerät kann als mehrere Geräte gemeldet werden.

Weitere Informationen

Weitere Informationen zur Verwendung eines Drittanbieter-Eingabegeräts finden Sie im Customization Guide . Wählen Sie die aktuelle Version.

Cisco-Support (TAC) unterstützt kein Debugging von Drittanbietercode, einschließlich Makros. Überprüfen Sie Cisco RoomOS für Geräte für die Zusammenarbeit , wenn Sie Hilfe bei Makros und Drittanbietercodes benötigen. Weitere Beispiele für Makros und Erweiterungen finden Sie auf dieser Seite .

Beispiel

In diesem Beispiel möchten wir Ihnen zeigen, wie Sie die Tasten eines USB-Eingabegeräts eines Drittanbieters (in diesem Fall eine Fernbedienung) verwenden, um bestimmte Funktionen auf einem Cisco-Gerät zu steuern.

Wir zeigen Ihnen, wie Sie die Tasten einer Bluetooth-Fernbedienung (verbunden über einen USB-Dongle) verwenden, um Funktionen wie Standby, Lautstärkeeinstellung und Steuerung eines Cisco-Kamerageräts zu verwalten. Sie können ein Makro entwickeln, das relevante Ereignisse überwacht und die entsprechenden Aktionen über die API des Cisco-Geräts ausführt.

Im folgenden Beispiel müssen Sie den Text eingeben, der in einer normalen Schriftart geschrieben ist. Der kursive Text ist die Antwort, die vom Cisco-Gerät empfangen wurde.

1

Melden Sie sich beim Cisco-Gerät auf SSH an. Sie benötigen einen lokalen Administratorbenutzer .

2

Konfigurieren Sie das Gerät so, dass es auch USB-Geräte von Drittanbietern Remotesteuerung.

 InputDevice-Modus für xConfiguration Peripherals: Am ** Ende OK  

 

Mit diesem Befehl können Sie überprüfen, ob die Konfiguration ein- oder ausgeschaltet ist:

 xConfiguration Peripherals InputDevice Mode  *c xConfiguration Peripherals InputDevice Mode: Am ** Ende OK  
3

Registrieren Sie sich für Feedback, sodass wir benachrichtigt werden, Remotesteuerung die Schaltflächen gedrückt und freigegeben werden.

 xFeedback Registrieren /Event/Benutzerschnittstelle/Eingabegerät  ** end OK  

 

Sie können anhand dieses Befehls überprüfen, für welches Feedback das Gerät registriert ist:

 xFeedback-Liste /Event/Benutzerschnittstelle/Eingabegerät ** end OK  
4

Drücken Sie auf die Schaltfläche und lassen Sie eine Taste auf Remotesteuerung, um zu überprüfen, ob die Feedback-Registrierung funktioniert.

Diese Aktion generiert zwei Ereignisse: Gedrückt und Losgelassen. Wenn Sie eine Schaltfläche gedrückt halten, wird das gedrückte Event angezeigt, bis Sie die Schaltfläche losschalten. Anschließend wird das Event " Freigegeben" erstellt.

Diese Ereignisse werden ausgegeben, wenn die Eingabetaste drückt und veröffentlicht wird:

  *e Aktion-Taste für Eingabegerät der Benutzeroberfläche: SCHLÜSSEL_EINGABE *e Tastenaktion Code für Benutzerschnittstelle InputDevice: 28 *e Tastenaktion Typ der Benutzeroberfläche InputDevice: Aktion-Taste ** Ende *e Eingabegerätetaste der Benutzeroberfläche gedrückt: SCHLÜSSEL_EINGABE *e Tastenaktion Code für Benutzerschnittstelle InputDevice: 28 *e Tastenaktion Typ der Benutzeroberfläche InputDevice: Freigegeben ** Ende  
5

Schreiben Sie ein Makro, das die relevanten InputDevice-Ereignisse abhört und die zugeordneten Aktionen mithilfe der API des Geräts durch führt.

  • Aktivieren Sie die Schaltflächen Standby, Lautstärke und Lautstärke nach unten. Wenn das Makro ein Ereignis mit KEY VOLUMEUP, KEY__VOLUMEDOWN oder KEY_SLEEP sieht, werden die entsprechenden Befehle ausgeführt.

  • Erstellen Sie eine Kamerasteuerungsfunktion für die Pfeiltasten. Wir möchten die Kamera so lange bewegen, wie die Taste gedrückt ist. Wenn die Schaltfläche freigelassen wird, stoppt die Kamerabewegung. Wenn das Makro ein Ereignis mit KEY_LEFT, KEY_RIGHT, KEY_UP oder KEY_DOWN sieht, werden die entsprechenden Befehle ausgeführt.

 const xapi = require('xapi'); function com(command, args='') { xapi.command(command, args); log(command + ' ' + JSON.stringify(args)); } function log(event) { console.log(event); } function notify(message) { xapi.command('UserInterface Message TextLine Display', { Text: Nachricht, Dauer: 3 }); } Funktion cameraControl (Motor, Richtung, cameraId='1') { com('Camera Ramp', {'CameraId': cameraId, [Motor]: direction }); } Funktion init() { let standbyState; xapi.status.get('Standby').then((state) => {standbyState = state.State === 'Aus' ? false : true; }); xapi.status.on('Standby', state => { standbyState = state.State === 'Aus'? false : true; }); xapi.event.on('Benutzerschnittstelle InputDevice Key Action', drücken => { if (press.Type == "Gedrückt") { switch (press.Key) { case "KEY_LEFT": cameraControl('Schwenken', 'Links'); break; case "KEY_RIGHT": cameraControl('Schwenken', 'Rechts'); break; case "KEY_UP": cameraControl('Tilt', 'Up'); break; case "KEY_DOWN": cameraControl('Tilt', 'Nach unten'); break; Standard: break; }} else if (drücken Sie. Type == "Freigegeben") { switch (drücken Sie. Taste) { case "TASTE_LINKS": cameraControl('Schwenken', 'Stopp'); break; case "KEY_RIGHT": cameraControl('Schwenken', 'Stopp'); break; case "KEY_UP": cameraControl('Tilt', 'Stop'); break; case "KEY_DOWN": cameraControl('Tilt', 'Stop'); break; case 'KEY_VOLUMEUP': com('Audio Volume Increase'); break; case 'KEY_VOLUMEDOWN': com('Audio Volume Decrease'); break; case 'KEY_SLEEP': com(standbyState ? „Standby deaktivieren“: 'Standby aktivieren'); break; Standard: break; } } }); } init();