Vi viser, hvordan man bruger tasterne på en Bluetooth-ekstern kontrol (med en USB-dongle) til at kontrollere standbyfunktionen, øge og sænke lydstyrken og kontrollere kameraet i et lokale eller en skrivebordsenhed. Vi opretter en makro, der lytter efter relevante begivenheder, og udfører de tilhørende handlinger ved hjælp af API'en for lokalet eller skrivebordsenheden.

Funktionen USB-inputenhed fra tredjepart er beskrevet i denne artikel .

I det følgende eksempel skal du indtaste teksten, der er skrevet med normal skrifttype. Teksten i kursiv er det svar, der modtages fra lokalet eller skrivebordsenheden.

1

Log ind på lokalet eller skrivebordsenheden på SSH. Du har brug for en lokal administratorbruger .

2

Konfigurer enheden til at tillade brug af en tredjeparts USB-ekstern kontrol.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

Du kan kontrollere, om konfigurationen er Til eller Fra ved hjælp af denne kommando:


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

Tilmeld dig feedback, så vi får besked, når ekstern kontrol trykkes og frigives.


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

 

Du kan kontrollere, hvilke feedbacks enheden er registreret til ved hjælp af denne kommando:


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

Tryk på knappen og slip en knap på ekstern kontrol for at kontrollere, at feedbackregistrering fungerer.

Denne handling genererer to begivenheder: Trykket og udgivet. Hvis du trykker og holder en knap nede, ser du den trykkede begivenhed, indtil du frigiver knappen. Så genereres den frigivne begivenhed.

Disse begivenheder udstedes, når du trykker på og frigiver Enter-tasten:

 
                   *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, der lytter efter de relevante InputDevice-begivenheder , og udfører de tilknyttede handlinger ved hjælp af enhedens API.

  • Bring standby-, lydstyrke- og lydstyrkeknapperne i brug. Når makroen ser en begivenhed, der indeholder KEY_VOLUMEUP, KEY_VOLUMEDOWN eller KEY_SLEEP, udfører den de relaterede kommandoer.

  • Opret en kamerastyringsfunktion til piletasterne. Vi vil gerne fortsætte med at flytte kameraet, så længe der trykkes på knappen. Når knappen er udgivet, stopper kamerabevægelsen. Når makroen ser en begivenhed, der indeholder TASTEN_VENSTRE, TAST_HØJRE, KEY_UP eller KEY_DOWN, udfører den de relaterede kommandoer.


       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();