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