Kubuntu 17.04では、1つは通常どおりマウスに接続し、もう1つはタッチスクリーンに接続するデュアルポインタ設定を取得しようとしています。コアポインタに接続すると正常に動作します(ピンチ動作を含む)。
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ My touchscreen id=11 [slave pointer (2)]
⎜ ↳ My mouse id=18 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=15 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
...
次のようなこの回答、別のポインタを作成し、タッチスクリーンをここにリンクしました。
$ xinput create-master Touchscreen
$ xinput reattach 11 "Touchscreen pointer"
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ My mouse id=18 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=15 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
...
⎡ Touchscreen pointer id=21 [master pointer (22)]
⎜ ↳ My touchscreen id=11 [slave pointer (21)]
⎜ ↳ Touchscreen XTEST pointer id=23 [slave pointer (21)]
⎣ Touchscreen keyboard id=22 [master keyboard (21)]
↳ Touchscreen XTEST keyboard id=24 [slave keyboard (22)]
これはジェスチャーを含む機能的でもあります。問題は、タッチスクリーンに接続されているカーソルポインタが点滅することです。コアポインタではこれは起こりません。奇妙なことは、マウスポインタを動かしたときにのみちらつきが発生することです。マウスを動かさないと、タッチスクリーンを使用しないときにタッチスクリーンポインタが見えないままになります。これは私が望むものに非常に近いです。理想的には、タッチスクリーンポインタは常に隠されているはずです。
解決策1(機能しない):
xicursorset
推奨通りに使用上記の回答。このコードは、最終的にXIDefineCursor
各ポインタのカーソル画像を設定するために使用されます。 KDE では何のエラーも発生しません。機能する場合は、カーソルを空の画像に設定します。点滅する問題が解決されるかどうかはわかりません。
解決策2(部分的にのみ機能します):
次の方法でタッチスクリーンをフローティングに保ちます。
$ xinput float 11
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ My mouse id=18 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=15 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
...
∼ My touchscreen id=11 [floating slave]
この構成では、KDEウィンドウはタッチスクリーンを認識しませんが、驚くべきことに、Chromeは1本の指スクロールや2本の指のピンチツーズームなどの動作を認識します。すべてのウィンドウでこの機能を使用できる場合は十分です。
解決策3(理論的には機能しますが、競合のため実際には機能しません):
ポインタを動的に追加/削除します。つまり、次のスクリプトを使用してください~/.local/bin/watch-touchscreen.py
。
#!/usr/bin/python
import sys;
from subprocess import call;
while True:
line = sys.stdin.readline()
if line.startswith("button press"):
call(["xinput", "create-master", "Touchscreen"])
call(["xinput", "reattach", "11", "Touchscreen pointer"])
elif line.startswith("button release"):
call(["xinput", "remove-master", "Touchscreen pointer"])
このように:
$ xinput test 11 | ~/.local/bin/watch-touchscreen.py
アイデアは、タッチスクリーンをタッチするたびに新しいポインタを生成し、タッチが解除されるとそれを消滅させ、タッチスクリーンがフローティングスレーブに戻ることです。このプロセスは、Xセッションがすぐに中断され、強制的に再ログインするまで非常に簡単です。 xinputポインタを動的に生成して破壊することは、最終的に賢明なアイデアではないようです。
どんなアイデアや解決策がありますか?