Documentación / Resolución de problemas / Cómo interpretar los informes de entrada táctil

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.
Distinga la entrada táctil de la respuesta de la aplicación

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()

PY

Puede 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.

Si la consola solo devuelve SEND OK

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é buscarQué significa
DispositivoNombre e identificador del dispositivo en Linux. Busque el controlador táctil por nombre.
Contactos activosNúmero de contactos comunicados por un controlador multitáctil compatible. Debe ser cero sin tocar.
Slot / IDIdentifica un contacto, no una posición numerada de pantalla.
X / YPosición comunicada por el sensor. Los porcentajes no son automáticamente píxeles ni distancias desde la izquierda y arriba.
BTN_TOUCHTrue 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

Cómo continuar según el resultado

  • Persisten contactos sin tocar: compare sus posiciones con toques conocidos e inspeccione la zona, el borde o la carcasa. Es una pista, no la confirmación de suciedad o avería.
  • Los contactos coinciden, pero la aplicación no responde: compruebe la orientación y la correspondencia en los ajustes de orientación táctil. Una instantánea correcta no prueba una respuesta correcta de la aplicación.
  • El dispositivo no aparece o falla la lectura: guarde la salida y envíela al proveedor. Puede deberse a permisos, entrada no compatible o conexión; la lista no prueba una avería.
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.

Ejemplo: contactos sin tocar la pantalla

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.

¿No ha encontrado lo que buscaba?
Póngase en contacto con su proveedor de software.