2015年6月18日木曜日

ゲームパッドでDTM

使っていないゲームパッドがあったので
ショートカットキー装置にしたいと思います。
 
 
前置き
私は PC で作業する際に
マウスとペンタブレットを併用します。
 
 
 
 
 
 
 
 
 
 
 
 
 
端にあるファンクションキーには
好きなショートカットキーを登録できて便利です。
 
例えば「Ctrl+S」の上書き保存などはもちろん、
ショートカットキーが存在しないメニューなども
「Alt → V → N」のように登録しておけば
ペンタブのファンクションキーを押すだけで実行できます。
 
ところが、私のペンタブはファンクションキーが
4つしかないので少し不便でした。
 
もちろん、どんなソフトにも大抵オリジナルの
ショートカットキーを登録することができる機能が備わっており、
Cubase や Domino についても必要だと思ったものは順次追加してはいます。
 
ただ、最近煩雑になってきており、どうにかしたいと考えていた時に
使っていないゲームパッドがあることを思い出しました。
 
ということで、ゲームパッドをショートカットキー装置にします。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
JoyToKeyを使う
一番手っ取り早いのは「JoyToKey」を使うことです。
 
これは、ゲームパッドやジョイスティックの入力を
キーボードやマウスの入力に変換してくれるソフトです。
Version 4.0 からシェアウエアソフトになったようです。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
例えば上の画像のように、Button1 に「Ctrl」と「S」を登録しておけば、
ゲームパッドのボタン1を押すだけで上書き保存ができるようになります。
 
このソフトは本当に良くできていて、やりたいと思ったことは
ほとんどできるようにパラメーターが用意されています。

 
自作する
「JoyToKey」はシェアウエアソフトになりましたし、
私もライセンスについてはきっちりしたいので
これの使用を止めて、自作したソフトを使っています。
 
私のプログラミングのレベルが低く、ちょっと人に見せられる
ソースではないので考え方だけを書いていきます。
 
環境は、VisualC++ と DXライブラリです。
 
まずは、"SetAlwaysRunFlag" で「JoyToKey」のように
非アクティブでもソフトが動作するように制御します。
 
ゲームパッドの入力状態は、
"GetJoypadInputState" で取得します。
 
この時注意するのはゲームパッドのボタンは
PC の一部のキーと紐付いている点です。
 
PC の矢印キーやZキーなどはゲームパッドのボタンと
同じ役割があるので、"GetJoypadInputState" で
取得した変数にそのまま条件文を組み込むと
キーボードの入力にも反応してしまいます。
 
Zキーなどの入力は "GetHitKeyStateAll" で取得して、
キーボード入力を受け付けないように条件指定します。
 
次に、Win32API の "keybd_event" でキーを押す、
離すをシミュレートします。
 
ここでは、離すところまでをシミュレートしないと、
例えば Altキーの場合、ソフトを終了しても Altキーが
押しっぱなしの状態になってしまいます。
 
最後に、ゲームパッドのボタンを押しっぱなしの状態が
連続入力にならず 1回入力とカウントされるように制御すれば、
簡易的ではありますが、ソフトの完成です。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

Related Posts Plugin for WordPress, Blogger...