This feature is meant to complement the functionalities of the touch controller or the touch user interface. It is not meant to replace them.

Exempel på program:

  • In classrooms and during lectures, a small remote control can be used to wake up a device from standby mode. it may also be convenient to use a remote control to select which input source to present.

  • Controlling the camera view (pan, tilt, and zoom) in situations where you are not allowed to use the touch controller. Till exempel i operativsystem i ett konferensrum.

Functional overview

When a button is pressed on the USB input device, it triggers an action within Cisco device's API. Macros or external control devices from third parties can be set up to detect these actions and react accordingly. This functionality is similarly to how In-Room Control buttons behave. Additionally, it's feasible to monitor these actions through webhooks or directly within an SSH session.

A pre-existing library of actions to choose from is not provided. You are required to define and establish the specific actions that should occur in response to the events. Till exempel:

  • Increase the volume of the Cisco device when the Volume Up key is pressed.

  • Put the Cisco device in standby mode when the Sleep key is pressed.

Konfigurationer, händelser och status

The configurations and status that are referred in this article, are available both from the local web interface of the device and the APIs. Read the Device configurations article for information how to access the web interface and use the API.

When the web interface of the device is opened, click on Settings . Under Configurations , change Peripherals > InputDevice Mode to On. Stödet för USB-ingångsenheter från tredje part är inaktiverat som standard.

Genom att trycka på och släppa en knapp genereras en klickad och en frisläppt händelse:

 *e UserInterface InputDevice Key Action Key: <name of the key> *e UserInterface InputDevice Key Action Code: <id of the key> *e UserInterface InputDevice Key Action Type: Pressed ** end *e UserInterface InputDevice Key Action Key: <name of the key> *e UserInterface InputDevice Key Action Code: <id of the key> *e UserInterface InputDevice Key Action Type: Released ** end 

För att lyssna efter händelser måste du registrera feedback från InputDevice events :

 xFeedback Register /event/UserInterface/InputDevice ** end 

When the Cisco device detects the third-party peripheral, it will be listed under Status and in Peripherals > ConnectedDevice . The third-party device may be reported as multiple devices.

Further information

Du hittar mer information om användning av en ljudenhet från tredje part i anpassningsguiden . Välj den senaste versionen.

Ciscos support (TAC) har inte stöd för felsökning av tredjepartskoder, inklusive makron. Please check the Cisco RoomOS for Collaboration Devices if you need help with macros and third-party code. Check this page for more examples of macros and extensions.

Exempel

In this example, we want to show you how to use the keys of a third-party USB input device (in this case a remote control) to control certain functions on a Cisco device.

We show you how to use the buttons on a Bluetooth remote control (connected through a USB dongle) to manage functions like standby, volume adjustment, and control of a Cisco camera device. You can develop a macro that listens to relevant events and executes corresponding actions through the Cisco device's API.

I följande exempel måste du skriva in texten som är skriftlig med normalteckensnitt. The text in italics is the response received from the Cisco device.

1

Sign in to the Cisco device on SSH. Du behöver en lokal administratörsanvändare .

2

Konfigurera enheten så att en USB-fjärrkontroll.

 xConfiguration Peripherals InputDevice Mode: On ** end OK  

 

Du kan kontrollera om konfigurationen är På eller Av med det här kommandot:

 xConfiguration Peripherals InputDevice Mode  *c xConfiguration Peripherals InputDevice Mode: On ** end OK  
3

Registrera dig för feedback, så att vi meddelas när knapparna fjärrkontroll trycks på och släpps.

 xFeedback Register /event/userinterface/inputdevice  ** end OK  

 

Du kan kontrollera vilka feedbacker som enheten är registrerad för med det här kommandot:

 xFeedback list /event/userinterface/inputdevice ** end OK  
4

Tryck och släpp en knapp på fjärrkontroll för att kontrollera att feedbackregistreringen fungerar.

Denna åtgärd skapar två händelser: Pressed and Released. Om du trycker på en knapp och håller ned en knapp visas den nedtryckta händelsen tills du släpper knappen. Sedan genereras händelsen Frisläppt.

Dessa händelser utfärdats när du trycker på och släpper Enter-tangenten:

  *e UserInterface InputDevice Key Action Key: KEY_ENTER *e UserInterface InputDevice Key Action Code: 28 *e UserInterface InputDevice Key Action Type: Pressed ** end *e UserInterface InputDevice Key Action Key: KEY_ENTER *e UserInterface InputDevice Key Action Code: 28 *e UserInterface InputDevice Key Action Type: Released ** end  
5

Skriv en makro som lyssnar efter relevanta InputDevice-händelser och avlyssnar de associerade åtgärderna med hjälp av enhetens API.

  • För knapparna vänteläge, volym upp och volym ner till liv. När makron ser en händelse som innehåller KEY_VOLUMEUP, KEY_VOLUMEDOWN eller KEY_SLEEP utförs de relaterade kommandona.

  • Skapa en kamerakontrollfunktion för piltangenterna. Vi vill fortsätta flytta kameran så länge knappen trycks ned. När knappen har släppts stoppas kamerarörelsen. När makron ser en händelse som innehåller NYCKEL_ÅT VÄNSTER,_NYCKEL TILL HÖGER, NYCKEL_UPP eller NYCKEL_NEDÅT utförs de relaterade kommandona.

 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: message, duration: 3 }); } function cameraControl(motor, direction, cameraId='1') { com('Camera Ramp', { 'CameraId': cameraId, [motor]: direction }); } function init() { let standbyState; xapi.status.get('Standby').then((state) => {standbyState = state.State === 'Off' ? false : true; }); xapi.status.on('Standby', state => { standbyState = state.State === 'Off' ? false : true; }); xapi.event.on('UserInterface InputDevice Key Action', press => { if (press.Type == "Pressed") { switch (press.Key) { case "KEY_LEFT": cameraControl('Pan', 'Left'); break; case "KEY_RIGHT": cameraControl('Pan', 'Right'); break; case "KEY_UP": cameraControl('Tilt', 'Up'); break; case "KEY_DOWN": cameraControl('Tilt', 'Down'); break; default: break; } } else if (press.Type == "Released") { switch (press.Key) { case "KEY_LEFT": cameraControl('Pan', 'Stop'); break; case "KEY_RIGHT": cameraControl('Pan', 'Stop'); 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 Deactivate' : 'Standby Activate'); break; default: break; } } }); } init();