parkの雑記帳
2009-12-26 [Sat]
・ [ハードウェア] 新型トラックポイントキーボード届いた
Twitterでとある人にそそのかされてLenovoのUSBトラックポイントキーボード (ThinkPad USB Keyboard with TrackPoint) を買ってしまいました。 これまでもその前身であるところnトラベルキーボードを愛用していたのですが、 最近マウス操作の中ボタンが壊れたりキーの印字が消えたりとかなりボロボロになっていたので ついポチってしまったわけです。
以下感想などをすこし。
ハードウェア面
キータッチは良い感じです。前身のトラベルキーボードは値段に対してかなり安っぽい感じでしたが 今度のはしっかりした感じがします。ただ、キーの形状が変わったため、人によっては 誤って隣のキーを押してしまうことが増えるかもしれません。
キー配列はT400sと同じです。Escと間違えてF1をおしてしまう事故がなくなったのはすばらしいです。 ただ、その関係でF1-F12キーの位置が変わっているので押し間違いがあるかも。
特殊キーはThinkPad専用っぽいのは使えませんでした。 使えるのは音量キー・スタンバイ・ブラウザ戻る進む・メディアプレーヤー操作でした。あと、ブラウザ戻る進むがAlt-左、Alt-右を送出する困った仕様はトラベルキーボードと同じでした。
ソフトウェア面
いつものSynapticsのやつじゃありません。 分解してみた人のレポートによると、 ThinkPadのキーボードユニットをLITEONのチップで変換しているとのことです。 トラベルキーボードではトラックポイントとキー部分とで別々に接続された基板が使われていたので、 内部的には全くちがうものになっているのでしょう。 それで、PCにインストールするプログラムもLITEONの作ったものっぽかったです。
使ってみた感じ、非常に残念。一部のプログラムにはスクロール開始時にCtrl-Kを送ったり、 Tweenをはじめとした.NET Frameworkのプログラムでスクロールできなかったり、なんかもう別物。 トラベルキーボードに戻そうかと本気で考えるぐらいのできでした。
まとめ
トラックポイントの使えるキーボードが今までよりはるかに安く入手できるというのは 非常に喜ばしいことなんですが、ソフトウェアが残念でなりません。 でもまあ、キータッチとかは良いので、6,000円ぐらいだしポチってしまっても 大損はしないんじゃないかなと思います。
・ [ハードウェア][ソフトウェア] 新型トラックポイントキーボードのスクロール改善
前のエントリでも書いた、Tweenをはじめとした.NET Frameworkのプログラムでスクロールできない問題。 これをアドホックな解決策でスクロールできるようにする方法を見つけてプログラム書きました。
FixSkmz.zip ※無保証、自己責任でお願いします。
原理とか
Spy++ (Visual Studio に付いてくる、ウィンドウメッセージとかを監視したりするツール) で ウィンドウメッセージを見てみると、WM_VSCROLL, WM_HSCROLL をPostしているようでした。 しかしながら、スクロールがされません。 試しに任意のウィンドウにPostMessage()するプログラムを作ってWM_VSCROLLをPostすると なんとスクロールされます。 この違いが何であるかをよく見てみると、トラックポイントの操作ではlParamが非NULLなのに対して 自分のPostMessage()ではNULLでした。 だったら、メッセージを細工してlParamをNULLにしてしまえば良い、という発想です。
実際にやるとなると、SetWindowHookEx()でWH_GETMESSAGEフックを仕込むことになりました。 ここでWM_VSCROLL, WM_HSCROLLが来た場合lParamをNULLにしてしまいます。 でもなんか怖いので.NET Frameworkのプログラムだけを対象にすることにしました。 どうやって判断するかは手抜きで、mscoree.dllをロードしているか否かを判断基準にしました。
実際に作ってみて動かす段階になっていざ試してみると完全に期待通りの動作。 なんかもう拍子抜けでした。
話は変わりますが、トラックポイントのスクロール、ちょっと感度が高すぎる気がします。縦方向だけにスクロールとか横方向だけにスクロールとかがやりづらい。まあそのうち改善されるといいんですが...
