ThinkPADのトラックポイントセンタースクロールをRDPで使う

というわけで、最初はmixiからの技術系ねた移植で。

使っている方はご存知のとおり、リモートデスクトップなどではThinkPADトラックポイントによるセンタースクロールができません。
※スクロールしようとすると、ホストのリモートデスクトップWindowsがスクロールするので、中に表示されたものはスクロールしない。

というわけで使えるようにしたメモ。(ホストOSはWindowsなのでその辺よろしく)


ThinkPADトラックポイントドライバー(http://www-06.ibm.com/jp/domino05/pc/download/download.nsf/jtechinfo/SYD0-01C3C61
をインストールすると、以下のファイルが生成されます

%SystemRoot%\system32\tp4table.dat

※このほかにも同様の場所にtp4*というファイルがずらずらと作られるのは、一連のファイル。

このtp4table.datファイルには、トラックポイントの動作レシピみたいなものが書いてあります。
まあ要するに、どのアプリケーションでどのような動作をするかを決めているわけです。
トラックポイント機能は標準のマウスデバイスとしては認識せず、該当するドライバで機能を実現していることが伺えます。
※サービスの実態である「tp4serv.exe」を終了すると、該当する機能は使えなくなります。

つまりこいつを書きかえれば、機能のオンオフを自分で設定できるわけです。


そこでこのファイルをテキストエディタvimなどで開くと行頭にこんな記述があります。

; Record Format
; OsName,OsVersion,AppName,TopClass,ParentClass,WindowClass,ScrollingType,
; Pass,Exit

行頭の「;」はコメントアウトです。
ここで重要なのは「AppName」と「ScrollingType」と「Pass」と「Exit」の要素です。

AppNameは、その名のとおりアプリケーション名です。実行ファイルを指定します。

ScrollingTypeは、スクロールの方法について記述します。Standard WheelVkey WheelStd TwoParents VkKeys Noneの6種類が選択できます。試してみたところ、各種動作はこんな感じ。
※間違ってたらごめん

Standard
不明 特に目立った動作はなかった
WheelVkey
縦、横にスクロール
WheelStd
縦にスクロール
TwoParents
不明 特に目立った動作はなかった
VkKeys
スクロールの縦移動横移動を、キーボード入力の「↑↓」「←→」として入力テキスト選択とかに便利
None
スクロール機能オフ

というわけで、リモートデスクトップ内でも横スクロールが使えるようにする「WheelvKey」を指定しておくのが無難。

Passは、その機能がどのように動作するか。

; Pass : 0 Use 0 to over-ride built-in program logic
; : 1 Use 1 when everything else has failed

Exitは、どのようなデバイスとしての機能を提供するかを設定する。設定する内容は以下のとおり。

; Flags : 0 Don't exit function after match has succeed
; : 1 Exit function after match has succeeded
; : 2 Special check for FindHorzProc (SB_HORZ) that
; requires that the CLIPCHILDREN flag not be set in
; a horiz scroll bar window
; : One or both of these flags should be specified
; : 4 Rule applies to 2 button Trackpoint system
; : 8 Rule applies to 3 button Trackpoint system

表示は10進だけど、処理を記述するときは2進で考えるところに注意。
つまり、3ボタントラックポイントとして指定して、それにマッチしたら処理を終えるような記述をするには9(1001)を指定する。


というわけで、以上を踏まえて以下のように設定すると、リモートデスクトップ先でスクロールが可能になる。

; Remote Desktop
*,*,mstsc.exe,*,*,*,WheelVkey,0,9