Este recurso destina-se a complementar as funcionalidades do controlador por toque ou a interface de usuário por toque. Não se destina a substituir eles.

Exemplos de aplicativos:

  • Em salas de aula e durante palestras, um pequeno controle remoto pode ser usado para ativar um dispositivo do modo de espera. Também pode ser conveniente usar um controle remoto para selecionar qual fonte de entrada apresentar.

  • Controlar a exibição da câmera (rotação, inclinação e zoom) em situações nas quais você não tem permissão para usar o controlador por toque. Por exemplo, em salas operacionais em um hospital.

Visão geral funcional

Quando um botão é pressionado no dispositivo de entrada USB, ele aciona uma ação na API do dispositivo Cisco. Macros ou dispositivos de controle externos de terceiros podem ser configurados para detectar essas ações e reagir de acordo. Essa funcionalidade é semelhante à maneira como os botões de controle na sala se comportam. Além disso, é viável monitorar essas ações por meio de webhooks ou diretamente em uma sessão SSH.

Uma biblioteca pré-existente de ações para escolher não é fornecida. Você é obrigado a definir e estabelecer as ações específicas que devem ocorrer em resposta aos eventos. Por exemplo:

  • Aumente o volume do dispositivo Cisco quando a tecla Volume para cima for pressionada.

  • Coloque o dispositivo Cisco no modo de espera quando a chave de suspensão for pressionada.

Configurações, Eventos e Status

As configurações e o status citados neste artigo estão disponíveis na interface da Web local do dispositivo e nas APIs. Leia o artigo Configurações do dispositivo para obter informações sobre como acessar a interface da Web e usar a API.

Quando a interface da Web do dispositivo for aberta, clique em Configurações . Em Configurações , altere Peripherals > InputDevice Mode to On . O suporte para dispositivos de entrada USB de terceiros está desativado por padrão.

Pressionar e liberar um botão gera um evento Pressionado e liberado :

 *e UserInterface InputDevice Key Action Key:  *e UserInterface InputDevice Key Action Code:  *e UserInterface InputDevice Key Action Type: Pressionado ** end *e UserInterface InputDevice Key Action Key:  *e UserInterface InputDevice Key Action Code:  *e UserInterface InputDevice Key Action Type: Fim do ** liberado 

Para ouvir eventos, você deve registrar comentários dos eventos InputDevice :

 Registrar xFeedback /event/UserInterface/InputDevice ** terminar 

Quando o dispositivo Cisco detectar o periférico de terceiros, ele será listado em Status e em Periféricos > Dispositivo conectado . O dispositivo de terceiros pode ser relatado como vários dispositivos.

Mais informações

Encontre mais informações sobre o uso de um dispositivo de entrada de terceiros no guia de Personalização . Escolha a versão mais recente.

O suporte da Cisco (TAC) não suporta a depuração do código de terceiros, incluindo macros. Verifique o Cisco RoomOS para dispositivos de colaboração se precisar de ajuda com macros e código de terceiros. Verifique esta página para obter mais exemplos de macros e ramais.

Exemplo

Neste exemplo, queremos mostrar como usar as teclas de um dispositivo de entrada USB de terceiros (neste caso, um controle remoto) para controlar determinadas funções em um dispositivo Cisco.

Mostramos como usar os botões em um controle remoto Bluetooth (conectado por meio de um adaptador USB) para gerenciar funções como espera, ajuste de volume e controle de um dispositivo de câmera Cisco. Você pode desenvolver uma macro que escuta eventos relevantes e executa ações correspondentes por meio da API do dispositivo Cisco.

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

1

Inicie sessão no dispositivo Cisco 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.

 xConfiguração Periféricos InputDevice Modo: 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 Modo: On ** end OK  
3

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

 Registrar xFeedback /event/userinterface/inputdevice  ** terminar OK  

 

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

 xFeedback list /event/userinterface/inputdevice ** terminar 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:

  Chave de ação chave *e UserInterface InputDevice: CHAVE _ ENTER *e UserInterface InputDevice Chave de ação Código: 28 *e UserInterface InputDevice Tipo de ação principal: Pressionado ** end *e UserInterface InputDevice Key Action Key: CHAVE _ ENTER *e UserInterface InputDevice Chave de ação Código: 28 *e UserInterface InputDevice Tipo de ação principal: Fim do ** liberado  
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: mensagem, duração: 3 }); } função cameraControl(motor, direção, 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', pressione => { 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; }} caso (pressione.Tipo == "Liberado") { switch (pressione.Tecla) { case "TECLA _ ESQUERDA": 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('Aumento do volume de áudio'); break; case 'KEY _ VOLUMEDOWN': com('Diminuição de volume de áudio'); quebrar; caso 'KEY _ SLEEP': com(standbyState ? 'Desativar em espera' : "Ativar em espera"); quebrar; padrão: break; }}}); } init();