マルチポインタ X
Xorg サーバーにはバージョン 1.7 から「マルチポインタ」と呼ばれる機能が搭載されています。画面上に (それぞれにフォーカスがある) 複数のマウスポインタを表示して、別々の物理入力デバイスで操作できるという機能です。簡単なマルチシートソリューションとして使うことができます。
目次
基本概念
マスターデバイスとスレーブデバイス
XInput2 が導入されることにより、入力デバイスは2段階で管理されます:
- 画面上のカーソルに対応するマスターデバイス。
- 物理的な入力デバイスに対応するスレーブデバイス。
マスターデバイスはポインタとキーボードのペアです。マスターデバイスには複数のスレーブデバイスを接続することができ、接続された全てのスレーブデバイスからマスターデバイスのカーソルを操作できます。
クライアントポインタ
アプリケーションが入力をキャッチすると (例: フルスクリーンのゲーム)、クライアントポインタと設定されているマスターデバイスが取得されます。デフォルトでは、クライアントポインタは "Virtual core pointer" に設定されていますが、"xinput" ユーティリティを使うことで別のデバイスに設定できます。
設定
xinput ユーティリティ
CLI ユーティリティの xinput
を使ってポインタを追加できます。
"name pointer" と "name keyboard" という名前のマスターデバイスのペアを作成:
$ xinput create-master [name]
既存のスレーブデバイスの名前と id を確認:
$ xinput list
新しく作成したマスターデバイスにスレーブデバイスを再接続:
$ xinput reattach [slave device name or id] [master device name or id]
例えば "Auxiliary" という名前のデバイスを作成:
$ xinput create-master Auxiliary
xinput デバイスを確認すると以下のように表示されます:
Virtual core pointer >Virtual Core XTEST pointer >[probably your main mouse] Virtual core keyboard >Virtual Core XTEST pointer >[probably your main keyboard] >[other function buttons] Auxiliary pointer >auxiliary XTEST pointer Auxiliary keyboard >auxiliary XTEST keyboard
2番目のマウスとキーボードを auxiliary にそれぞれ接続します。XTEST デバイスは無関係です。
以下のコマンドでデバイスを接続します:
$ xinput reattach [device id #] "Auxiliary pointer"
キーボードも同じように接続してください。
ソフトウェアのサポート
明示的にマルチポインタをサポートしていないソフトウェアでもマルチポインタを使うことはできますが、機能は制限されます。マルチポインタをサポートしていないアプリケーションはポインタを区別することができないため、全ての操作はマスターデバイスのペアによる操作として認識されます。
ウィンドウマネージャ
マルチポインタに対応しているウィンドウマネージャは以下のようなことが可能です:
- 複数のフォーカスを認識します。
- フォーカスされたウィンドウのクライアントポインタをフォーカスしたポインタに設定します。
- ウィンドウの移動とリサイズを同時に行えます。
2016年12月24日現在、マルチポインタをサポートしているのは multicursor-wm (開発は2011年に停止) しかありません。
参照
- Xorg wiki の記事
- Xorg マルチシート - 複雑なマルチユーザー環境を作成する方法。Xorg セッションとグラフィックカードが2つ以上必要です。