かならずお読みください注意事項

不自由をもつ人のためのマウス作り 5

ゲームパッドでマウスを動かす

古いゲームパッド
丈夫で長持ち 古いゲームパッド

0 はじめに

不自由をもつ人のためのマウス作りも今回で5回目になります。これまでは主にAutoHotkeyを使ってマウスを操作するソフトウエアをどのように作るかの話をしてきました。今回はこれらのソフトウエアを操作する、言い換えれば人の意志をパソコンに伝える方法について話をします。

通常はキーボードやマウスを使ってパソコンを動かします。しかし不自由をもつためにそれがうまくいかない場合には別の方法を使います。最もよく使われるのがゲームパッドを使う方法です。このような話はこのサイトでも過去に何回か紹介しましています。またあちこちでよく行われている方法ですのでもうご存じの方もおられると思います。ですから今回はAutoHotkeyで作ったソフトを使う際の注意を中心にお話していきたいと思います。なおこの分野にあまり経験のない方は文末の関連するページ一覧を作りましたので、そちらもあわせてご覧になることをおすすめします。

1 準備 ゲームパッド

ゲームパッドはパソコン用ゲームソフトを楽しむための操作のためのコントローラです。(このページのトップ写真)通常パソコンのゲームソフトはキーボードで操作するように作られています。キーボードやマウスの代わりにこのようなコントローラを使うと操作しやすくなります。電器店、パソコンショップ、ゲームショップ、通販など様々なところで1000円程度から入手できます。また商品の性格上非常に丈夫でめったに壊れることはありません。これも現場ではありがたい特徴です。

2 準備 JoyToKey

ゲームパッドのボタンや十字キーの操作をキーボードやマウスの操作に置き換えるためのソフトを準備します。このソフトは主にパソコン用ゲームソフトを(キーボードではなく)ゲームパッドで遊ぶ目的で開発されました。しかしこれはキーボードやマウスが苦手だがゲームパッドならできる人がパソコンを操作する場合にも役に立ちます。この用途では、JoyToKeyやパッドdeマウスがよく知られています。またantimicroではWindowsのほかmacos、linuxにも対応しています。

関連するページの『ゲームパッドで作るパソコン入力装置』には、ゲームパッドに一般の外部スイッチで入力可能にする改造手順と、JoyToKeyの設定手順を説明しています。このような方法でパシフィックサプライのPPSやジェリービーンスイッチなども利用できるようになります。このページで説明している手順では、最後にF9キーをボタン1に設定していますが、今回はF9 キーの代わりに上矢印キーを設定して試運転をします。

3 試運転

前回ご紹介したサンプル、mouse6.ahk(実行ファイルはmouse6.exe)を使ってテストしてみました。ところが上矢印キーを使えば上右下左と動かせますが、JoyToKeyを上記のようにボタン1に上矢印キーを設定しゲームパッドのボタン1を押すと、動き始めはできるのですがうまく停止ができません。まるで動かないわけでもありませんがまだ未知の問題があるようで改善が必要な様です。

そこでエクセルで動くしゃべる文字盤を作ったときも、数多い(ものすごく多いです)エクセルのショートカットキーを避けてF9キーにしたことを思い出しました。またある人と別の相談をしているときにもキーの選択には気をつけるようにアドバイスをいただきました。ありがとうございます。ということで、上矢印(Up)ではなくF9で試してみたところ正常に動くようになりました。

失敗と回り道をしましたがノウハウと経験を積むことができました。これが足りないとすぐ手も足も出なくなります。大事です。

4 さらに工夫の方法

さて前回、疲労軽減にためにモニターの端にぶつかったらカーソルが方向転換して戻って来る工夫についてお話しました。みなさんにも考えていただけたでしょうか。実はやり方が何通りかあるようです。ちなみに私は次のように作ってみました。

mouse6bb.ahk

SysGet, VirtualScreenWidth, 0
SysGet, VirtualScreenHeight, 1
Speed:=20
Count:=0

F9::
Count++
If Count = 1
{
  X:=0
  Y:=-2
}
Else If Count = 2
{
  X:=2
  Y:=0
}
Else If Count = 3
{
  X:=0
  Y:=2
}
Else If Count = 4
{
  X:=-2
  Y:=0
  Count:=0
}
Sleep, 100
Loop
{
MouseMove, X, Y, Speed, R
if GetKeyState("F9", "P") = 1
Break
CoordMode,Mouse,Screen
MouseGetPos, xpos, ypos 
if ((xpos = 0) or (ypos = 0) or (xpos = VirtualScreenWidth - 1) or (ypos = VirtualScreenHeight - 1))
{
X:=X*-1
Y:=Y*-1
}
}
Return

説明
前回のサンプルに1-2行目、35-41行目を追加しました。
また、6行目33行目、操作に使用するキーをこれまでの上矢印(Up)をF9に変更しています。
1-2行目 ここで使用しているモニタの幅と高さを求めます。単位はドットです。幅はVirtualScreenWidth、高さは VirtualScreenHeight になります。
35,36行目で、マウスカーソルの座標を求めます。単位はドットです。原点はモニタの左上で右方向にX軸、下方向にY軸です。X座標値をxpos、Y座標値をyposになります。
(注意:複数のモニタを使用している場合は、第一(プライマリ)モニタの左上が原点になります。そのほかのモニタの配置により座標値の値の範囲が決まりますのでご注意ください)
37行目でモニタの端に来ているかを判定して、移動速度、XとYの値を変更しています。
これだけのことを9行追加で作ることができました。AutoHotkeyはなかなか侮れません。

実際に試してみたい方は、 常駐型実行ファイル、mouse6bb.exe をこちらから ダウンロードしてください。ダブルクリックで動作を開始します。終了するときはタスクトレイ(通知領域、画面右下の部分)のHのアイコンを右クリックしてEXITしてください。

5 まとめ

今回はゲームパッドを使ってAutoHotkeyで作ったマウスを動かす方法についてお話しました。この方法を発展させゲームパッドに改造を加えると、ジェリービーンスイッチなどの外部スイッチでもマウスが操作できるようになり、さらに重い不自由をもつ人の可能性を広げることができるようになります。

また使う人に合わせた工夫や改善がいろいろできることもおわかりいただいたと思います。

自分にはできないとおっしゃる方々、そう信じている人たちに取り組んでいただくにはいろいろと準備も仕込みも必要なのです。しかしやることをやれば必要以上にむやみにあきらめることはないのです。

関連するページ

参考URL

AutoHotkey 関係


2020/01/10 公開

研究企画課リハ工学科にもどる ←もくじはこちらです