2012/1/1 日曜日

【お年玉企画?】Canopus JD-1用ドライバを自作してみた

新年一発目はコレ!

Canopus製のJog/Shuttleコントローラ『JD-1』。

JD-1 製品情報 – GRASSVALLEY
http://pro.grassvalley.jp/catalog/jogdisk/jd1_index.htm

動画編集でコマ単位の編集を行う際に便利なジョグダイヤルですが、こいつのドライバは対応しているソフト以外で動作せず、もうメーカーのサポート終了しているために、対応ソフトが増える望みも無い…

なら、自分でドライバを作ってしまおう!

というわけで、VB.netを使って作ってみました。

そして、同様に困っている同士の参考になればと思い、ソース等を公開します!お年玉だと思って活用して頂ければと思います!

JD-1の動作確認

まず、初めにJD-1がどのように動作するかを確認してみました。

Canopusの公式ドライバをインストールしていない状態で接続すると…

『HID準拠コンシューマー制御デバイス』として認識した。

さすがに、ハードウェアレベルからドライバ作成するとなると大変だなぁ~と思ってましたが、HIDで認識してくれているので、ここから送られてくるデータを解析して利用することにしました。

正確には『ドライバ』と呼んでいいのか微妙ですが、まぁ、細かいことは(゚ε゚)キニシナイ!!

HIDドライバから受けた信号を作成するドライバで読み込んで、その信号に応じたキーコードを仮想キーボードから送信する。送信するキーコードを使用するソフトウェアのショートカットキーに割り当てることで動作させる。

これなら、どのソフトウェアでも対応できる!

HIDからのデータを読み出す方法はこちらのサイトのコードを使わせていただきました。

ぬるり。: Raw Input(直訳:生入力)
http://hongliang.seesaa.net/article/18076786.html

上記サイトのコードでは『マウス』のデータを読み出すことを目的にしているので、これを『コンシューマ制御デバイス』のデータを読み出すようにしました。

HIDデバイスには目的に応じて[Page]と[Usage]が指定されており、『マウス』の場合は[Page : 1][Usage : 2]となっている。

USB.org – HID Tools
http://www.usb.org/developers/hidpage/

各デバイスに割り当てられているPageとUsageについてはUSB-IFが公開している一覧表『HID Usage Tables』で調べることができる。

今回用いる『コンシューマ制御デバイス』の場合は[Page : 13][Usage : 1]となっているので、ここを書き換えている。

上記コードから得られるHIDの生データを解析すると、ジョグダイヤルは1クリックするごとに1信号、ボタンは押した瞬間離した瞬間にそれぞれ1信号が送信されることが分かった。押した瞬間と離した瞬間を読み取ることで、押しっぱなしを検出できますが、今回は押した瞬間のみ用いました。

作成したドライバ

ドライバの作成はVisualBasic 2010を使用。

以前から、何度か書いているように、自分はプログラミングは大の苦手で正直「動けば何でもいい」と言う考えなので、基本的には上で紹介したソースコードに手を加えた程度となっています。VBも今回初挑戦!

で、実際に作成したドライバは…

[JogShuttleController.exe]と[settings.xml]の2ファイル構成。

JogShuttleController.exeを起動するとタスクバーの通知領域に常駐し、HID信号を監視します。

アイコンはWindows 7の通知領域と似たデザインになるようにしましたが、自分のセンスではこれが限界(^^;)

とりあえずアイコンが表示されれば起動完了。

JD-1からのデータを元にキーコードが送信されるようになる。

キーコード等の設定ですが、通知領域のアイコンを右クリックすると…

設定画面の項目が表示される。

設定画面はこんな感じ。設定内容はexeファイルと一緒に入っている[settings.xml]に保存されているんですが、自分にはxmlファイルを出力する方法が分からなかったので、細かい設定はxmlファイルを書き換えることで行うことになる。(気が向いたら実装するかも…)

この画面で設定できるので[動作モード][感度]およびそれらを切り替えるためのボタン設定。

まず[動作モード]ですが、複数のモードを登録することでアプリケーションごとに異なる動作をさせることができる。とりあえず、自分がよく使うソフトを5つほど登録してみました。

動作モードを増やすには[settings.xml]に追記を行うことで可能となっているが、その方法はxmlファイル内に書いてありますので、そちらを参照あれ。

もうひとつ、設定できるのが、[感度]。

[感度]はジョグダイヤルを1クリックさせると何回キーコードを送信するかを設定できる。動画編集でコマ単位の編集を行う際には不要な機能だが、Webブラウザでページをスクロールする際にはジョグダイヤルを回す回数が少なくて済むので手が疲れなくて便利だったりする。

[動作モード]と[感度]の切り替えは変更ボタンを登録しておくことで、設定画面を出さずに行うことも可能。

設定したボタンを押すとこんな感じでバルーンが表示されて変更された内容を知ることができる。

ダウンロード

とまぁ、作成したドライバですが、JD-1が肥やしになってしまっている方もいるかと思いますので公開しておきます。一応、Windows 7 64bit版とWindows XPにて動作することは確認してあります。

Canopus-JD1-JogShuttle-Controller.zip

なお、参考にさせてもらったソースコードを公開しているサイトさんが「改変、再頒布可」としていますので、VBプロジェクトも公開しておきます。使いやすいように改変したり、他のHID機器用のドライバ作成の参考になればと思います。

JogShuttle_Controller_VBProject.zip

お約束

お約束なので書いておきますが、使用して何らかの損害を被っても私は知りません(`・ω・´)キリッ 自己責任でお使いくださいな。ただ、おかしな挙動を示した場合には報告をいただければ今後の改善に役立つかと思いますので、この記事のコメントにでもお願いします。

あと、完全に趣味で作っているものなのでCanopus(現グラスバレー)さんへ問い合わせるとかはおやめ下さいな。

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

HTML convert time: 0.527 sec. Powered by WordPress