Bluetooth uzaktan kumandanın (USB donanım kilidi bulunan) tuşlarının, bekleme işlevini kontrol etmek, sesi yükseltmek veya azaltmak ve oda veya masa cihazının kamerasını kontrol etmek için nasıl kullanılacağını göstereceğiz. İlgili olayları takip edip oda ya da masa cihazının API'sini kullanarak ilgili eylemleri gerçekleştiren bir makro oluşturuyoruz.

Üçüncü taraf USB Giriş Aygıtı özelliği bu makalede açıklanmaktadır.

Aşağıdaki örnekte, normal yazı tipiyle yazılmış olan metni girmeniz gerekir. İtalik metin, oda veya masa cihazından alınan tepkidir.

1

SSH'de oda veya masa cihazında oturum açın. Yerel yönetici kullanıcıya ihtiyacınız vardır.

2

Cihazı, üçüncü taraf USB uzaktan kumandanın kullanımına izin verecek şekilde yapılandırın.

xConfiguration Peripherals InputDevice Mode: On
** end

OK

               

 

Aşağıdaki komutu kullanarak yapılandırmanın Açık veya Kapalı olup olmadığını kontrol edebilirsiniz:

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

OK

                  
3

Geri bildirim için kaydolun, böylece uzaktan kumanda düğmeleri basıldığında ve serbest bırakıldığında bildirim alırız.

xFeedback Register /event/userinterface/inputdevice
** end

OK

               

 

Cihazın hangi geri bildirimler için kayıtlı olduğunu aşağıdaki komutu kullanarak kontrol edebilirsiniz:

xFeedback list
/event/userinterface/inputdevice
** end

OK

                  
4

Geri bildirim kaydının çalıştığından emin olmak için uzaktan kumandada bir düğmeye basın ve serbest bırakın.

Bu eylem iki olay oluşturur: Basılı ve Serbest. Bir düğmeyi basılı tutarsanız düğmeyi serbest bırakana kadar Basılı olayını görürsünüz. Ardından Serbest olayı oluşturulur.

Bu olaylar, Giriş tuşuna basıldığında ve serbest bırakıldığında verilir:

 
                  
*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

İlgili GirişAygıtı olaylarını takip edip cihazın API'sini kullanarak ilgili eylemleri gerçekleştiren bir makro yazın.

  • Bekleme, ses açma ve ses kısma düğmelerinin çalışmalarını sağlayın. Makro; KEY_VOLUMEUP, KEY_VOLUMEDOWN veya KEY_SLEEP içeren bir olay gördüğünde ilgili komutları yürütür.

  • Ok tuşları için kamera kontrol işlevi oluşturun. Düğme basılı tutulduğu sürece kameranın hareket etmeye devam etmesini istiyoruz. Düğme bırakıldığında kamera hareketi durur. Makro; KEY_LEFT, KEY_RIGHT, KEY_UP veya KEY_DOWN içeren bir olay gördüğünde ilgili komutları yürütür.

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