Le mostramos cómo usar los botones de un control remoto Bluetooth (conectado a través de un dongle USB) para administrar funciones como el modo de espera, el ajuste de volumen y el control de un dispositivo de cámara Cisco. Puede desarrollar una macro que escuche eventos relevantes y ejecute las acciones correspondientes a través del API del dispositivo Cisco.

La función del dispositivo de entrada USB de terceros se describe en este artículo .

En el siguiente ejemplo, debe introducir el texto escrito en una fuente normal. El texto en cursiva es la respuesta recibida del dispositivo Cisco.

1

Inicie sesión en el dispositivo Cisco en SSH. Necesitará un usuario local de administrador.

2

Configure el dispositivo para permitir el uso de un control remoto USB de terceros.

 xConfiguration Modo de dispositivo de entrada de periféricos: activado ** finalizar Aceptar  

 

Puede comprobar si la configuración se encuentra activada o desactivada mediante este comando:

 Modo de dispositivo de entrada de periféricos de xConfiguración  *c Modo de dispositivo de entrada de periféricos de xConfiguración: Activado ** finalizar Aceptar  
3

Regístrese para recibir comentarios, de forma que reciba notificaciones cuando se presionen o suelten los botones del control remoto.

 xFeedback Registrar /event/userinterface/inputdevice  ** finalizar Aceptar  

 

Puede verificar a qué comentarios se registró el dispositivo mediante este comando:

 xLista de comentarios /event/userinterface/inputdevice ** finalizar OK  
4

Presione y suelte un botón en el control remoto para comprobar que el registro de comentarios funciona.

Esta acción genera dos eventos: Pressed (Presionado) y Released (Liberación). Si mantiene presionado un botón, verá el evento Pressed (Presionado) hasta que suelte el botón. Luego, se generará el evento Released (Liberación).

Estos eventos se emiten cuando se presiona y libera la tecla Intro:

  *e Interfaz de usuario Tecla de acción de dispositivo de entrada: KEY_ENTER *e Código de acción de tecla de interfaz de usuario Dispositivo de entrada: 28 *e Tecla de acción de tecla de dispositivo de entrada de interfaz de usuario: presionado ** fin *e Tecla de acción de tecla de dispositivo de entrada de interfaz de usuario: KEY_ENTER *e Código de acción de tecla de dispositivo de entrada de interfaz de usuario: 28 *e Tipo de acción clave del dispositivo de entrada de interfaz de usuario: liberado ** fin  
5

Escriba una macro que escuche los eventos pertinentes del InputDevice (Dispositivo de entrada) y lleve a cabo las acciones relacionadas mediante la API del dispositivo.

  • Active los botones de espera, de subir el volumen y de bajar el volumen. Cuando la macro detecta un evento que contiene KEY_VOLUMEUP, KEY_VOLUMEDOWN o KEY_SLEEP, ejecuta los comandos relacionados.

  • Cree una función de control de la cámara para las teclas de dirección. Queremos seguir moviendo la cámara mientras el botón esté presionado. Cuando se suelta el botón, se detiene el movimiento de la cámara. Cuando la macro detecta un evento que contiene KEY_LEFT, KEY_RIGHT, KEY_UP o KEY_DOWN, ejecuta los comandos relacionados.

 const xapi = requerir('xapi'); function com(comando, args='') { xapi.command(comando, args); log(comando + ' ' + JSON.stringify(args)); } función registro(evento) { consola.log(evento); } función notificar(mensaje) { xapi.command('Visualización de línea de texto del mensaje de interfaz de usuario', { Texto: mensaje, duración: 3 }); } function cameraControl(motor, dirección, cameraId='1') { com('Camera Ramp', { 'CameraId': cameraId, [motor]: dirección }); } función init() { let standbyState; xapi.status.get('Standby').then((state) => {standbyState = state.State === 'Off' ? false: true; }); xapi.status.on('En espera', estado => { estado en espera = estado.Estado === 'Apagado' ? falso: verdadero; }); xapi.event.on('Acción de tecla del dispositivo de entrada de la interfaz de usuario', presione => { if (press.Type == "Presionado") { switch (press.Key) { case "KEY_LEFT": cameraControl('Pan', 'Izquierda '); break; case "KEY_RIGHT": cameraControl('Pan', 'Derecha'); break; case "KEY_UP": cameraControl('Tilt', 'Arriba'); break; case "KEY_DOWN": cameraControl('Tilt ', 'Abajo'); break; predeterminado: 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('Aumento del volumen de audio'); break; case 'KEY_VOLUMEDOWN': com('Disminución del volumen de audio'); break; case 'KEY_SLEEP': com(standbyState? 'Desactivar espera' : 'Activar espera'); romper; predeterminado: romper; } } }); } en eso();