Vi visar hur du använder tangenterna på en Bluetooth-fjärrkontroll (med en USB-dongle) för att kontrollera standby-funktionen, öka och minska volymen samt styra kameran i ett rum eller en skrivbordsenhet. Vi skapar en makro som lyssnar efter relevanta händelser och utför de associerade åtgärderna med hjälp av API:et för rummet eller skrivbordsenheten.

Funktionen USB-inmatningsenhet från tredje part beskrivs i den här artikeln .

I följande exempel måste du skriva in texten som är skriftlig med normalteckensnitt. Texten i ital stil är svaret som tas emot från rummet eller skrivbordsenheten.

1

Logga in på rummet eller skrivbordsenheten på 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: Pressade och släppt . 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();