Tela sensível ao toque e monitor externo adicional

3

Em breve, iniciarei um estudo de doutorado com um strong foco em modelagem. Eu tenho a sorte de ter meu supervisor me oferecendo um laptop. Já que além de fazer e rodar modelos estarei fazendo minutos de reuniões e talvez dando uma palestra de tempos em tempos, estávamos pensando em um notebook touchscreen.

Devido a contratos, ficarei com a HP ou a Dell. Um bom laptop que encontramos pode ser visto em aqui . O aspecto mais importante aqui é provavelmente que o chip gráfico é um Intel HD Graphics 3000.

Idealmente, eu trabalharia apenas com a tela sensível ao toque durante reuniões e palestras, e estenderia o laptop para um monitor externo para fins de modelagem. No último caso, eu ainda usaria a tela do meu laptop para desenhar diagramas. Há dois pontos que me preocupam agora:

  1. A tela sensível ao toque do laptop funcionará com o Ubuntu 11.10? Embora questões semelhantes no AskUbuntu e no Google Googling sugiram que isso não será um problema, eu gostaria de ter certeza antes de comprar o laptop. Seria um desperdício se eu precisasse voltar para o Windows apenas para usar a tela sensível ao toque.

  2. E se a tela sensível ao toque funcionar, ela ainda funcionará quando eu conectar um monitor externo? Eu encontrei uma pergunta semelhante (consulte Como faço para calibrar uma tela sensível ao toque em um sistema de monitor duplo? ), mas infelizmente essa nunca foi respondida.

Se você puder me dizer algo que possa ajudar (configurações diferentes que funcionaram ou não funcionaram, etc.), por favor me avise.

    
por Tomas 25.10.2011 / 06:53

4 respostas

2

Existe um comando específico para mapear a entrada para uma exibição em xsetwacom chamado MapToOutput . Aqui está o que você faz:

Comece por descobrir o nome da exibição que você deseja mapear. Isso pode ser feito executando 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)

No meu caso, quero usar o LVDS1.

Em seguida, descubra como seus dispositivos são chamados. Isso é feito usando 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     

Por fim, execute o comando xsetwacom set "[device name]" MapToOutput [screen name] para todos os dispositivos que você deseja atribuir. No meu caso, isso se torna:

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

E então você é bom para usar sua tela de toque, independentemente de em quais monitores você se conecta e qual orientação você usa para seus monitores.

Se você quiser saber mais, eu recomendo esta postagem no sourceforge .

    
por phnomic 29.02.2012 / 11:21
4

Eu tive o mesmo problema no meu Surface Pro 2 com o Ubuntu 12.04 de 64 bits. Eu tenho uma configuração de monitor duplo com um cabo MiniDisplay para HDMI, meu segundo monitor não é ativado por toque. O que funcionou para mim foi encontrar nomes de dispositivos por:

xinput --list

Isso retornou:

⎡ 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" mencionado por @phnomic não retornaria nada.

Em seguida, mapeamos dispositivos para telas como @phnomic sugeridas:

xsetwacom set "Atmel Atmel maXTouch Digitizer" MapToOutput eDP1
xsetwacom set 11 MapToOutput eDP1
xsetwacom set 12 MapToOutput eDP1

observe que 11 e 12 são IDs de dispositivo para os dois dispositivos, ambos denominados "MICROSOFT SAM"

    
por Keyvan 08.12.2013 / 21:44
0

Que pena, aparentemente ninguém sabe.

Eu tive sorte, no entanto. Um colega meu comprou o laptop touchscreen há alguns meses e não se importou comigo brincando um pouco com ele quando estava no laboratório. Isto é o que eu descobri até agora:

A tela sensível ao toque funciona perfeitamente no Ubuntu 11.10, pelo menos até você conectar um monitor externo. Nesse ponto, a tela sensível ao toque é alinhada à tela original combinada e ao monitor externo, o que significa que você não pode usar a tela sensível ao toque adequadamente. A boa notícia é que funciona exatamente como os tablets de desenho da Wacom. Isso significa que você pode alterar a área do monitor na qual a tela sensível ao toque opera. Ao ajustar a propriedade Area de todos os seus dispositivos, você pode obter a tela sensível ao toque para funcionar da maneira desejada, por exemplo, executando:

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

em que os valores de 0 0 10000 10000 são arbitrários (não houve tempo para descobrir isso).

Meu herói de hoje é chh, ele descobriu e postou como fazer isso no link . Neste link você também pode encontrar seus scripts para calcular os valores corretos. A versão xsetwacom que ele usou é diferente da que eu baixei hoje, então seus scripts não fizeram o truque para mim. Ainda assim, com este link, você deve ser capaz de descobrir por si mesmo.

Para encurtar a história, se você pretende comprar o laptop HP que mencionei anteriormente, será possível fazer com que a tela sensível ao toque funcione corretamente com um monitor externo conectado.

E eu devo voltar ao trabalho agora.

Atualize! Eu finalmente peguei meu laptop esta semana e fiz uma análise mais aprofundada sobre o cenário de tela dupla descrito nesta questão.

Usando xsetwacom --list, você pode obter uma lista dos dispositivos semelhantes à Wacom (por exemplo, sua tela sensível ao toque). Usando o id retornado por este comando, você pode economizar muita digitação. Caso você queira reproduzir o que eu vou explicar, pode ser útil saber minha configuração exata:

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   

Usando o ID 16, posso obter as configurações atuais da área (18 e 19 devem fornecer os mesmos resultados aqui):

tomas@EliteBook:~$ xsetwacom --get 16 Area
0 0 26312 16520

O que esse valor significa vou deixar para os especialistas. Para mim, é importante saber que isso significa 100%. Independentemente de o monitor externo estar ou não conectado, esse valor permanece o mesmo. A tentativa e erro me proporcionou uma calibração decente da tela sensível ao toque para xsetwacom --set 16 0 0 50000 22000 . Quando você olhar um pouco mais, verá porque isso faz sentido: Defina a calibração correta como 0 0 x y e a configuração inicial (o que chamei de 100%) como 0 0 x0 y0 . Conhecendo minha resolução é 1280x800 para o laptop e 1920x1080 para o monitor externo e o monitor externo está posicionado à direita do meu laptop, a parte superior alinhada, você notará que na direção horizontal o fator correto é a razão do meu total resolução (para mim, 1280 + 1920) sobre a minha resolução touchscreen desejada (1280). Isso dá um fator que eu vou definir como a = 2.5. Na direção vertical, isso é 1080 em 800, ou b = 1,35.

Você pode querer ler a frase acima novamente. Para ajudá-lo um pouco, veja esta imagem do arandr.

Para obter o valor perfeito para a minha área horizontal, x, multiplique simplesmente x0 pelo fator a. Faça o mesmo para a sua área vertical, y = b * y0 e repita para todos os seus dispositivos de tela sensível ao toque (caneta, borracha, toque) e está tudo pronto:

xsetwacom --set 16 Area 0 0 65780 22302
xsetwacom --set 18 Area 0 0 65780 22302
xsetwacom --set 19 Area 0 0 65780 22302

edite: hmm, isso é estranho, a área necessária para finger / touch é menor que os outros dispositivos por um fator 10.

Se eu perdi alguma coisa ou se não estiver claro, envie-me uma mensagem e tentarei ajudar.

    
por Tomas 01.11.2011 / 01:02
0

Eu escrevi um script simples que consertará as coisas usando o udev. Primeiro crie /etc/udev/rules.d/99-monitor-hotplug.rules

É apenas esta linha:

ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", RUN+="/usr/share/X11/touchscreen.sh"

Agora o arquivo /usr/share/X11/touchscreen.sh (marque + 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\""

A última linha aparece uma boa mensagem dizendo o que ela fez. Quando a partir de um terminal, em qualquer ID de usuário, ele funciona muito bem, mas não funciona com o udev! O script em si funciona bem - é apenas a notificação que falha no udev. Ainda nother dbus questão eu acho. Se alguém puder consertar isso - me avise !!

    
por Evan Langlois 06.06.2014 / 18:51