list-menuフィードバックがある場合

この例では、サードパーティ製の USB 入力デバイス(この場合はリモコン)のキーを使って Cisco デバイスの特定の機能を制御する方法をお見せします。

Bluetooth リモコン(USB ドングルで接続)のボタンを使って、スタンバイ、音量調整、Cisco カメラデバイスの操作などの操作方法をお見せします。 関連するイベントを聞き取り、Cisco デバイスの API を通じて対応するアクションを実行するマクロを開発できます。

次の例では、通常のフォントで書かれたテキストを入力しなければなりません。 斜体のテキストは Cisco デバイスから受け取った応答です。

1

SSH で Cisco デバイスにログインしてください。 ローカル admin user が必要です。

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 つのイベントを生成します: Pressed および Released。 ボタンを押し続けると、ボタンを離すまで Pressed イベントが表示されます。 その後 Released イベントが生成されます。

これらのイベントは、エンターキーを押して離すと発生します。

  *e ユーザインターフェース 入力デバイスキー アクションキー:KEY_ENTER *e ユーザインターフェース 入力デバイスキーアクションコード:28 *e ユーザインターフェース 入力デバイスキーアクションタイプ:押注済み ** 終了 *e ユーザインターフェース 入力デバイスキーアクションキーキーキー:KEY_ENTER *e ユーザインターフェース 入力デバイスキーアクションコード:28 *e ユーザインターフェース入力デバイスキーアクションタイプ:リリース済み ** 終了  
5

関連する InputDevice events をリスニングするマクロを書き、デバイスの API を使って関連するアクションを実行します。

  • スタンバイ、音量アップ、ボリュームダウンボタンを起動します。 マクロが KEY_VOLUMEUP、KEY_VOLUMEDOWN、または KEY_SLEEP を含むイベントを感知すると、関連するコマンドを実行します。

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

 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.状態 ===「オフ」?false: true;});xapi.status.on('Standby', state => { standbyState = state.状態 ===「オフ」?false: true;});xapi.event.on('UserInterface InputDevice Key Action', => { if (press.タイプ == "Pressed") { switch (押す。キー) { ケース「KEY_LEFT」: cameraControl('Pan', 'Left'); break; ケース "KEY_RIGHT": cameraControl('Pan', 'Right'); break;ケース「KEY_UP」: cameraControl('Tilt', 'Up'); break;ケース「KEY_DOWN」: cameraControl('Tilt', 'Down'); break;デフォルト: break; } }そうでなければ(押す)タイプ == "解放") { スイッチ(押す。キー) { ケース "KEY_LEFT": cameraControl('Pan', 'Stop'); break; ケース "KEY_RIGHT": cameraControl('Pan', 'Stop'); break; ケース "KEY_UP": cameraControl('傾き', 'Stop'); break; ケース "KEY_DOWN": cameraControl('傾き', 'Stop'); break; ケース 'KEY_VOLUMEUP': com('Audio Volume Increase'); break; case 'KEY_VOLUMEDOWN': com('Audio Volume Decrease'); break; ケース 'KEY_SLEEP': com(standbyState? 「スタンバイ・デアクティベート」:スタンバイ・アクティベート);休憩;デフォルト:休止;} } });} init(); 
この投稿記事は役に立ちましたか?
この投稿記事は役に立ちましたか?