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.
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()
PYPode 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.
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 procurar | O que significa |
|---|---|
Dispositivo | Nome e identificador do dispositivo no Linux. Identifique o controlador tátil pelo nome. |
Contactos ativos | Número de contactos comunicados por um controlador multitoque suportado. Deve ser zero sem tocar. |
Slot / ID | Identifica um contacto, não uma posição numerada no ecrã. |
X / Y | Posição comunicada pelo sensor. As percentagens não são automaticamente píxeis nem distâncias a partir da esquerda e de cima. |
BTN_TOUCH | True 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
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.
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.
← Voltar à resolução de problemas
Contacte o seu fornecedor de software.
