使っていないゲームパッドがあったので
ショートカットキー装置にしたいと思います。
前置き
私は 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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。