[FAQ] ThinkPad Trackpoint Keyboard


トラックポイントキーボードのよくある質問です。

#ドライバー
Lenovo Service Bridgeを利用するのは個人的に気が進まないので、手動でドライバーをインストールします。
- ThinkPad Compact Bluetooth Keyboard II with Trackpoint .......［[英語](https://support.lenovo.com/us/en/accessories/trackpoint_keyboard)]
- ThinkPad Compact Bluetooth Keyboard with TrackPoint ...........［[英語](https://support.lenovo.com/us/en/solutions/pd026744)］/［[日本語](https://support.lenovo.com/jp/ja/solutions/pd026744)］
- ThinkPad Compact USB Keyboard with Trackpoint........................［[英語](https://support.lenovo.com/us/en/solutions/pd026745)］/［[日本語](https://support.lenovo.com/jp/ja/solutions/pd026745)］
- ThinkPad USB Keyboard With TrackPoint .........................................［[英語](https://support.lenovo.com/us/en/solutions/migr-73183)］

#ファンクションキーを有効にする
デフォルト設定ではファンクションロックが無効になっており、ファンクションキーにマルチメディアキーが割り当てられています。
ファンクションキーは`Fn`キーを同時押しする必要があるのは面倒なので、デフォルトの設定をファンクションロックを有効に変更します。

レジストリエディタで、HKEY_CURRENT_USER\Software\LENOVO\fnlock の state の値を書き換えます
・変更前：0
・変更後：1

手動で変更する場合は `Ctrl`+`r` で「ファイル名を指定して実行」を起動して `regedit` と入力すればレジストリエディタを起動できます。
以下の内容のファイルを作成して、実行しても同様の設定が行えます。

```powershell:FnLock.reg
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\LENOVO\fnlock]
"state"=dword:00000001

```

#スクロール機能が無効になる場合の対処
センターボタンによるスクロールができなくなる事があります。
たとえば「ThinkPad優先スクローリング」を有効にしてSourceTreeがアクティブな状態でスクロールしようとすると100%再現します。

##苦肉の策１：HScrollFun.exeを再起動する
根本原因は不明ですが、HScrollFun.exe のプロセスが落ちているので、起動すればスクロールできるように回復します。
`C:\Program Files (x86)\Lenovo\ThinkPad Compact Keyboard with TrackPoint driver\HScrollFun.exe`

私は[Ctrl]+[Backspace]を押すと、HScrollFun.exeを再起動するように設定しています。
HScrollFun.exeのプロセスを生存チェックしてもよいのですが、1秒毎にチェックして自動再起動したら操作感としては微妙だったので手動で再起動することにしました。

##苦肉の策２：ThinkPad優先スクローリングを使用しない
「マウスのプロパティ」を開き「外付けキーボード」タブの「Thinkpad優先スクローリング」のチェックを外す。
ただし、この方法の場合センターボタンでオートスクロール機能が動作してしまいます。
<details>
<summary>詳細</summary>
１．[Win]+[r]で「ファイル名を指定して実行」を開く。
<br/>
２．「マウスのプロパティ」を起動する。
　　　・「ファイル名を指定して実行」から`main.cpl`と入力して「マウスのプロパティ」を起動する。
　　　または
　　　・「ファイル名を指定して実行」から`control`と入力して「コントロールパネル」を開き「マウス」で「マウスのプロパティ」を起動する。
<br/>
３．「外付けキーボード」タブを選択し、「ThinkPad優先スクローリング」のチェックを外す。
</details>
オートスクロールを発動させずに中ボタンクリックだけを有効にするように設定を調整中ですが、オートスクロールは無効にできるものの中ボタンが意図しないタイミングで押下判定されたり調整に手こずっています。
![rapture_20201014071035.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/39680/73716169-6206-ee0f-997a-3b1dc19cb8f7.png)
#キーバインドを変更する
##AutoHotKey
汎用性は高いが`CapsLock`や`カナ`のようなロック系のキーや`Win`キーをAutoHotKeyで扱うとトラブルが発生しやすいので、レジストリを変更してロック系のキーにはファンクションキーの`F13`～`F24`を割り当てる。

##ChangeKey
レジストリエディタ（regedit）で編集する場合
・スキャンコードをリトルエンディアンで設定する
・設定変更するキーの数を設定する
など、事前準備しにくくてミスりそうな作業なので ChangeKey を使う。

ChangeKey を使う場合でもファンクションキーの`F13`～`F24`を指定する場合は、スキャンコードを手入力する必要があります。

以下のようにレジストリを変更した。

|変更前|変更後|ScanCode|デフォルトで割当られているショートカット|
|---|---|---|---|
|CapsLock|F13|0x0064||
|LWin|F14|0x0065||
|かな|F15|0x0066||
||F16|0x0067|[Win]+[F16]でスライドシャットダウン起動|
||F17|0x0068|[Win]+[F17]でモニター切り替え|
||F18|0x0069|[Win]+[F18]で「Sticky Notes」（付箋）起動|
||F19|0x006A|[Win]+[F19]で「切り取り&スケッチ」起動|
||F20|0x006B|[Win]+[F20]で「切り取り領域とスケッチ」起動。[Shift]+[Win]+[s]と同様|
||F21|0x006C|[Win]+[F21]で「Windowsの設定」起動。[Win]+[i]と同様|
||F22|0x006D|[Win]+[F22]で外部モニター表示切り替え。[Win]+[p]と同様|
|無変換|F23|0x006E||
|変換|F24|0x0076||

- 参考
    - [Windows日本語環境におけるJIS配列とUS配列のスキャンコードを全て列挙してみた](https://qiita.com/crotczet/items/4e65684dbf12942e27f2)