Bluetooth リモコン (USB ドングル経由で接続) のボタンを使用して、スタンバイ、音量調整、Cisco カメラ デバイスの制御などの機能を管理する方法を示します。 関連するイベントをリッスンし、Cisco デバイスの API を通じて対応するアクションを実行するマクロを開発できます。

サードパーティの USB 入力デバイスの機能については、 この記事で説明されています

次の例では、通常のフォントで書かれているテキストを入力する必要があります。 イタリック体のテキストは、Cisco デバイスから受信した応答です。

1

SSH で Cisco デバイスにログインします。 ローカル管理者ユーザが必要です。

2

サードパーティ製の USB リモートコントロールを使用できるようにデバイスを設定します。

 xConfiguration Peripherals InputDevice Mode: On ** end OK  

 

このコマンドを使用して、設定がオンかオフかを確認できます。

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

フィードバックを登録して、リモコンのボタンが押されて放されたときに通知されるようにします。

 xFeedback 登録 /event/userinterface/inputdevice  ** 終了 OK  

 

このコマンドを使用して、デバイスがどのフィードバックを登録しているかを確認できます。

 xFeedback list /event/userinterface/inputdevice ** 終了 OK  
4

フィードバック登録が機能していることを確認するには、リモコンのボタンを押して放します。

このアクションは 2 つのイベントを生成します。押されたそしてリリースした。 ボタンを長押しすると、ボタンをリリースするまでイベントは押されたままです。 次にリリースされたイベントが生成されます。

Enter キーを押して放すと、これらのイベントが発行されます。

  *e ユーザインターフェイス入力デバイスキーのアクションキー: KEY_ENTER *e ユーザインターフェイス入力デバイスキーのアクションコード: 28 *e ユーザインターフェイス入力デバイスキーのアクションタイプ: 押下 ** end *e ユーザインターフェイス入力デバイスキーのアクションキー: KEY_ENTER *e ユーザインターフェイス入力デバイスキーのアクションコード: 28 *e UserInterface InputDevice Key Action Type: リリース済み ** end  
5

関連する InputDevice イベントをリッスンするマクロを書き、デバイスの API を使用して関連するアクションを実行します。

  • スタンバイボタン、音量を上げるボタン、音量を下げるボタンを有効にします。 マクロが KEY_VOLUMEUP、KEY_VOLUMEDOWN、または KEY_SLEEP を含むイベントを検出すると、関連するコマンドを実行します。

  • 矢印キー用のカメラ制御機能を作成します。 ボタンが押されている限り、カメラを動かし続けます。 ボタンを離すと、カメラの動きが止まります。 マクロが KEY_LEFT、KEY_RIGHT、KEY_UP、または KEY_DOWN を含むイベントを検出すると、関連コマンドを実行します。

 const xapi = require('xapi');関数 com(コマンド, args='') { xapi.command(コマンド, args); log(コマンド + ' ' + JSON.stringify(args));関数ログ(イベント) { console.log(イベント); } function Notice(message) { xapi.command('UserInterface Message TextLine Display', { テキスト: メッセージ、期間: 3 }); } function CameraControl(motor, Direction, CameraId='1') { com('Camera Ramp', { 'CameraId': カメラ ID, [motor]: 方向 });関数 init() { スタンバイ状態にします。xapi.status.get('スタンバイ').then((state) => {standbyState = state.State === 'オフ' ? false: true; }); xapi.status.on('スタンバイ', state => {standbyState = state.State === 'オフ' ? false: true; }); xapi.event.on('UserInterface InputDevice Key Action', press => { if (press.Type == "Pressed") { switch (press.Key) { case "KEY_LEFT": CameraControl('Pan', 'Left '); ブレーク; case "KEY_RIGHT": カメラコントロール('パン', '右'); ブレーク; ケース "KEY_UP": カメラコントロール('チルト', 'アップ'); ブレーク; ケース "KEY_DOWN": カメラコントロール('チルト', 'Down'); ブレーク; デフォルト: ブレーク; } } else if (press.Type == "リリース") { switch (press.Key) { case "KEY_LEFT": CameraControl('Pan', 'Stop') ; ブレーク; ケース "KEY_RIGHT": カメラコントロール('パン', 'ストップ'); ブレーク; ケース "KEY_UP": カメラコントロール('チルト', 'ストップ'); ブレーク; ケース "KEY_DOWN": カメラコントロール('チルト', '停止'); ブレーク; case 'KEY_VOLUMEUP': com('オーディオボリューム増加'); ブレーク; case 'KEY_VOLUMEDOWN': com('オーディオボリューム減少'); ブレーク; case 'KEY_SLEEP': com(standbyState? 'スタンバイ非アクティブ化' : 'スタンバイアクティブ化');壊す;デフォルト: ブレーク; } } }); } 初期化();