Documentação / Resolução de problemas / Como interpretar os relatórios de entrada tátil

Como interpretar os relatórios de entrada tátil

Introdução e orientação

Verifique primeiro se o Linux deteta o dispositivo tátil. Compare os contactos sem tocar no ecrã e ao tocar deliberadamente num ponto conhecido no local. Isto mostra se o controlador comunica contactos que não correspondem à realidade, sem identificar automaticamente a causa ou a reparação.

Verificações e resolução de problemas

A consola remota e as ferramentas Linux ajudam a observar a entrada tátil a partir do escritório ou no local. O diagnóstico testa hipóteses antes de atualizar firmware, recalibrar ou substituir a camada, evitando trabalho desnecessário. Não substitui a inspeção do hardware.

Comece pela monitorização e coloque uma questão específica

Verifique primeiro a data do último relatório e os dispositivos USB ligados em monitorização do dispositivo. Um controlador reconhecido não comunica necessariamente toques corretos. A verificação seguinte permite confirmá-lo.

1. Identifique os sintomas

  • Sem resposta: verifique se o dispositivo tátil é detetado e está ligado.
  • Resposta no ponto errado: verifique a orientação e o mapeamento tátil nas definições.
  • Respostas irregulares ou espontâneas: compare contactos sem tocar e durante um toque deliberado.
  • Atraso: distinga uma entrada atrasada de uma aplicação lenta; uma leitura pontual não mede a latência.
Distinga a entrada tátil da resposta da aplicação

Um rato remoto funcionar, mas o toque não, não confirma um painel avariado. Compare a entrada do Linux com a resposta da aplicação. Em Wayland, alterar XInput pode não afetar a entrada do leitor; aplicar novamente a mesma matriz não é uma reparação.

2. Verifique o que comunica o dispositivo tátil

Expanda o comando e execute-o na consola. Faz uma leitura pontual sem alterar nada. Primeiro confirme que ninguém toca e guarde o resultado. Repita depois com alguém a tocar num ponto conhecido no local. O comando não regista o que acontece entre as duas leituras.

Mostrar o comando de verificação pontual
python3 - <<'PY'
#!/usr/bin/env python3
"""Leitura pontual Linux evdev apenas de leitura. Sem reposição, captura exclusiva, calibração ou escrita.

Exige Python 3, o formato ioctl genérico do Linux (por ex., x86/ARM) e permissão
para ler /dev/input/event*. Os contactos de tipo B são obtidos do estado do kernel.
Eixos brutos antes da rotação/calibração do 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('Apenas leitura pontual; as coordenadas são eixos brutos do sensor, não píxeis do ecrã.')
            if multi:
                count = absinfo(fd, 47)[2] + 1
                if not 1 <= count <= 256:
                    print('Número de slots não suportado:', 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 ativos:', 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('Sem contagem de tipo B; apenas estado de toque único.')
                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, 'Não é possível ler este dispositivo:', error)
        finally:
            os.close(fd)
    if not found:
        print('Não foi lido nenhum dispositivo suportado. Isto não prova uma avaria do hardware.')
    if denied:
        print('Acesso recusado para', denied, 'dispositivo(s) de entrada. Contacte o suporte autorizado.')

if __name__ == '__main__':
    main()

PY

Pode efetuar a mesma verificação com o script de diagnóstico para transferência.

Nota técnica para administradores

O script exige Linux, Python 3 e permissão para ler /dev/input/event*. Não instala nada, altera calibrações, desliga controladores nem bloqueia outras aplicações. A lista pode incluir outros dispositivos apontadores; identifique o controlador pelo nome. A contagem pode não estar disponível em tipos não suportados. Se o acesso for recusado, peça ajuda em vez de alterar permissões indiscriminadamente.

Se a consola devolver apenas SEND OK

Uma confirmação de envio não é um resultado nem prova de conclusão. Se a consola deixar de responder, sobretudo após parar a aplicação de apresentação, não interprete o silêncio como um diagnóstico vazio. Combine uma verificação independente através de acesso autorizado ou no local. Consulte também as orientações de utilização da consola.

3. Interprete contactos e coordenadas

O que procurarO que significa
DispositivoNome e identificador do dispositivo no Linux. Identifique o controlador tátil pelo nome.
Contactos ativosNúmero de contactos comunicados por um controlador multitoque suportado. Deve ser zero sem tocar.
Slot / IDIdentifica um contacto, não uma posição numerada no ecrã.
X / YPosição comunicada pelo sensor. As percentagens não são automaticamente píxeis nem distâncias a partir da esquerda e de cima.
BTN_TOUCHTrue indica um toque comunicado e False a ausência, se o dispositivo fornecer esta informação.

Resultado ilustrativo, não uma medição do seu dispositivo:

Dispositivo: /dev/input/eventN Controlador tátil de exemplo
Contactos ativos: 1
Slot 0 ID 12 X= 600 50.0% Y= 1100 100.0%
BTN_TOUCH: True

Como avançar a partir do resultado

  • Persistem contactos sem tocar: compare as posições com toques conhecidos e inspecione a área, o limite ou a caixa. É uma pista, não confirmação de sujidade ou avaria.
  • Os contactos correspondem aos toques, mas a aplicação não responde: verifique a orientação e o mapeamento nas definições de orientação tátil. Uma leitura correta não comprova uma resposta correta da aplicação.
  • O dispositivo não aparece ou a leitura falha: guarde o resultado e envie ao fornecedor. Podem estar envolvidos permissões, entrada não suportada ou ligação; a lista não prova uma avaria.
Nota técnica para administradores

X e Y são eixos brutos do sensor; as percentagens indicam a posição no intervalo do controlador. Não são automaticamente píxeis nem distâncias a partir da esquerda e de cima. Rotação, calibração e mapeamento podem alterar a relação. Compare toques conhecidos para localizar um ponto físico. A leitura não é atómica: repita se os contactos se moverem.

Um contacto persistente sem tocar pode orientar a inspeção para um ponto e testar hipóteses antes de atualizar firmware ou substituir peças sem provas. Não estabelece que a causa seja sujidade, pressão, estado do controlador ou avaria. Zero contactos num instante não exclui problemas intermitentes; uma entrada não detetada ou um erro não provam falha do hardware.

Exemplo: contactos sem tocar no ecrã

Numa verificação, o controlador comunicava quatro contactos junto ao limite inferior e BTN_TOUCH: True sem tocar. Após uma reposição por software regressaram com novos ID. Isto confirma os contactos, não a causa. Novos ID ou outro ficheiro event não provam a resolução. Compare uma nova leitura e inspecione a zona da caixa antes de alterar mais definições.

4. Inspecione a superfície e a caixa

Inspecione a superfície e os limites quanto a sujidade, humidade, objetos presos ou pressão da caixa. Siga as instruções de limpeza do fabricante. Em portas com película tátil, determine se começou após manutenção ou mudança de posição.

5. Restabeleça adequadamente o estado inicial

Registe o estado antes e depois de cada intervenção. O identificador /dev/input/eventN pode mudar após reiniciar ou voltar a ligar. Identifique novamente o controlador pelo nome, sem reutilizar cegamente o número anterior. Uma reposição por software pode manter a alimentação e não garante uma reposição completa do hardware.

Alguns desenhos adaptam automaticamente o controlador ao ligar. Mover depois uma porta ou película pode estar associado a falsos contactos. Não é universal: confirme o procedimento com o fornecedor de hardware.

Termine a manutenção, feche as portas e deixe a caixa na posição normal. Se o fabricante recomendar desligar totalmente a alimentação, inclua o controlador tátil, que pode ser alimentado por USB. Reiniciar o leitor pode não cortar essa alimentação. Uma pessoa autorizada deve seguir o procedimento previsto; não mova a caixa depois de ligar.

A recuperação remota de USB depende da cablagem e pode desligar outros dispositivos. Por isso, este guia não fornece um comando universal de reposição nem uma instrução para atualizar firmware.

Temas relacionados e passos seguintes

6. Verifique o resultado e partilhe as observações

Compare novamente o estado sem tocar com vários toques conhecidos. Envie ao suporte o nome do controlador, resultado, sintomas, orientação e última intervenção. Indique se desligar totalmente a alimentação ajudou e se mover uma porta afeta o problema. Combine uma inspeção do hardware se persistir.

Não encontrou o que procurava?
Contacte o seu fornecedor de software.