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

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

マウスを動かすに必要なスイッチはいくつか?

らくらくマウス2
代替マウスのロングセラー
当院で長年貢献し改造だらけの らくらくマウス2

0 はじめに

不自由があるために通常のマウスがうまく使えない人たちがいます。このような人たちのために『代替マウス』と呼ばれるものが存在します。(文末の参考URLを参照ください)『代替マウス』とひと言で言っても実にたくさんの種類があります。その理由は簡単です。『不自由』とひと言で言ってもひとりひとりでそれぞれ異なります。そのため『代替マウス』もそれぞれの人の不自由とそして使用目的に合わせてそれぞれ異なるものが必要になるからです。

といったわけで、代替マウスの中で一番いいのはどれか?とか、これとあれとどちらが優れているか?などと考えるのはそれほど意味がありません。そのかわりお使いになる人の今の状態とこれからの目的を考えてどの代替マウスがふさわしいかを考えるほうが大切になります。そのためには身体や気持ちの状況とこれから取り組もうとしていることがら、つまりその人の不自由と好みと目的を周囲もご本人もしっかり理解することが大切になります。また取り組みをすすめるうちに、これら不自由や好みがはじめと変わってくることもあります。このようなことを考慮して道具選びをするのがよいでしょう。

しかしたくさんある様に見える代替マウスでもすべての不自由をカバーするには足りません。既製品の限界はこのようなところに現れます。これとあれの中間がほしいとか、この特徴をもう少し伸ばしてあとの特徴はいらないといった意見はいくらか経験を積んで理解が深まり、目が肥えてくると自然に聞かれるようになります。これはこれで好ましいことですがいつもご希望に添えるとは限りません。

もし運動がいくらかある場合はそれなりに選択の幅があります。しかし動きが少なく使用できるスイッチの数が少ない場合は利用できる道具も手段もずいぶん選択の幅が小さくなります。こうなるとやりたいこともあきらめざるをえないこともあります。

ここで考えてみてください。たとえばマウスカーソルを自由に動かすためにはスイッチはいくつ必要でしょう?

最低でも上下左右の4つ必要とお考えの方が多いと思います。普通はこれが正解でしょう。しかし今回はこれを超える方法について考えることにします。

1 ヒントはおもちゃ

こちらに以前制作したエンチャント文字盤のサンプル があります。画面をクリック(タップ)するごとに下の絵のようなクマが左右に動きます。正確には、右行き、停止、左行き、停止を繰り返します。このような手順を使えば、ひとつのスイッチで左右に移動させることができます。

くまのサンプル

これを参考にして

mouse5.ahk

Speed:=20
Count:=0

Up::
Count++
X:=0
If Count = 1
{
  Y:=-2
}
Else If Count = 2
{
  Y:=2
  Count:=0
}
Sleep, 100
Loop
{
MouseMove, X, Y, Speed, R
if GetKeyState("Up", "P") = 1
Break
}
Return

Down::MouseMove, 0, 2, Speed, R
Left::MouseMove, -2, 0, 50, R
Right::MouseMove, 2, 0, 50, R

このサンプルは、上矢印キーを押すたびにマウスカーソルが上方向、停止、下方向、停止を繰り返します。

説明
2行目 変数Countを0にします。
4行目 上矢印キーを押すと開始します
5行目 変数Countは1増えます
7-15行 Count=1の場合は下方向の速度Yを-2にし
Count=2の場合はカーソルはYを2にしまたCount=0にします。
17-22行 ループを繰り返します
19行目 XとYの値に従ってカーソルを動かします。Yが負なら上へ正なら下へ
20行目 上矢印を押すとループから抜けてカーソルは停止します

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

このようにすれば、ひとつのスイッチで上下にうごかし止めることもできるようになります。同じことを左右についてやれば、合わせてふたつのスイッチで上下左右に動かすことができます。

2 ワンスイッチで上下左右に発展

このアイデアをさらに発展させることにしましょう。スイッチを操作するごとに、上、停止、右、停止、下、停止、左、停止を繰り返すように作り直して見ましょう。

mouse6.ahk

Speed:=20
Count:=0

Up::
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("Up", "P") = 1
Break
}
Return

これは上のサンプルを発展させ、Countの値が1234の4種類とるようにしています。そしてそれぞれに、上右下左の動作を割り当てています。(もし必要でした順番を上下左右に変更することもできます。どこを変更すればできるかはもうおわかりのことと思います。)これでマウスカーソルはスイッチひとつで自由に動かせるようになりました。さらに 『できクリック。』 を使用すると、クリック、ダブルクリックなどもできるようになります。

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

3 さらに工夫

少ないスイッチでマウスを操作するため上のような『手順』(アルゴリズムともいいます)を利用しました。『手順』をつかうといくらか『手数』が増えます。つまり少ないスイッチを押す回数が多くなります。ここで気になるのが疲労です。

そこで疲労を減らすため手数を減らして休憩時間を増やす方法について考えてみましょう。たとえばマウスカーソルがモニターの端で方向転換するようにすれば、操作せず戻って来るのを待つことができます。もし疲労が少なく急いでいるなら操作で方向転換する選択もできます。

参考URLに紹介したAutoHotkey WikiはAutoHotkeyの取扱説明書です。かなりよくつくられています。これを開いてコマンド(命令)をしらべてみると、

コマンド SysGet を使えばモニターの解像度がわかります。またコマンド MouseGetPos を使えばマウスカーソルの位置座標値もわかります。これらの値をつかってマウスがモニターの端に来たときに方向を変えてやれば、モニタの端にぶつかってもどって来ます。さてどうやったらいいのでしょうか?みなさんも考えてみてください。

これでもう頭を越えて飛んでいったフライを追いかけてボールを拾いに行かなくてよくなります。

このほかにも疲労軽減のアイデアがあると思います。このようなやり方でそのアイデアを形にして実際に試すことができるでしょう。

4 まとめ

今回は少ないスイッチでマウスを操作する試みを紹介しました。具体的には操作のためのアルゴリズムをつくりこれをAutoHotkeyでプログラムに組んで動かして見ました。こんなふうにすれば、可能性のあるひとに『あきらめなくていいよ』と言ってあげられます。

AutoHotkeyを使用すると比較的簡単にこのようなツールを製作することがでできます。また配布用の常駐型実行ファイルも作れるのでなかなか便利です。マウスにかぎらずWindowsパソコン操作を支援する際に非常に力を発揮します。

AutoHotkeyはもともとWindowsパソコン操作をひとつのキー操作で実行し、パソコン操作を効率化するためのツールとして作られました。パソコン操作における不便は、不自由のありなしで程度こそ異なりますが本質的にはほとんど同じです。ですから不自由をもつ人のパソコン操作支援の目的にも有効性を発揮できるのです。

今回はマウスを作ってみましたがマウス以外にも、支援の場面で要望をアイデアに、アイデアを形に、新しい手段や方法を創造するツールとして大いに役に立つと考えます。

追記、スクリプト言語ですので、小学生などを対象にしたごく初歩的なプログラミング教育にも利用できるでしょう。

参考URL

代替マウス特殊スイッチなど紹介

AutoHotkey 関係


2019/12/20 公開

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