Configurar un monitor táctil cuando trabajas con múltiples pantallas

Recientemente he adquirido una nueva pantalla. Puedes verlo en mi otro post "Trabajar con tres pantallas"

Ubuntu/linux tiene algunos problemas, y uno de ellos es que las entradas de dispositivos táctiles se vinculan a todo el espacio “visible” de todos los monitores. Esto significa que si hago click en una esquina de mi pantalla táctil … en verdad ubuntu interpreta que el click se ha hecho en otra parte de otra pantalla. Esto es un problema, ya que deja inutilizable la utilidad de tener una pantalla táctil si tienes más de un monitor conectado.

Resumen del problema

Resumen, tengo una pantalla táctil, y como las otras dos que tengo conectadas no lo son … ubuntu hace cosas raras, no asigna correctamente el “espacio táctil” a la pantalla correcta.

Solución

Por lo tanto, para aplicar una solución a este problema, la entrada táctil debe asignarse al monitor correcto.

Podemos usar 2 aplicaciones de Linux para enumerar esta información.

1. xinput se usa para enumerar los dispositivos de entrada

2. xrandr se usa para mostrar/establecer el tamaño, la orientación y/o el reflejo de las salidas para una pantalla. También puede configurar el tamaño de la pantalla.

 

xinput

Primero encontramos como se llama la nueva pantalla táctil:

[email protected]:~$ xinput

⎡ Virtual core pointer                          id=2    [master pointer  (3)]

⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]

⎜   ↳ ITE Tech. Inc. ITE Device(8910) Consumer Control  id=10   [slave  pointer  (2)]

⎜   ↳ Corsai Corsair Gaming K95 RGB PLATINUM Keyboard Consumer Control  id=20   [slave  pointer  (2)]

⎜   ↳ SYNA7DB5:01 06CB:CD5F Touchpad            id=26   [slave  pointer  (2)]

⎜   ↳ Gaming KB  Gaming KB  Consumer Control    id=17   [slave  pointer  (2)]

⎜   ↳ Kensington Slimblade Trackball            id=30   [slave  pointer  (2)]

⎜   ↳ eGalax Inc. eGalaxTouch EXC3200-2505-09.00.00.00  id=19   [slave  pointer  (2)]

.
.
.

Puedes asegurarte del nombre del dispositivo de entrada desconectandolo y volviendolo a conectar. Luego, anotas el valor de id del dispositivo.

En este caso, nuestro sistema de destino es:

eGalax Inc. eGalaxTouch EXC3200-2505-09.00.00.00  id=19   [slave  pointer  (2)]

La parte que interesa es “id = 19”

 

xrandr

Ahora lo que nos falta es saber como se llama el monitor/pantalla donde estamos viendo las cosas:

[email protected]:~$ xrandr

Screen 0: minimum 8 x 8, current 4480 x 2160, maximum 32767 x 32767

DP-0 connected 1920x1080+320+1080 (normal left inverted right x axis y axis) 344mm x 194mm

  1920x1080     60.00*+  59.94   
.
.
.

DP-1 disconnected (normal left inverted right x axis y axis)

HDMI-0 connected 2560x1080+0+0 (normal left inverted right x axis y axis) 673mm x 284mm

  2560x1080     60.00*+
.
.
.
eDP-1-1 connected primary 1920x1080+2560+0 (normal left inverted right x axis y axis) 344mm x 194mm

  1920x1080    144.00*+  60.01    59.97    59.96    59.93   

.
.
.

El nombre de la interfaz de salida es el primer valor informado en cada sección de la salida de xrandr.

En mi caso usaremos DP-0 que es la pantalla que quiero usar como táctil.

Por lo tanto, el mapeo de la entrada táctil al monitor correcto se puede hacer usando este comando, donde básicamente le decimos los dos ids que estan relacionados:

xinput map-to-output 19 DP-0

Se puede seguir la misma estrategia si tienes más de 2 monitores.

Este comando no es persistente y debe ejecutarse cada vez que se reinicia o bloquea la PC.

Por lo tanto, podría agregarse a un script ejecutable y ejecutarse cada vez que inicie sesión en el sistema.

echo "xinput map-to-output 19 DP-0" > /usr/local/bin/align_touchinput
chmod +x /usr/local/bin/align_touchinput
cat << EOF > ~/.config/autostart/align_touchinput.desktop
[Desktop Entry]
Categories=System;Input;Touch
Comment=align touch input
Exec=/usr/local/bin/align_touchinput
Name=align_touchinput
Type=Application
EOF