2つのマウスで 2つのマウスポインタを操作する方法

2017年12月13日 水曜日


【この記事を書いた人】
古賀 勇

IIJ ネットワーク本部アプリケーションサービス部・(兼)社長室所属。 メールサービスの運用業務に従事し、日々世界の悪と戦う一児の父親。社内 Power Automate エバンジェリスト(自称)。M3AAWG member / openSUSE Users / WIDE Project メンバー。趣味は大喜利。はがき職人。

「2つのマウスで 2つのマウスポインタを操作する方法」のイメージ

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 でも何かツールを使えば同じようなことができるかもしれません。

古賀 勇

2017年12月13日 水曜日

IIJ ネットワーク本部アプリケーションサービス部・(兼)社長室所属。 メールサービスの運用業務に従事し、日々世界の悪と戦う一児の父親。社内 Power Automate エバンジェリスト(自称)。M3AAWG member / openSUSE Users / WIDE Project メンバー。趣味は大喜利。はがき職人。

Related
関連記事