「タッチスクリーン」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎Firefox: 削除)
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-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 が 1314 の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 はマルチタッチのジェスチャープログラムです。バックグラウンドで実行することで、ウィンドウマネージャにマルチタッチのサポートを追加します。