2つのマウスで 2つのマウスポインタを操作する方法
2017年12月13日 水曜日
CONTENTS
【IIJ 2017TECHアドベントカレンダー 12/13(水)の記事です】
経緯
先週、4K ディスプレイにするべき 5つの理由という記事を寄稿させていただきました。
それに関連するのですが、4K ディスプレイを使い始めて最初に思い当たるのが、
「画面が広すぎてマウスを動かす机の広さが足りない」
ということです。それもそのはず、フル HD と比べたら 4倍の広さになったのですから、単純に 4倍マウスカーソルの移動距離が増えたためです。何か良い方法はないものかとぼんやり考えていたところ、頭の中で画面を左右に分けたと仮定し、
右半分を右のマウスで
左半分を左のマウスで
操作すれば良いのではないかと思いました。
ちなみに 2個のマウスを普通にパソコンに繋ぐと、どちらのマウスを使っても 1つのマウスポインタを操作できるようになりますが、今回はマウスポインタを 2つ出して、別々に操作するのが目的です。
設定方法
試した私の環境は openSUSE Leap 42.3 (Linux) です。
まずは 2個のマウスを調達し、両方接続されている状態で、入力デバイスを調べます。
# xinput ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ USB OPTICAL MOUSE id=9 [slave pointer (2)] ⎜ ↳ USB Optical Mouse id=10 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Power Button id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Eee PC WMI hotkeys id=11 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)]
これで、id=9 と id=10 が、今接続している USB マウスだと分かります。
この状態でもう一つの入力デバイス “2nd Device” を追加します。(※)
# xinput create-master "2nd Device" # xinput ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ USB OPTICAL MOUSE id=9 [slave pointer (2)] ⎜ ↳ USB Optical Mouse id=10 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Power Button id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Eee PC WMI hotkeys id=11 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)] ⎡ 2nd Device pointer id=13 [master pointer (14)] ⎜ ↳ 2nd pointer XTEST pointer id=15 [slave pointer (13)] ⎣ 2nd Device keyboard id=14 [master keyboard (13)] ↳ 2nd pointer XTEST keyboard id=16 [slave keyboard (14)]
この時点で、もう一つ(2nd Device)のマウスポインタ(id=13)が画面上に出現します。
あとは、先ほど※で追加した 2番目のマウスポインタ(id=13)に、接続したい USB マウス(id=10)をぶら下げるだけです。こんな風になれば OK!
# xinput reattach 10 13 # xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ USB OPTICAL MOUSE id=9 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Power Button id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ Eee PC WMI hotkeys id=11 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)] ⎡ 2nd pointer pointer id=13 [master pointer (14)] ⎜ ↳ USB Optical Mouse id=10 [slave pointer (13)] ⎜ ↳ 2nd pointer XTEST pointer id=15 [slave pointer (13)] ⎣ 2nd pointer keyboard id=14 [master keyboard (13)] ↳ 2nd pointer XTEST keyboard id=16 [slave keyboard (14)]
マウスを左右に 1個ずつ配置し、同時に両手で動かして動作を体感してみてください。
感想
マウスの移動距離が半分になった!
なんか分からないけど、すごいパソコンを操作しているハッカーみたいに見える!
わーい!
…と思ったのも束の間、残念ながらだいぶ機能は制限されています。
私はウィンドウマネージャに TDE (Trinity Desktop Environment) を使っているのですが、どうやら TDE 側が対応していないようで、2番目のマウス操作によるアクティブウィンドウと非アクティブウィンドウの切り替えに難がありました。openSUSE 標準の KDE Plasma5 も同様です。あと、私は右利きなので、ついつい右のマウスを操作してしまい、左のマウスを使うには少々「慣れ」が必要そうです。
なお、他のユースケースを考えてみたのですが、例えばプレゼンテーションをしているときに、「ちょっとページ戻して、あ、いや、それじゃなくて」みたいなやり取りが、しばしばあると思うんですが、予め 2個マウスをセットしておいて、2個目の Bluetooth マウスとマイクを参加者に渡し、参加者にページングもしてもらいつつ、話者とは別のマウスポインタで指し示して説明してもらう、みたいなことには使えるかもしれません。
あとは、クリスマスの夜に彼女(彼)と寄り添って、
「このネコちゃんかわいいね」
「え、こっちのネコちゃんも凛々しくていいよ」
って Instagram 見ながら、別々のマウスポインタを操作して指し示すくらいしか思い浮かびませんでした。ごめんなさい。
やめたくなったとき
2番目の入力デバイス(2nd Device)を削除すれば Ok です。
# xinput remove-master 13
まとめ
少し話がそれましたが、結局マウスカーソルの速度を上げることにしました。
接続したマウスの感度や個人の好みにも依ると思いますが、ウィンドウマネージャ側でマウスの設定を変更するか、$HOME/.xinitrc などに以下のような設定を追加しておくと良いでしょう。
xset m 5 1
ちなみに調べてみると、過去複数のマウスポインタを操作するためのウィンドウマネージャ Multi-Cursor Window Manager が開発されていたようですが、ソースコードを見ても 2006年頃を最後に開発が止まっているようでした。残念。
補足
4K のような高解像ディスプレイを使っていてウィンドウサイズが設定されていないアプリケーションを起動すると、とても大きなウィンドウで開くことがあって、このウィンドウサイズを調整したり、ちょっと今は使わないからディスプレイの端っこに置いておこう、と思うことがあります。
そんなとき、KDE ではウィンドウ上のどこでも良いので Alt + 右ドラッグすると、簡単にウィンドウをリサイズできます。(目を細めながらウィンドウのコーナーや縁に、マウスカーソルを合わせる必要はありません!)
また、同様にウィンドウ上のどこでも良いので、Alt + 左ドラッグをすると、簡単にウィンドウを移動できて便利です。(ウィンドウの上部が見えなくなって慌てたり、タイトルバーをマウスで掴む必要はありません!)
他のウィンドウマネージャや、Windows でも何かツールを使えば同じようなことができるかもしれません。