Windows上でのThinkPadキーボードのトラックポイントの速度を限界突破する

# 問題
ThinkPadキーボードのトラックポイント(通称：赤乳首)は素晴らしいです．
しかし，Windowsで利用しようとするとカーソルの移動速度があまりにも遅すぎます．Linuxを利用する際にはマウスの速度を上げればトラックポイントにもその変更が反映されるのですが，Windowsの場合はマウスの速度をいじっても反映されません．僕はマウス速度は早ければ早いほどいいという派閥なので，これは大きなストレスです．

以下の記事のようにレジストリをいじってマウスの速度を限界にする方法がありますが，それでもあまり改善が見られません．(トラックポイントにティッシュを詰めて浮かせるなどの荒業も説かれています…)
- [Thinkpadのポインタ移動速度を高速化する方法！これだけで疲れが大幅軽減！](https://retu27.com/thinkpad_speedup.html)


# 解決策

"**Barrier**"という，1セットのキーボード/マウスで複数のPC間で共有できるソフトを利用します[^1]．これは，一台のサーバPCに接続されたキーボード/マウスをクライアントPCが利用できるというソフトです．(イメージ図参照: [出典](https://yama-windows10.com/synergy_alternative_app_barrier/))
今回はこの図と異なっており，**LinuxをサーバとしてWindowsをクライアントとします**．
そうすることで**Linux上で動くトラックポイントの速度をWindows上で利用する**というからくりです．

<img width="600" alt="system.png" src="https://yama-windows10.com/wp-content/uploads/2020/11/barrier_server_client_image_v2.jpg">



https://github.com/debauchee/barrier

# 設定方法

## 環境
今回は以下のOSで試しました．

- Ubuntu 18.04 (Server)
- Windows (Client)

BarrierはWindows/Mac/Linuxに対応しているので，Macをサーバにしてもいいと思います．ただ，このシステムだとキーボードを動かすためには常にサーバPCを起動しているという前提があります．常に起動しているサーバPCがない場合であれば，例えばそのためだけにRaspberryPiの上にLinuxを構築して利用するのもありかもしれません．

## インストール


### Ubuntu


```bash
$ sudo add-apt-repository ppa:alexlarsson/flatpak # PPA追加
$ sudo apt install flatpak gnome-software-plugin-flatpak
$ flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
```

ここまでできたら一度リブートし，Ubuntuソフトウェアを起動し，「⁠barrier」で検索すると表示される「ソース: dl.flathub.org」がついているものをクリックし、Barrierの個別ページにある「インストール」をクリックします．
これでインストール完了です．

### Windows

GitHubから最新版の`.exe`ファイルをダウンロードしましょう．

https://github.com/debauchee/barrier/releases


## 設定

以下のサイトを参考に
**Ubuntuがサーバ，Windowsがクライアント**として設定することを間違えないようにしましょう．

https://gihyo.jp/admin/serial/01/ubuntu-recipe/0575

ざっくり流れは

1. Ubuntu側でサーバ設定&IPアドレス確認
2. Windows側で1のIPアドレスを使ってクライアント設定&デバイス名設定
3. Ubuntu側サーバで2のデバイス名を指定して配置

です．



## 自動起動
PCを起動すると同時にBarrierも自動で起動するようにします．
Barrierのサーバ・クライアントの接続はどちらが先に起動していてもいいので，それぞれに自動起動の設定を施せば良いです．

というわけで，どちらにも自動起動の設定を施しておきましょう．
以下のサイトの「自動起動」という項を参考にしていきます．

- [複数PC間でキーボード・マウスをソフト的に共有してみる-Barrier（メモ）: 自動起動](http://wisteriahill.sakura.ne.jp/CMS/WordPress/2020/12/23/multi-pc-keyboard-mouse-sharing/)

### Windows側

startアイコン(画面の一番左下のやつ)->Run でポップアップするWindowに`shell:startup`と入力すれば，Startupのファイルエクスプローラが開きます．(もしくはファイルエクスプローラのパスに`shell:startup`と打ち込んでもいい)([参考](https://4ddig.tenorshare.com/jp/computer-data-recovery/windows-10-startup-folder.html))
ここが自動起動のアプリケーションフォルダです．
以下の画像のように，Barrierアプリのショートカットをここにコピペします．

![Screenshot 2022-10-14 184721.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505262/464a5e4d-a656-9eb8-d652-93917c8e513a.png)


もしくは以下のようなバッチファイルを作って，それをこのフォルダ内に入れてもいいです．

```bat:barrier.bat
C:\Program Files\Barrier\barrier.exe
```

再起動してみてBarrierが起動し，キーボードが使えるようになっていれば成功です．

(ちなみに`Settings->Startup->Help from the web : Adding app to startup`をクリックしてもブラウザでこの手順が教えられる)

### Ubuntu側
サーバ側なので設定する必要はないかもしれませんが，リブートなどしたときに起動し忘れるとWindows側でキーボードが使えなくなるので，設定しておきましょう．

以下のように`/var`以下に`.desktop`ファイルができているので，このファイルを使いますが，

```bash
$ sudo cp /var/lib/flatpak/app/com.github.debauchee.barrier/current/active/files/share/applications/com.github.debauchee.barrier.desktop ~/
$ sudo emacs -nw ~/com.github.debauchee.barrier.desktop
```

ファイルの一部を以下のように変更します(**ここでsleepを入れないと"Barrier failed to get local ip address"というポップアップエラーが出ました．おそらくOSをブートしてネットワークに接続される前にBarrierが走ってしまうからだと思います**)

```bash:
# Exec=barrier
Exec=bash -c "sleep 10 && flatpak run com.github.debauchee.barrier"
```
これを`/etc/xdg/`に置けば良いです．

```bash
$ sudo mv ~/com.github.debauchee.barrier.desktop /etc/xdg/autostart/ # ここに置く
$ sudo reboot
```

ちなみにこれは全ユーザに対して自動起動を設定する場合の編集ディレクトリです([参考サイト](https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/using_the_desktop_environment_in_rhel_8/adding-an-autostart-application_managing-user-sessions))．単一ユーザに対して自動起動を設定したい場合は`~/.config/autostart/`にこのファイルを置いてください([参考サイト](https://www.tom08.net/2018-01-28-162223/#:~:text=%2Fhome%2Fusername%2F.config,%E3%81%A6%E3%81%82%E3%81%92%E3%82%8C%E3%81%B0ok%E3%81%A7%E3%81%99%E3%80%82))

もしくは，このようにファイルを直接いじる方法ではなくてGUIを使う方法もあります．([参照](https://nanjib.com/archives/1587))

リブートして，Barrierが起動していることを確認できたらおkです．


# 参考

- [Barrierでキーボードとマウスを複数のPCから共用する](https://gihyo.jp/admin/serial/01/ubuntu-recipe/0575)
- [【 Ubuntuを使おう 第13回 】Ubuntu18.04LTSとWindows10でマウス＆キーボード共有](https://nanjib.com/archives/1587)
- [複数PC間でキーボード・マウスをソフト的に共有してみる-Barrier（メモ）](http://wisteriahill.sakura.ne.jp/CMS/WordPress/2020/12/23/multi-pc-keyboard-mouse-sharing/)



[^1]: かつては"Synergy"が定番だったらしいですが，有料化されたためにそこからフォークしたOSSとして"Barrier"が誕生しました．ほとんど互換らしいです．