ジョイスティックをプログラムから扱いたいと思い .NET Framework 内のクラスライブラリを検索してみたのですが、どこにも用意されていないんですね。Web で検索しても出てくる情報は DirectX を使用した方法がほとんどです。てっきり KeyDown や MouseDown と同じような感覚でジョイスティックの入力を簡単に扱えるものだと思っていました。
DirectX は使いたくないので、こうなったら API に頼るしかありません。そこでジョイスティック関連の API が用意されていないか探しました。見つかりました。なんだか API がだんだんと好きになってきましたよ。
どのような API が用意されていたかというと joyGetPos 関数です。ジョイスティックの入力状態を取得することができます。joyGetPos 関数のリンク先のツリーを見れば他にも joy~ 関数がいろいろと見つかります。また海外でジョイスティック関連の API をクラスにまとめて公開しているサイトを見つけました The Tao Framework 。このサイトではソースも公開されていて、そのソースには XML コメントがものすごく丁寧に記載されています。そしてソースのドキュメントも公開されていました Winmm.joyGetPos Method 。
API が用意されていたお陰で、なんとかジョイスティックを扱う事が出来ました。しかし、ここで一つ疑問が残ります。なぜ .NET Framework ではジョイスティックをサポートしていないのでしょうか? ジョイスティックはゲーム用の入力デバイスだからでしょうか。確かにゲーム用のコントローラとして使われるのがほとんどだと思います。しかし、ゲーム以外にも使い道があると思います。たとえば、ジョイスティックをマウスのように使うのもいいですし、Wii のコントローラ(リモコンみたいなの)のようなものもジョイスティックで作れるのではないでしょうか。こういった可能性を潰してしまう(作っても容易には扱えない)ような状態になっているのが、さびしいというか残念です。