その27.TB-200UPレーザー化改造挫折? ←その26に戻る 最初のページに戻る その28に進む→ |
1.あんまり深く考えてなかったかも・・・
前回、FORCEのベアリング化で100%成功したとも言えないんだけど、上手にやればかなり良い感じになりそう、という感触なので次はMS探求者かCT-100でもベアリング化してみようかと思ってた。
そんなある日、サンワのサイトを見ていて今更なトラボの新製品TB-200UPとレーザーマウスが並んでいるのを見て思った、これニコイチにしたらレーザー式トラボが出来ないだろうか?
そして、ちょっと考えてみた。
えーと、マウスを逆さにしてその上でボールを上に向けて転がしたらカーソルも上に動くよな。
感度の関係とかで、上手く動かなかったら、どっちもそのまま使えば(ってもう十二分に使い切れない程トラボが山になっているんだけど、それは置いておいて)良いだろうと、あんまり深く考えずに買ってしまった。
もう、トラボとかマウスとか買うのに、何の抵抗も無くなっている俺。
2.レーザーマウス・MA-LS1(サンワサプライ)
TB-200UPの方は別ページでごく簡単に紹介してるので、ここではレーザーマウスの方をごくごく簡単に紹介してみる。
最初のレーザー式マウスはLogitechから去年の9月頃に発売されたけど、ハイエンドモデルなので、ちょっと手軽に買えるモノではなかった。
最近になって、サンワ・シグマ・アーベルから相次いでレーザーマウスが発売されたので、安いセンサとかが流通するようになったのか、と思ったらこれが本家アジレントのセンサではなくてACX-1001と書いてあり、多分PixArtのセンサ(サイトには載ってないんだけど、レーザーマウスの項目が作ってあるのであやしい)らしい。
ま、別にちゃんと動けば何処のセンサでも良いんだけど。
そして、普通の光学式マウスに比べると確かにかなりの範囲のモノの上で使える。
何故か、表面からの距離も幅が大きめ(机から8mmくらい浮かせても反応する)なんだけど、トラボにセンサを組み込む事を考えると、ボールとのクリアランスが適当でもOKという事なので、かえってありがたい。
モバイル用マウス、という事で小振りな外形。
余談だけど、モバイル用マウスって意味有るのかと、以前から疑問に思っている。
たかだかマウスが多少小さくなった程度の可搬性の向上より、何時も使っている使い慣れたマウスを持って歩いた方が良いと思うんだが。
もちろん小さいマウスが好き、という人を否定する訳では無いよ。今時のマウスにしては、大きな電子部品が目に付く基板。
マウスコントローラーは基板の裏側にあり、樹脂で封じられているので、型番とか不明。
結構小さいICみたいだ。
3.こんな夢を見た・・・
とりあえず、EM5の白ボール・TB-200UPの灰色ボールの上で、MA-LS1を動かしてみると、カーソルはかなり正確に動いているみたいだ。
これなら、上手く行きそうだな、という事でいかにしてレーザーセンサをTB-200UPの内部に配置するか、と考え始めた。
しかし、いくらTB-200UPが大きいとは行っても、かなりの大改造が必要になる。
なんとなく、頭の片隅で”もう少しキチンとチェックした方が良いんじゃないか?”という警告が聞こえた気がしたので、ちょっと考えてマウスのセンサの上にTB-200UPの基板を載せてボールの操作をシミュレートしてみる事にしてみた。
TB-200UPの基板は通電してなくて、ただのボールの台として使っている。
その下にMA-LS1を逆さにテープ付けして操作してみた。こんな程度でもポインタはぶれないんだけど、根本的な問題が発生。
4.大誤算
うん、上下は問題なく動くな。
あれ、左右が・・・
逆?
えええ、なんでカーソルが逆に動くんだ?
(よーく考えてみる)
あーーーーっ!!マウスを逆さにしてるから、板の裏側で操作してるのと同じ事なんだ・・・
って、そんなことちっと考えれば判るだろうに。 orz...
うわぁ・・・これ、どうしよう。
この計画も無かった事にするか(過去に構想だけで葬られた計画が多数アリ)。
でも、カーソルの動作は安定してるし、このまま捨てる(ホントに捨てる訳では無いよ)のももったいないような気がしてきた。
要はカーソルの動きを左右逆に出来れば良いのだろう。
・・・画面を鏡に映して操作するか。
5.カーソルを反転する方法
という事で、センサの入力から、Windowsの画面の表示までで、カーソルの動作を反転する方法を考えてみた。
<その1>
センサーの前にミラーを置いて、対象面を反転してみる。
普通の光学式センサよりレーザー式の方が、対象面まで遠くても反応するらしい、という現象から思いついたんだけど、一回反射にして直角に曲げるとすると、センサを対象面に対して横向きに配置する必要がアリ、経路を考えるとそこまで離れてもセンサが反応するもんだろうか?
センサの有効範囲?をざっくりと計測すると、マウスの底面から8mmくらいまでの面で、カーソルが挙動する。
光源の方に面を傾けると遠くまで届くかな、と最初思ったんだけど、ほとんど同じだった。ふと思い立って、光源を受光部が見ている(と思われる)方向に向けてみた(画像はイメージです)。
すると、机の上で10cmくらい浮かせてもカーソルが動く。
つまりレーザーが対象面に当たっているかどうかがが、結構重要だという事らしい。
まあ、当たり前の話だけど。
ピントの問題も有る(かも知れない)ので、ツルツルな素材(トラボのボールみたいなもの)を見た時に、どこまで距離が稼げるのかは不明だけど、光源を対象面の近くに配置すればかなりセンサを離して設置しても動作出来る可能性は有りそう。
正確にどんな素材で何処まで距離を伸ばせるのかは、軸とかをしっかりと出した実験をしないと面白くないので、準備をしてそのうちに実験してみる予定(は未定)。
もちろん、これはレーザー式だからというよりセンサのメーカーの設計思想の違いかも知れない。
<その2>
センサーからの出力がシリアル信号に変換される前なら、X1信号/X2信号を逆にすれば左右が逆に動くハズ。
問題は光学センサーからの出力が既にシリアル信号になってしまっている場合、どうにもならないという事。
最近のマウスだから可能性は低いかな、と思いつつセンサのデータシートを探すが、見つからない。
PixArtの別のマウス用センサ(ピン数は同じ)のデータシートを見たんだけど、それはマウスコントローラと一体になったチップらしく、全然参考にならない。
ちなみにマウスコントローラーが有ると思われる場所は、樹脂で固められていて、全くどんなデバイスが使われているのか判らない。しかしパターンを見る限り、センサとコントローラーが別になった構成と思われ、センサのピンも配線されているモノが多いので、もしかするとX1/X2/Y1/Y2の出力なのかも知れない。
センサは20ピンで、空きピンは3つか?
20ピンも有れば、X1/X2/Y/1Y2が出てても不思議は無さそうな希望的観測。
樹脂で封されたコントローラーにはスイッチ接点とか入ってUSBのシリアル信号が出ている様子。
センサの画像で左上の4ピンから直接コントローラに入ってるパターン辺りがあやしい気がするけど、結局は信号を見て確認するしか無いのか。
ピンの数とかパターンとかから判断すると、単純な配線の入れ替えで済む可能性も無くは無さそう。データシートが有れば話は早いんだけど・・・
とりあえず、今度知り合い(これまで何度か登場したヤツ)に信号を見てもらおう。
<追記>
という事で早速信号を見てもらったところ、あやしいとにらんだピンからXYのパルス信号が出ている事が判ったので、X軸方向を入れ替えてみた。
パターンを切る余地が無かったので、一旦ハンダを吸ってセンサを外して、足を曲げて配線で交差させた。
これで動かすと目論見どおり、カーソルの挙動が左右逆転した。
これで、目的は達成してしまったんだけど、イロイロと考えてたので続きを読んで下さい。
<追記ここまで>
<その3>
ここまでが、デバイス側でなんとかする方法で、ここからPC側でなんとかする方法。
ドライバを改造する。
ドライバを1から作るのは、とてもとても無理だけど、ソースが入手出来れば、目的の一ヶ所だけ変更するくらいはオレにでも出来るのでは、とか思ったりするんだけど、全部のポインティングデバイスが逆向きになってしまってもアレなので、とりあえず保留。
汎用ドライバを流用する。
これまでこのページを作るに当たって参考にしてきた「USBハード&ソフト開発の全て(CQ出版社)」という書籍の中に、汎用のUSBドライバというモノが入っている。その部分の記事を書いた柏野氏のサイトでも入手可能だけど、これでマウスからの信号を受けてカーソル移動に変換するアプリなら、それほど苦労しないで出来そうだ。
この書籍にはマウス信号を数値として表示するサンプルプログラムも付録のCD-ROMに入っているので、それをちょっと改造してカーソルだけ動くモノにしてみたら、それなりに左右逆に動くようになった。
これで、ボタンとかホイール部分も作って常駐させれば、なんとか使えそうだけど、全部がキレイに動くようにするには、それなりに知識と手間が要りそうだなあ。
あと、マウスのドライバから出るメッセージを横取りして変換して戻す、という手も有るんだろうけど、とても大変そうだし、上の別ドライバを使う方法よりスマートでは無さそうなので、検討しません。
そういえば、昔のジョークソフトでカーソルが逆に動くモノが有ったような気が・・・
6.とりあえず改造は保留
ざっと考えた所で、カーソルの挙動を反転する3つのやり方を思いついたんだけど、もっと簡単な方法が有るかも知れないので、なにかご存じの方は教えて下さい。
ということで、ざっと考えた3つの方法のうち、今回はセンサの出力を入れ替える事で、簡単にカーソルの挙動を反転する事が出来た。
とはいえ、センサからの出力によってはこの方法は使えないので、ソフト的に対応するのが一番汎用性が高いのだろうか。
あと、このセンサが対象面までの距離がどこまで取れるのかは、実験してみたいと思っているので、改造はその後、という事になりそうです。