Mostramos como usar as chaves de um dispositivo Bluetooth controle remoto (com um adaptador USB) para controlar a função de espera, aumentar e diminuir o volume e controlar a câmera de um dispositivo de sala ou de mesa. Criamos um macro que escuta eventos relevantes e realizamos as ações associadas usando a API do dispositivo de sala ou de mesa.

O recurso do Dispositivo de entrada USB de terceiros é descrito neste artigo .

No exemplo a seguir, você deve inserir o texto que está escrito na fonte normal. O texto em itálico é a resposta que é recebida do dispositivo de sala ou de mesa.

1

Entre na sala ou no dispositivo de mesa no SSH. Você precisa de um usuário administrador local.

2

Configure o dispositivo para permitir o uso de um sistema USB de controle remoto.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

Você pode verificar se a configuração está 1 ou 1a desligada usando este comando:


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

Registre-se para comentários, para que seja notificado quando os controle remoto de registro são pressionados e liberados.


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

 

Você pode verificar quais comentários o dispositivo está registrado para usar este comando:


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

Pressione e solte um botão na guia controle remoto ver se o registro de comentários funciona.

Esta ação gera dois eventos: Pressionado e liberado. Se você pressionar e manter pressionada um botão, verá o evento pressionado até liberar o botão. Então o evento Liberado é gerado.

Esses eventos são emitidos ao pressionar e liberar a tecla Enter:

 
                   *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

Escreva um macro que ouça os eventos InputDevice relevantes e carregue as ações associadas usando a API do dispositivo.

  • Dar vida aos botões tempo de espera, volume e volume para baixo. Quando o macro vê um evento contendo_VOLUME DE TECLAS,_VOLUME DE_TECLAS PARA BAIXO ou INSOME, ele executa os comandos relacionados.

  • Crie uma função de controle de câmera para as teclas de setas. Queremos continuar movendo a câmera enquanto o botão for pressionado. Quando o botão é liberado, o movimento da câmera para. Quando o macro vê um evento_contendo TECLAS ESQUERDA, DIREITA_, TECLA PARA__CIMA ou TECLA PARA BAIXO, ele executa os comandos relacionados.


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