Bientôt, je commencerai une étude de doctorat mettant fortement l'accent sur la modélisation. J'ai la chance d'avoir mon superviseur qui me propose un ordinateur portable. En plus de créer et de faire fonctionner des modèles, je vais rédiger des procès-verbaux de réunions et peut-être donner une conférence de temps en temps, nous pensions à un cahier à écran tactile.
En raison de contrats, je serai coincé avec HP ou Dell. Un ordinateur portable de Nice que nous avons trouvé peut être vu à ici . L’aspect le plus important ici est probablement que la puce graphique est un Intel HD Graphics 3000.
Idéalement, je travaillerais uniquement avec l'écran tactile lors de réunions et de conférences et j'étendrais l'ordinateur portable à un moniteur externe à des fins de modélisation. Dans ce dernier cas, j'utiliserais toujours l'écran de mon ordinateur portable pour dessiner des diagrammes. Il y a deux points qui m'inquiètent pour l'instant:
L'écran tactile du portable fonctionnera-t-il avec Ubuntu 11.10? Bien que des questions similaires sur AskUbuntu et Googling suggèrent que ce ne sera pas un problème, je voudrais le savoir avant d’acheter un ordinateur portable. Ce serait un réel gaspillage si je devais revenir à Windows simplement pour utiliser l'écran tactile.
Et si l'écran tactile fonctionne, cela fonctionnera-t-il quand je connecte un moniteur externe? J'ai trouvé une question similaire (voir Comment calibrer un écran tactile sur un système à double moniteur? ), mais malheureusement, on n'a jamais répondu à cette question.
Si vous pouvez me dire tout ce qui pourrait vous aider (différentes configurations qui ont fonctionné ou non, etc.), veuillez me le faire savoir.
Il existe une commande spécifique pour mapper les entrées sur un affichage dans xsetwacom
appelée MapToOutput
. Voici ce que vous faites:
Commencez par déterminer le nom de l'écran que vous souhaitez mapper. Cela peut être fait en exécutant 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)
Dans mon cas, je veux utiliser LVDS1.
Ensuite, déterminez comment vos appareils s'appellent. Ceci est fait en utilisant 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
Enfin, exécutez la commande xsetwacom set "[device name]" MapToOutput [screen name]
pour tous les périphériques que vous souhaitez affecter. Dans mon cas, cela devient:
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
Et puis, vous avez tout intérêt à utiliser votre écran tactile sophistiqué, quels que soient les moniteurs auxquels vous le connectez et l'orientation que vous utilisez pour vos moniteurs.
Si vous voulez en savoir plus, je recommande cet article sourceforge .
J'ai eu le même problème sur ma Surface Pro 2 avec Ubuntu 12.04 64 bits. J'ai une configuration à double moniteur avec un câble MiniDisplay vers HDMI, mon deuxième moniteur n'est pas activé au toucher. Ce qui a fonctionné pour moi a été de trouver les noms de périphériques par:
xinput --list
Cela a renvoyé:
⎡ 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
"xsetwacom --list" mentionné par @phnomic ne renverrait rien.
Nous mappons ensuite les appareils sur des écrans tels que suggéré par @phnomic:
xsetwacom set "Atmel Atmel maXTouch Digitizer" MapToOutput eDP1
xsetwacom set 11 MapToOutput eDP1
xsetwacom set 12 MapToOutput eDP1
notez que 11 et 12 sont des ID de périphérique pour les deux périphériques nommés "Microsoft SAM"
Dommage, apparemment personne ne le sait.
J'ai eu de la chance, cependant. Un de mes collègues a acheté l'ordinateur portable à écran tactile il y a quelques mois et cela ne me dérangeait pas de jouer avec lui un peu quand il était au laboratoire. Voici ce que j'ai compris jusqu'ici:
L’écran tactile fonctionne parfaitement dans Ubuntu 11.10, du moins jusqu’à ce que vous connectiez un moniteur externe. À ce stade, l'écran tactile est aligné sur l'écran d'origine combiné et le moniteur externe, ce qui signifie que vous ne pouvez pas utiliser l'écran tactile correctement. La bonne nouvelle est que cela fonctionne comme les tablettes à dessin Wacom. Cela signifie que vous pouvez modifier la zone de contrôle pour laquelle l'écran tactile fonctionne. En modifiant la propriété Area
de tous vos appareils, vous pouvez obtenir que l'écran tactile fonctionne comme vous le souhaitez, par exemple en exécutant:
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
où les valeurs 0 0 10000 10000
sont arbitraires (n’ont pas eu le temps de le comprendre).
Mon héros d’aujourd’hui est chh, il a découvert et posté comment faire cela sur http://ubuntuforums.org/showthread.php?t=1527548 . Sur ce lien, vous pouvez également trouver ses scripts pour calculer les valeurs correctes. La version xsetwacom
qu'il a utilisée est différente de celle que j'ai téléchargée aujourd'hui, ses scripts ne m'ont donc pas aidé. Néanmoins, avec ce lien, vous devriez pouvoir le découvrir vous-même.
En résumé, si vous envisagez d'acheter l'ordinateur portable HP que j'ai mentionné plus tôt, vous devriez pouvoir faire fonctionner l'écran tactile correctement avec un écran externe connecté.
Et je devrais retourner au travail maintenant.
Mise à jour! J'ai finalement eu mon ordinateur portable cette semaine et fait une analyse plus approfondie du scénario à double écran décrit dans cette question.
En utilisant xsetwacom --list, vous pouvez obtenir une liste des périphériques de type Wacom (c'est-à-dire votre écran tactile). En utilisant l'identifiant renvoyé par cette commande, vous pouvez vous épargner beaucoup de frappe. Si vous souhaitez reproduire ce que je vais expliquer, il peut être utile de connaître ma configuration exacte:
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
En utilisant l'ID 16, je peux obtenir les paramètres de zone actuels (18 et 19 devraient donner les mêmes résultats ici):
tomas@EliteBook:~$ xsetwacom --get 16 Area
0 0 26312 16520
Ce que cette valeur signifie, je le laisse aux experts. Pour moi, il est important de savoir que cela signifie 100%. Que l'écran externe soit connecté ou non, cette valeur reste la même. Des essais et des erreurs m'ont permis de calibrer correctement l'écran tactile pour xsetwacom --set 16 0 0 50000 22000
. Lorsque vous examinerez la question un peu plus, vous comprendrez pourquoi cela a du sens: définissez le calibrage correct comme 0 0 x y
et le réglage initial (ce que j’ai appelé le 100%) comme 0 0 x0 y0
. Sachant que ma résolution est de 1280x800 pour l’ordinateur portable et de 1920x1080 pour le moniteur externe et que le moniteur externe est positionné à droite de mon ordinateur portable, la partie supérieure alignée, vous remarquerez que dans le sens horizontal, le facteur correct est le rapport de mon total résolution (pour moi, 1280 + 1920) sur la résolution de mon écran tactile souhaitée (1280). Cela donne un facteur que je définirai comme un = 2,5. Dans la direction verticale, il s'agit de 1080 sur 800, ou b = 1,35.
Vous voudrez peut-être relire la phrase ci-dessus. Pour vous aider un peu, voir cette capture d'écran de arandr.
Pour obtenir la valeur parfaite pour ma zone horizontale, x, il suffit de multiplier x0 par le facteur a. Faites de même pour votre zone verticale, y = b * y0, puis répétez l'opération pour tous vos périphériques à écran tactile (stylo, gomme, toucher) et vous êtes prêt:
xsetwacom --set 16 Area 0 0 65780 22302
xsetwacom --set 18 Area 0 0 65780 22302
xsetwacom --set 19 Area 0 0 65780 22302
edit: hmm, c’est bizarre, la zone requise pour le toucher/le toucher est environ 10 fois plus petite que les autres appareils.
Si quelque chose me manque ou si je ne comprends pas très bien, envoyez-moi un message et j'essaierai de vous aider.
J'ai écrit un script simple qui corrigera les problèmes en utilisant udev. Créez d'abord /etc/udev/rules.d/99-monitor-hotplug.rules
C'est juste cette ligne:
ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", RUN+="/usr/share/X11/touchscreen.sh"
Maintenant, le fichier /usr/share/X11/touchscreen.sh (marquez-le + 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\""
La dernière ligne affiche simplement un joli message vous expliquant ce qu’elle a fait. Depuis un terminal, sur n'importe quel identifiant, cela fonctionne très bien, mais ne fonctionnera pas avec udev! Le script lui-même fonctionne bien - c'est juste la notification qui échoue depuis udev. Pourtant, je pense que c'est un autre problème. Si quelqu'un peut résoudre ce problème - faites le moi savoir !!