Cómo interpretar los informes de entrada táctil
Introducción y orientación
Compruebe primero si Linux detecta el dispositivo táctil. Compare los contactos sin tocar la pantalla y al tocar deliberadamente un punto conocido en el lugar. Así sabrá si el controlador comunica contactos que no coinciden con la realidad, sin identificar automáticamente la causa o la reparación.
Comprobaciones y resolución de problemas
La consola remota y las herramientas Linux ayudan a observar la entrada táctil desde la oficina o durante una visita. El diagnóstico comprueba hipótesis antes de actualizar firmware, recalibrar o sustituir la capa, evitando trabajo innecesario. No sustituye la inspección del hardware.
Empiece por la monitorización y plantee una pregunta concreta
Compruebe primero la fecha del último informe y los dispositivos USB conectados en monitorización del dispositivo. Reconocer el controlador no significa que comunique toques correctos. La siguiente comprobación permite verificarlo.
1. Identifique los síntomas
- Sin respuesta: compruebe si se detecta y conecta el dispositivo táctil.
- Respuesta en otro punto: compruebe la orientación y la correspondencia táctil en los ajustes.
- Respuestas irregulares o espontáneas: compare contactos sin tocar y durante un toque deliberado.
- Retraso: distinga una entrada tardía de una aplicación lenta; una instantánea no mide latencia.
Que funcione un ratón remoto pero no el tacto no confirma un panel averiado. Compare la entrada de Linux con la respuesta de la aplicación. En Wayland, cambiar XInput puede no afectar a la entrada del reproductor; aplicar la misma matriz otra vez no es una reparación.
2. Compruebe qué comunica el dispositivo táctil
Despliegue el comando y ejecútelo en la consola. Toma una instantánea sin modificar nada. Primero asegúrese de que nadie toca y guarde la salida. Repita después mientras alguien toca un punto conocido en el lugar. El comando no registra lo ocurrido entre ambas lecturas.
Mostrar el comando de comprobación puntual
python3 - <<'PY'
#!/usr/bin/env python3
"""Instantánea Linux evdev de solo lectura. Sin restablecer, capturar en exclusiva, calibrar ni escribir.
Requiere Python 3, el formato ioctl genérico de Linux (p. ej., x86/ARM) y permiso
para leer /dev/input/event*. Los contactos de tipo B se consultan al núcleo.
Ejes brutos anteriores a la rotación/calibración del compositor. Repita para comparar.
"""
import array
import fcntl
import glob
import os
def query(fd, number, size, initial=None):
data = bytearray(size) if initial is None else bytearray(initial)
fcntl.ioctl(fd, (2 << 30) | (size << 16) | (ord('E') << 8) | number, data, True)
return data
def absinfo(fd, code):
a = array.array('i')
a.frombytes(query(fd, 0x40 + code, 24))
return a
def slots(fd, code, count):
a = array.array('i', [code] + [0] * count)
data = query(fd, 0x0a, len(a) * a.itemsize, a.tobytes())
result = array.array('i'); result.frombytes(data)
return result[1:]
def position(value, limits):
lo, hi = limits[1], limits[2]
return 'n/a' if hi <= lo else '{:.1f}%'.format(100 * (value - lo) / (hi - lo))
def main():
found = denied = 0
for path in sorted(glob.glob('/dev/input/event*')):
try:
fd = os.open(path, os.O_RDONLY | os.O_NONBLOCK)
except PermissionError:
denied += 1; continue
except OSError as error:
print(path, error); continue
try:
bits = query(fd, 0x20 + 3, 64)
has = lambda code: bool(bits[code // 8] & (1 << (code % 8)))
keys = query(fd, 0x20 + 1, 96)
touch_supported = bool(keys[330 // 8] & (1 << (330 % 8)))
multi = has(47) and has(57) and has(53) and has(54)
if not multi and not (touch_supported and has(0) and has(1)):
continue
found += 1
name = query(fd, 0x06, 256).split(b'\0', 1)[0].decode(errors='replace')
print('\nDispositivo:', path, name)
print('Solo instantánea; las coordenadas son ejes brutos del sensor, no píxeles de pantalla.')
if multi:
count = absinfo(fd, 47)[2] + 1
if not 1 <= count <= 256:
print('Número de slots no compatible:', count); continue
tracking = slots(fd, 57, count)
xs, ys = slots(fd, 53, count), slots(fd, 54, count)
xr, yr = absinfo(fd, 53), absinfo(fd, 54)
active = [i for i, value in enumerate(tracking) if value >= 0]
print('Contactos activos:', len(active))
for i in active:
print('Slot', i, 'ID', tracking[i], 'X=', xs[i], position(xs[i], xr),
'Y=', ys[i], position(ys[i], yr))
else:
print('Sin recuento de tipo B; solo estado de un toque.')
x, y = absinfo(fd, 0), absinfo(fd, 1)
print('X=', x[0], position(x[0], x), 'Y=', y[0], position(y[0], y))
if touch_supported:
state = query(fd, 0x18, 96)
print('BTN_TOUCH:', bool(state[330 // 8] & (1 << (330 % 8))))
except OSError as error:
print(path, 'No se puede leer este dispositivo:', error)
finally:
os.close(fd)
if not found:
print('No se ha leído ningún dispositivo compatible. Esto no prueba un fallo de hardware.')
if denied:
print('Acceso denegado para', denied, 'dispositivo(s) de entrada. Contacte con el soporte autorizado.')
if __name__ == '__main__':
main()
PYPuede realizar la misma comprobación con el script de diagnóstico descargable.
Nota técnica para administradores
El script requiere Linux, Python 3 y permiso para leer /dev/input/event*. No instala nada, cambia calibraciones, desconecta controladores ni bloquea otras aplicaciones. La lista puede incluir otros dispositivos apuntadores; identifique el controlador por nombre. El recuento puede no estar disponible en tipos no compatibles. Si se deniega el acceso, pida ayuda en lugar de cambiar permisos indiscriminadamente.
Confirmar el envío no es una salida ni una prueba de finalización. Si la consola deja de responder, especialmente tras detener la aplicación de visualización, no interprete el silencio como un resultado vacío. Organice una comprobación independiente mediante acceso autorizado o en el lugar. Consulte también las indicaciones de uso de la consola.
3. Interprete contactos y coordenadas
| Qué buscar | Qué significa |
|---|---|
Dispositivo | Nombre e identificador del dispositivo en Linux. Busque el controlador táctil por nombre. |
Contactos activos | Número de contactos comunicados por un controlador multitáctil compatible. Debe ser cero sin tocar. |
Slot / ID | Identifica un contacto, no una posición numerada de pantalla. |
X / Y | Posición comunicada por el sensor. Los porcentajes no son automáticamente píxeles ni distancias desde la izquierda y arriba. |
BTN_TOUCH | True indica un toque comunicado y False que no lo hay, si el dispositivo proporciona el dato. |
Salida ilustrativa, no una medición de su dispositivo:
Dispositivo: /dev/input/eventN Controlador táctil de ejemplo Contactos activos: 1 Slot 0 ID 12 X= 600 50.0% Y= 1100 100.0% BTN_TOUCH: True
Nota técnica para administradores
X e Y son ejes brutos del sensor; los porcentajes indican la posición en el rango del controlador. No son automáticamente píxeles ni distancias desde la izquierda y arriba. Rotación, calibración y correspondencia pueden cambiar la relación. Compare toques conocidos para localizar un punto físico. La lectura no es atómica: repita si se mueven los contactos.
Un contacto persistente sin tocar puede orientar la inspección a un punto y comprobar hipótesis antes de actualizar firmware o sustituir piezas sin pruebas. No determina que la causa sea suciedad, presión, estado del controlador o avería. Cero contactos en un instante no excluye problemas intermitentes; una entrada no detectada o un error no prueban un fallo de hardware.
En una revisión, el controlador comunicaba cuatro contactos cerca del borde inferior y BTN_TOUCH: True sin tocar. Tras un restablecimiento por software volvieron con nuevos ID. Esto confirma los contactos, no su causa. Nuevos ID u otro archivo event no prueban la resolución. Compare otra lectura e inspeccione la zona de la carcasa antes de cambiar más ajustes.
4. Inspeccione la superficie y la carcasa
Inspeccione superficie y bordes por suciedad, humedad, objetos adheridos o presión de la carcasa. Siga las instrucciones de limpieza del fabricante. En puertas con lámina táctil, determine si empezó tras mantenimiento o un cambio de posición.
5. Restablezca adecuadamente el estado inicial
Registre el estado antes y después de cada intervención. El identificador /dev/input/eventN puede cambiar al reiniciar o reconectar. Identifique de nuevo el controlador por nombre, sin reutilizar a ciegas el número anterior. Restablecer un controlador por software puede mantener la alimentación y no garantiza un reinicio completo del hardware.
Algunos diseños adaptan automáticamente el controlador al encender. Mover después una puerta o lámina puede estar asociado a contactos falsos. No es universal: confirme el procedimiento con el proveedor de hardware.
Termine el mantenimiento, cierre las puertas y deje la carcasa en su posición normal. Si el fabricante recomienda cortar completamente la alimentación, incluya el controlador táctil, que puede alimentarse por USB. Reiniciar el reproductor puede no interrumpirla. Una persona autorizada debe seguir el procedimiento previsto; no mueva la carcasa después de encender.
La recuperación remota de USB depende del cableado y puede desconectar otros dispositivos. Por eso, esta guía no ofrece un comando universal de restablecimiento ni una instrucción para actualizar firmware.
Temas relacionados y siguientes pasos
6. Compruebe el resultado y comparta los hallazgos
Compare de nuevo el estado sin tocar con varios toques conocidos. Envíe al soporte el nombre del controlador, salida, síntomas, orientación y última intervención. Indique si ayudó cortar toda la alimentación y si mover una puerta afecta al problema. Organice una inspección de hardware si persiste.
← Volver a la resolución de problemas
Póngase en contacto con su proveedor de software.
