「タッチスクリーン」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→Firefox: 削除) |
Kusanaginoturugi (トーク | 投稿記録) (→マルチディスプレイでタッチスクリーンを使う: 記事を追加) |
||
99行目: | 99行目: | ||
また、タッチスクリーンを一度切断して再接続した場合 (例えば KVM でモニターを切り替えた場合など) もマッピングの設定は消失します。そのような場合は udev ルールを使うほうが良いでしょう。 |
また、タッチスクリーンを一度切断して再接続した場合 (例えば KVM でモニターを切り替えた場合など) もマッピングの設定は消失します。そのような場合は udev ルールを使うほうが良いでしょう。 |
||
+ | |||
+ | === Using xrandr-watch-git to automate map-to-output === |
||
+ | |||
+ | There are [[xrandr]] events we can capture from a script. Install {{AUR|xrandr-watch-git}}, create a script {{ic|~/.xrandr-changed}} with execution permission to perform map-to-output, for example: |
||
+ | |||
+ | {{hc|~/.xrandr-changed| |
||
+ | #!/bin/sh |
||
+ | xinput --map-to-output "Wacom HID 4861 Finger touch" "eDP1" |
||
+ | }} |
||
+ | |||
+ | and start, test and enable the [[systemd/User]] service {{ic|xrandr-watcher.service}}. |
||
+ | |||
+ | === Wayland/Weston === |
||
+ | |||
+ | Wayland does not currently have a known method to lock touching to a specific display in any environment other than sway (or wlroots-based supported compositors). There are tools such as weston-touch-calibrator, but Gnome Wayland uses Xwayland leaving the calibrator unable to locate any touchscreen. |
||
+ | |||
+ | Wayland/Xwayland also masks the xinput list and funnels them down to generic xwayland devices such as "xwayland-pointer","xwayland-relative-pointer","xwayland-touch-pointer", etc. The Wayland method of "[[Xinput]]" is "[[Libinput]]", but does not have all the same functionality. The current known method to use touchscreens in a multi-head setup is to force Gnome or KDE to use X11. libinput currently assumes the touchscreen(s) covers all available monitors. |
||
+ | |||
+ | See [[Sway#Touch display mapping]] for settings in sway. |
||
== Touchegg == |
== Touchegg == |
2024年6月6日 (木) 22:37時点における版
関連記事
Linux でタッチスクリーンデバイスをセットアップしようと試みた場合、(多少の較正は必要ながらも) 特に何も設定しなくても動作するときと、あるいはカーネルによってサポートされていないデバイスなら、設定するのがとても面倒くさい場合があります。
目次
イントロダクション
この記事ではカーネル (の usbtouchscreen モジュールなど) によってサポートされているタッチスクリーンデバイスを対象にします。サポートされていれば、デバイスの /dev/input/event*
ノードが存在するはずです。ノードが存在するか確認するには:
$ less /proc/bus/input/devices
あるいはディスプレイをタッチしたときに使われるイベントノードを確認するには:
$ cat /dev/input/event? # replace ? with the event numbers
デバイスノードが見つけられたのであれば、デバイスを動作させることもおそらくできるはずです。
利用可能な X11 ドライバー
X11 用のタッチスクリーンインプットドライバーは多数存在します。extra リポジトリに入っている最も一般的なドライバーは:
- xf86-input-evdev (タッチスクリーンを接続しただけで動作する場合のデフォルトドライバー)
- xf86-input-libinput; libinput を参照
- xf86-input-elographics
リポジトリに含まれていない、マイナーなドライバーは:
- xf86-input-magictouch
- xf86-input-mutouch
- xf86-input-plpevtch
- xf86-input-palmax
デバイスによってはプロプライエタリなドライバーも存在しますが (例: xf86-input-egalaxAUR)、最初にオープンソースのドライバーを試すことを推奨します。
あなたが使用するタッチスクリーンデバイスにあわせて適当なドライバーを選択してください。タッチスクリーンが既に動作する場合はおそらく evdev がデフォルトです。
Two-fingers scrolling
The two-fingers scrolling has to be implemented on the application side (see this link). For Firefox, see Firefox/Tweaks#Enable touchscreen gestures.
There is a hack to emulates this scrolling behavior for every application in #Touchegg, but the X server still handles it as text selection (at least with Plasma).
evdev ドライバー
キャリブレーション
xinput_calibratorAUR (AUR) をインストールして、xinput_calibrator を実行して指示に従って下さい。
マルチディスプレイでタッチスクリーンを使う
マルチディスプレイを使う場合 (その中にタッチスクリーンも含まれる場合)、タッチサーフェスとスクリーンのマッピングを Xorg に指定する必要があります。xinput を使うことでとても簡単に設定できます。
以下は Wacom タブレットと外付けモニタを使用する例です。xrandr を実行すると2つのディスプレイが表示されます:
$ xrandr
Screen 0: minimum 320 x 200, current 2944 x 1080, maximum 8192 x 8192 LVDS1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm 1024x768 60.0*+ 800x600 60.3 56.2 640x480 59.9 VGA1 connected 1920x1080+1024+0 (normal left inverted right x axis y axis) 477mm x 268mm 1920x1080 60.0*+ 1600x1200 60.0 1680x1050 60.0 1680x945 60.0
上記で2つのディスプレイは LVDS1 と VGA1 であることがわかり、LVDS1 はタブレットの内蔵ディスプレイで、VGA1 は外付けモニタです。スタイラスの入力を LVDS1 にマップしたいとします。そこで、スタイラスの入力の ID を確認する必要があります:
$ xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ QUANTA OpticalTouchScreen id=9 [slave pointer (2)] ⎜ ↳ TPPS/2 IBM TrackPoint id=11 [slave pointer (2)] ⎜ ↳ Serial Wacom Tablet WACf004 stylus id=13 [slave pointer (2)] ⎜ ↳ Serial Wacom Tablet WACf004 eraser id=14 [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)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=10 [slave keyboard (3)] ↳ ThinkPad Extra Buttons id=12 [slave keyboard (3)]
ID が 13
と 14
の2つのスタイラス入力が存在することが確認できます。以下のように実行して入力を出力にマップしてください:
$ xinput --map-to-output 13 LVDS1 $ xinput --map-to-output 14 LVDS1
再起動によって ID は変化してしまいますが、以下のコマンドを ~/.xinitrc
などに記述することで自動的に設定することができます:
xinput --map-to-output $(xinput list --id-only "Serial Wacom Tablet WACf004 stylus") LVDS1 xinput --map-to-output $(xinput list --id-only "Serial Wacom Tablet WACf004 eraser") LVDS1
また、タッチスクリーンを一度切断して再接続した場合 (例えば KVM でモニターを切り替えた場合など) もマッピングの設定は消失します。そのような場合は udev ルールを使うほうが良いでしょう。
Using xrandr-watch-git to automate map-to-output
There are xrandr events we can capture from a script. Install xrandr-watch-gitAUR, create a script ~/.xrandr-changed
with execution permission to perform map-to-output, for example:
~/.xrandr-changed
#!/bin/sh xinput --map-to-output "Wacom HID 4861 Finger touch" "eDP1"
and start, test and enable the systemd/User service xrandr-watcher.service
.
Wayland/Weston
Wayland does not currently have a known method to lock touching to a specific display in any environment other than sway (or wlroots-based supported compositors). There are tools such as weston-touch-calibrator, but Gnome Wayland uses Xwayland leaving the calibrator unable to locate any touchscreen.
Wayland/Xwayland also masks the xinput list and funnels them down to generic xwayland devices such as "xwayland-pointer","xwayland-relative-pointer","xwayland-touch-pointer", etc. The Wayland method of "Xinput" is "Libinput", but does not have all the same functionality. The current known method to use touchscreens in a multi-head setup is to force Gnome or KDE to use X11. libinput currently assumes the touchscreen(s) covers all available monitors.
See Sway#Touch display mapping for settings in sway.
Touchegg
Touchegg はマルチタッチのジェスチャープログラムです。バックグラウンドで実行することで、ウィンドウマネージャにマルチタッチのサポートを追加します。