すぐに、モデリングに重点を置いた博士課程の研究を開始します。スーパーバイザーにラップトップを提供してもらうことができて幸運です。モデルを作成して実行する以外に、会議の議事録を作成したり、時々講義を行ったりするので、タッチスクリーンノートブックを考えていました。
契約により、HPまたはDellに追われます。私たちが見つけた素敵なラップトップは here で見ることができます。ここで最も重要な側面は、おそらくグラフィックスチップがIntel HD Graphics 3000であることです。
理想的には、会議や講義中はタッチスクリーンだけで作業し、モデリングのためにラップトップを外部モニターに拡張します。後者の場合、ラップトップ画面を使用して図を描画します。私が今心配している2つのポイントがあります:
ノートパソコンのタッチスクリーンはUbuntu 11.10で動作しますか? AskUbuntuとGooglingに関する同様の質問は、それが問題にならないことを示唆していますが、ラップトップを購入する前に確実に知りたいです。タッチスクリーンを使用するためだけにWindowsに切り替える必要がある場合、本当に無駄になります。
タッチスクリーンが機能する場合、外部モニターを接続しても機能しますか?同様の質問を見つけました( デュアルモニターシステムでタッチスクリーンを調整するにはどうすればよいですか? を参照)。
役立つ可能性のあるもの(機能する、または機能しない別のセットアップなど)を教えていただければ、お知らせください。
xsetwacom
と呼ばれるMapToOutput
のディスプレイに入力をマッピングするための特定のコマンドがあります。あなたがすることはここにあります:
マップするディスプレイの名前を把握することから始めます。これは、xrandr
を実行することで実行できます。
phnomic@phnomic-jobb:~$ xrandr
Screen 0: minimum 320 x 200, current 3200 x 1597, maximum 8192 x 8192
LVDS1 connected 1280x800+1920+797 (normal left inverted right x axis y axis) 286mm x 179mm
1280x800 60.0*+
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 518mm x 324mm
1920x1200 59.9*+
1920x1080 60.0
1600x1200 60.0
1680x1050 60.0
1280x1024 60.0
1440x900 59.9
1280x960 60.0
1024x768 60.0
800x600 60.3
640x480 60.0
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)
私の場合、LVDS1を使用します。
次に、デバイスが何と呼ばれているかを把握します。これはxsetwacom --list
を使用して行われます:
phnomic@phnomic-jobb:~$ xsetwacom --list
Wacom ISDv4 E6 Pen stylus id: 20 type: STYLUS
Wacom ISDv4 E6 Pen eraser id: 21 type: ERASER
Wacom ISDv4 E6 Finger touch id: 22 type: TOUCH
最後に、割り当てたいすべてのデバイスに対してxsetwacom set "[device name]" MapToOutput [screen name]
コマンドを実行します。私の場合、これは次のようになります。
phnomic@phnomic-jobb:~$ xsetwacom set "Wacom ISDv4 E6 Pen stylus" MapToOutput LVDS1
phnomic@phnomic-jobb:~$ xsetwacom set "Wacom ISDv4 E6 Pen eraser" MapToOutput LVDS1
phnomic@phnomic-jobb:~$ xsetwacom set "Wacom ISDv4 E6 Finger touch" MapToOutput LVDS1
そして、接続するモニターやモニターに使用する向きに関係なく、派手なタッチスクリーンを使用するのは良いことです。
もっと知りたいなら、 this sourceforge post をお勧めします。
Ubuntu 12.04 64ビットのSurface Pro 2でも同じ問題が発生しました。 MiniDisplay-HDMIケーブルでデュアルモニターをセットアップしていますが、2番目のモニターはタッチ対応ではありません。私のために働いたのは、次の方法でデバイス名を見つけることでした:
xinput --list
これは返されました:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ HOLTEK Wireless USB Device id=10 [slave pointer (2)]
⎜ ↳ Atmel Atmel maXTouch Digitizer id=13 [slave pointer (2)]
⎜ ↳ Microsoft SAM id=11 [slave pointer (2)]
⎜ ↳ Microsoft SAM id=12 [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)]
↳ Power Button id=8 [slave keyboard (3)]
↳ HOLTEK Wireless USB Device id=9 [slave keyboard (3)]
↳ Front LifeCam id=14 [slave keyboard (3)]
↳ Rear LifeCam
@phnomicが言及した「xsetwacom --list」は何も返しません。
次に、@ phnomicが推奨するような画面にデバイスをマップします。
xsetwacom set "Atmel Atmel maXTouch Digitizer" MapToOutput eDP1
xsetwacom set 11 MapToOutput eDP1
xsetwacom set 12 MapToOutput eDP1
11と12は、両方とも「Microsoft SAM」という名前の2つのデバイスのデバイスIDです。
残念ながら、誰も知らないようです。
しかし、私は幸運でした。私の同僚は、数ヶ月前にタッチスクリーンのラップトップを購入しましたが、彼が研究室にいたときにそれをいじって気にしませんでした。これは私がこれまでに理解したものです:
タッチスクリーンは、少なくとも外部モニターを接続するまで、Ubuntu 11.10で問題なく動作します。その時点で、タッチスクリーンは元のスクリーンと外部モニターの組み合わせに合わせられます。つまり、タッチスクリーンを適切に使用することはできません。良いニュースは、ワコムの描画タブレットと同じように機能することです。これは、タッチスクリーンが動作するモニター領域を変更できることを意味します。すべてのデバイスのArea
プロパティを調整することにより、たとえば次のコマンドを実行することで、タッチスクリーンを思いどおりに動作させることができます。
for pad in "Serial Wacom Tablet stylus" "Serial Wacom Tablet eraser" "Serial Wacom Tablet touch"
do
xsetwacom --set "$pad" Area 0 0 10000 10000
done
0 0 10000 10000
値は任意です(これを理解する時間がありませんでした)。
今日の私のヒーローはchhです。彼はこれを行う方法を考え出し、 http://ubuntuforums.org/showthread.php?t=1527548 に投稿しました。このリンクでは、正しい値を計算するスクリプトも見つけることができます。彼が使用したxsetwacom
バージョンは、今日ダウンロードしたものとは異なるため、彼のスクリプトは私にとってはうまくいきませんでした。それでも、このリンクを使用すると、自分で解決できるはずです。
簡単に言えば、前述のHPラップトップの購入を計画している場合は、外部ディスプレイを接続した状態でタッチスクリーンを適切に動作させることができるはずです。
そして、仕事に戻るべきです。
更新!今週ついにラップトップを手に入れて、この質問で説明したデュアルスクリーンシナリオについてさらに詳細な分析を行いました。
Xsetwacom --listを使用すると、Wacomのようなデバイス(つまり、タッチスクリーン)のリストを取得できます。このコマンドによって返されるIDを使用すると、入力の手間を省くことができます。私が説明しようとしているものを再現したい場合、私の正確な構成を知ることは役に立つかもしれません:
tomas@EliteBook:~$ xsetwacom --list
Serial Wacom Tablet stylus id: 16 type: STYLUS
Serial Wacom Tablet eraser id: 18 type: ERASER
Serial Wacom Tablet touch id: 19 type: TOUCH
Id 16を使用すると、現在のエリア設定を取得できます(18と19でも同じ結果が得られます)。
tomas@EliteBook:~$ xsetwacom --get 16 Area
0 0 26312 16520
この値の意味するところは専門家に任せます。私にとって、これは100%を意味することを知ることが重要です。外部ディスプレイが接続されているかどうかにかかわらず、この値は変わりません。試行錯誤の結果、xsetwacom --set 16 0 0 50000 22000
に対して適切なタッチスクリーン調整ができました。少し詳しく見ると、これが理にかなっている理由がわかります。正しいキャリブレーションを0 0 x y
として定義し、初期設定(100%と呼んでいます)を0 0 x0 y0
として定義します。ラップトップの解像度が1280x800で、外部モニターの解像度が1920x1080であり、外部モニターがラップトップの右側に配置され、上部が揃えられていることを知っていると、水平方向の正しい係数は合計の比率になります希望のタッチスクリーン解像度(1280)を超える解像度(私は1280 + 1920)。これにより、a = 2.5として定義する係数が得られます。垂直方向では、これは800を超える1080、またはb = 1.35です。
上の文章をもう一度読みたいかもしれません。少しお役に立てるように、 このスクリーンショット arandrをご覧ください。
水平領域xの完全な値を取得するには、x0に係数aを掛けます。垂直領域(y = b * y0)で同じことを行い、すべてのタッチスクリーンデバイス(ペン、消しゴム、タッチ)で繰り返し、すべて設定します。
xsetwacom --set 16 Area 0 0 65780 22302
xsetwacom --set 18 Area 0 0 65780 22302
xsetwacom --set 19 Area 0 0 65780 22302
編集:うーん、それは奇妙です、指/タッチに必要な領域は、他のデバイスよりも約10倍小さいです。
何かを見逃したり、はっきりしない場合は、メッセージを送ってください。
Udevを使用して問題を修正する簡単なスクリプトを作成しました。最初に/etc/udev/rules.d/99-monitor-hotplug.rulesを作成します
次の行です。
ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", RUN+="/usr/share/X11/touchscreen.sh"
ここで/usr/share/X11/touchscreen.shファイル(+ x !!とマークしてください):
#!/bin/sh
#
# This is designed to be run by hotplug. See hotplug docs ...
#
# Make sure PATH is sane
export PATH="/bin:/usr/bin"
# Now the rest of the ENV to hook into X
# This should probably be run by Dbus, but I don't know how.
# Instead I see who's running Dbus, and get that user's .Xauthority
# So, its kind of a hack!
export USER=`ps -ef | grep dbus-daemon | grep session | cut -d ' ' -f 1`
export DISPLAY=":0"
export XAUTHORITY=/home/$USER/.Xauthority
export ICON=/usr/share/icons/Humanity/devices/48/monitor.svg
# Find Touchscreen id number -- sets id
export `xinput | grep Touchscreen | cut -f 2`
# Find the primary screen!
export screen=`xrandr | grep primary | cut -d ' ' -f 1`
# Use xinput to map them
xinput --map-to-output $id $screen
su $USER -c "notify-send -i $ICON \"TouchScreen\"\
\"Mapping Device $id to your $screen screen\""
最後の行は、それが何をしたかを伝える素敵なメッセージをポップアップするだけです。端末から、任意のユーザーIDで、それは素晴らしい動作をしますが、udevからは動作しません!スクリプト自体は正常に動作します。udevから失敗した通知だけです。まだ他のdbusの問題だと思います。誰でもそれを修正できる場合-お知らせください!!