Esse recurso serve para complementar as funcionalidades do controlador de toque ou da interface de usuário touch. Não se destina a substituí-los .

Exemplos de aplicativos:

  • Em salas de aula e durante palestras, um pequeno controle remoto pode ser usado para retomá-lo. Também pode ser conveniente usar um controle remoto para selecionar qual fonte de entrada apresentar.

  • Controlando a visualização da câmera (painel, inclinação e zoom) em situações em que você não tem permissão para usar o controlador de toque. Por exemplo, em salas de operação em um hospital.

Visão geral funcional

Quando um botão é pressionado no dispositivo de entrada USB, ele aciona uma ação dentro da API do dispositivo Cisco. É possível configurar macros ou dispositivos de controle externo de terceiros para detectar essas ações e reagir de acordo. Essa funcionalidade é semelhante à forma 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 preexistência de ações a serem escolhidas não é fornecida. Você deve 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 aumenta.

  • Coloque o dispositivo Cisco em modo de espera quando a tecla Suspensão for pressionada.

Configurações, Eventos e Status

As configurações e o status que são referidas neste artigo, estão disponíveis tanto na interface da Web local do dispositivo quanto 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 os Periféricos > InputDevice Modo para Ativado. O suporte para dispositivos de entrada USB de terceiros está desativado por padrão.

Pressionar e soltar um botão gera um evento Pressionado e Soltado:

 *e Tecla de ação de tecla InputDevice de Usuário: <name da chave> *e Código de ação de teclas do InputDevice de Usuário: <id da tecla> *e Tipo de ação de tecla do InputDevice do Usuário: Pressionado ** fim *e UserInterface InputDevice Key Action Key: <name da chave> *e Código de Ação Chave de InputDevice de Usuário: <id da chave> *e Tipo de ação chave do InputDevice do Usuário: Fim de ** liberado 

Para ouvir eventos, você tem que registrar comentários de eventos InputDevice:

 Registro xFeedback /evento/UserInterface/InputDevice ** final 

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

Mais informações

Saiba 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 é compatível com 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. Marque esta página para obter mais exemplos de macros e ramais.

Exemplo

Neste exemplo, queremos mostrar a você como usar as chaves de um dispositivo de entrada USB de terceiros (nesse caso um controle remoto) para controlar certas funções em um dispositivo Cisco.

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

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

1

Inicie sessão no dispositivo Cisco em SSH. Você precisa de um usuário local admin.

2

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

 Modo InputDevice de Periféricos de XConfiguração: On ** end OK  

 

Você pode verificar se a configuração está ativada ou desativada usando esse comando:

 Modo xConfiguração de Periféricos InputDevice  *c xConfiguração Periféricos Modo InputDevice: On ** end OK  
3

Registre-se para obter comentários, para nós sermos notificados quando os botões de controle remoto forem pressionados e soltos.

 Registro xFeedback /evento/usuário/inputdevice  ** final OK  

 

Você pode verificar em quais comentários o dispositivo está registrado, usando desse comando:

 lista /evento/evento do xFeedback/usuário/inputdevice ** end OK  
4

Pressione e solte um botão no controle remoto para verificar se o registro de comentários funciona.

Essa ação gera dois eventos: Pressionado e Solto. Se você manter pressionar um botão, você verá o evento Pressionado até soltar o botão. Em seguida, o evento Solto é gerado.

Esses eventos são emitidos quando pressionar e soltar 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( Tecla de ação da KEY_ENTER tecla DoInterface InputDevice): 28 *e Tipo de ação de tecla do InputDevice de Usuário: Liberado ** final  
5

Grave uma macro que escuta eventos InputDevice relevantes e executa as ações associadas usando a API do dispositivo.

  • Acione os botões de espera, volume para cima e volume para baixo. Quando a macro vê um evento contendo KEY_VOLUMEUP, KEY_VOLUMEDOWN ou KEY_SLEEP, executa os comandos relacionados.

  • Crie uma função de controle de câmera para as teclas de seta. É recomendado manter a câmera movendo, enquanto o botão estiver sendo pressionado. Quando o botão for solto, o movimento da câmera é interrompido. Quando a macro vê um evento contendo KEY_LEFT, KEY_RIGHT, KEY_UP ou KEY_DOWN, 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', { Texto: mensagem, duração: 3 }); } câmera de função Controle(motor, direção, cameraId='1') { com('Camera Ramp', { 'CameraId': cameraId, [motor]: direção }); } função init() { let standbyState; xapi.status.get('Standby').then(estado) => {standbyState = estado. Estado === 'Desligado' ? falso: verdadeiro; }); xapi.status.on('Standby', estado => { standbyState = estado. Estado === 'Desligado' ? falso: verdadeiro; }); xapi.event.on('UserInterface InputDevice Key Action', pressione => { if (pressione. Tipo == "Pressionado") { comutador (pressione. Key) { caso "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 contrário, se (pressione. Tipo == "Liberado") { switch (pressione. Chave) { caso "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; caso 'KEY_VOLUMEDOWN': com('Diminuir volume de áudio');; intervalo; caso 'KEY_SLEEP': com(standbyState? 'Desativação de espera' : 'Ativar espera'); Quebrar; padrão: pausa; } } }); } init();