Dokumentacija / Rješavanje problema / Kako provjeriti što prijavljuje dodirni zaslon

Kako provjeriti što prijavljuje dodirni zaslon

Uvod i orijentacija

Najprije provjerite vidi li Linux dodirni uređaj. Zatim usporedite prijavljene kontakte kada nitko ne dodiruje zaslon i kada osoba na lokaciji svjesno dodirne poznatu točku. Tako ćete vidjeti prijavljuje li kontroler kontakte koji ne odgovaraju stvarnosti; time ne utvrđujete automatski uzrok ni način popravka.

Provjera i rješavanje problema

Udaljena konzola i alati Linuxa mogu pomoći otkriti što se događa s dodirom — iz ureda ili tijekom pregleda na lokaciji. Dijagnostika pomaže provjeriti pretpostavke prije ažuriranja firmvera, promjene kalibracije ili zamjene dodirnog sloja i može spriječiti nepotreban zahvat. Ne zamjenjuje pregled hardvera.

Počnite nadzorom, zatim postavite konkretno pitanje

Najprije u nadzoru uređaja provjerite vrijeme posljednjeg izvještaja i priključene USB uređaje. Prepoznat kontroler još ne znači da prijavljuje ispravne dodire. To ćete provjeriti u nastavku.

1. Razlikujte simptome

  • Nema reakcije: provjerite prepoznavanje i povezanost dodirnog uređaja.
  • Reakcija na pogrešnom mjestu: provjerite orijentaciju i mapiranje dodira u postavkama uređaja.
  • Nepravilne ili samovoljne reakcije: usporedite prijavljene kontakte bez dodirivanja i pri namjernom dodiru.
  • Kašnjenje: razlikujte zakašnjeli ulaz od spore reakcije aplikacije; jednokratno očitanje stanja ne mjeri kašnjenje.
Razlikujte dodirni ulaz od reakcije aplikacije

Ako udaljeni miš radi, a fizički dodir ne, to samo po sebi ne potvrđuje kvar dodirne površine. Usporedite ulaz koji prijavljuje Linux s reakcijom aplikacije. U okruženju Wayland promjena postavki XInputa ne mora utjecati na ulaz koji koristi reproduktor; ponovno postavljanje iste matrice nije popravak.

2. Provjerite što prijavljuje dodirni uređaj

Proširite naredbu u nastavku i pokrenite je u udaljenoj konzoli. Ispisuje jednokratni snimak stanja i ništa ne mijenja. Najprije osigurajte da nitko ne dodiruje zaslon i spremite izlaz. Zatim ponovite uz dodir osobe na lokaciji na poznatoj točki. Naredba ne bilježi događaje između tih dvaju očitanja.

Prikaži naredbu za jednokratnu provjeru
python3 - <<'PY'
#!/usr/bin/env python3
"""Read-only Linux evdev snapshot. No reset, grab, calibration or writes.

Requires Python 3, Linux generic ioctl layout (e.g. x86/ARM) and permission
to read /dev/input/event*. Type-B contacts are queried from kernel state.
Raw axes precede compositor rotation/calibration. Run again to compare.
"""
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('\nDevice:', path, name)
            print('Snapshot only; coordinates are raw sensor axes, not screen pixels.')
            if multi:
                count = absinfo(fd, 47)[2] + 1
                if not 1 <= count <= 256:
                    print('Unsupported slot count:', 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('Active contacts:', 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('No type-B contact count; single-touch state only.')
                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, 'Cannot read this device:', error)
        finally:
            os.close(fd)
    if not found:
        print('No supported candidate read. This does not prove hardware failure.')
    if denied:
        print('Permission denied for', denied, 'input device(s). Contact authorised support.')

if __name__ == '__main__':
    main()

PY

Istu provjeru možete pokrenuti i pomoću dijagnostičke skripte za preuzimanje.

Tehnička napomena za administratore

Skripta zahtijeva Linux, Python 3 i ovlast za čitanje /dev/input/event*. Ništa ne instalira, ne mijenja kalibraciju, ne odspaja upravljački program i ne blokira ulaz drugim aplikacijama. Ispis može sadržavati i druge pokazivačke ulaze; ispravan kontroler odredite prema nazivu. Za nepodržanu vrstu ulaza broj kontakata možda nije dostupan. Ako nedostaje ovlast, zatražite pomoć pružatelja softvera umjesto promjene pristupnih dozvola za sve uređaje.

Ako konzola vraća samo SEND OK

Potvrda slanja nije izlaz naredbe niti dokaz da je izvršena. Ako konzola prestane vraćati rezultate, osobito nakon zaustavljanja aplikacije za prikaz, izostanak odgovora nemojte tumačiti kao prazan dijagnostički nalaz. Osigurajte neovisnu provjeru putem zasebnog odobrenog servisnog pristupa ili na lokaciji. Pogledajte i upute za korištenje udaljene konzole.

3. Protumačite kontakte i koordinate

Što potražiti u ispisuŠto to znači
DeviceNaziv i oznaka ulaznog uređaja u Linuxu. Pronađite svoj dodirni kontroler prema nazivu.
Active contactsBroj trenutačno prijavljenih kontakata za podržani višedodirni kontroler. Bez dodira očekujete nulu.
Slot / IDOznaka pojedinog kontakta; nije broj mjesta na zaslonu.
X / YPoložaj koji prijavljuje senzor. Postoci nisu automatski pikseli ni udaljenosti slijeva i odozgo.
BTN_TOUCHTrue znači prijavljen dodir, a False da nije prijavljen, ako uređaj pruža taj podatak.

Primjer ispisa, a ne mjerenje s vašeg uređaja:

Device: /dev/input/eventN Example touch controller
Active contacts: 1
Slot 0 ID 12 X= 600 50.0% Y= 1100 100.0%
BTN_TOUCH: True

Kako nastaviti prema rezultatu

  • Kontakti ostaju prijavljeni kada nitko ne dodiruje zaslon: usporedite njihov položaj s poznatim dodirima i pregledajte odgovarajuće mjesto, rub ili konstrukciju. To je trag za pregled, a ne potvrda nečistoće ili kvara.
  • Kontakti odgovaraju stvarnim dodirima, ali aplikacija ne reagira: provjerite orijentaciju i mapiranje u postavkama orijentacije dodirnog sloja. Ispravan snimak ulaza sam ne potvrđuje ispravnu reakciju aplikacije.
  • Uređaj nije naveden ili očitanje završava pogreškom: spremite izlaz i pošaljite ga pružatelju softvera. Razlog mogu biti ovlasti, nepodržani ulaz ili veza; ispis sam ne dokazuje kvar.
Tehnička napomena za administratore

X i Y su sirove osi senzora; postoci označavaju položaj unutar raspona koji prijavljuje upravljački program. To nisu automatski pikseli zaslona ni udaljenosti slijeva i odozgo. Rotacija, kalibracija i mapiranje mogu promijeniti odnos. Za pronalaženje fizičkog mjesta usporedite poznate dodire. Vrijednosti se ne čitaju istodobno: ponovite naredbu ako se kontakti pomiču.

Kontakt koji ostaje prijavljen bez dodirivanja može usmjeriti pregled na određeno mjesto. Pomaže provjeriti pretpostavke prije ažuriranja ili zamjene dijelova bez dokaza. Sam ne potvrđuje nečistoću, mehanički pritisak, stanje kontrolera ni kvar. Nula kontakata u jednom trenutku ne isključuje povremeni problem; neprepoznat ulaz ili pogreška čitanja ne dokazuju kvar hardvera.

Primjer: kontakti se prijavljuju i bez dodira

Tijekom jedne servisne provjere kontroler je bez dodirivanja opetovano prijavljivao četiri aktivna kontakta uz donji rub i BTN_TOUCH: True. Nakon softverskog ponovnog pokretanja kontakti su se vratili s novim ID-ovima. To potvrđuje prijavljene kontakte, ali ne i njihov uzrok. Novi ID-ovi ili promjena naziva event datoteke ne dokazuju da je problem riješen. Prije daljnjih promjena postavki usporedite novo očitanje i pregledajte odgovarajuće mjesto na konstrukciji.

4. Pregledajte površinu i kućište

Pregledajte površinu i rubove: nečistoću, vlagu, zalijepljene predmete ili pritisak kućišta. Čistite prema uputama proizvođača. Kod vrata s dodirnom folijom utvrdite je li problem počeo nakon servisa ili promjene položaja.

5. Primjereno obnovite početno stanje

Zabilježite stanje prije i nakon zahvata. Oznaka /dev/input/eventN može se promijeniti nakon ponovnog pokretanja ili spajanja. Ponovno pronađite kontroler prema nazivu; nemojte naslijepo koristiti prethodni broj ulaza. Ponovno pokretanje softverskog upravljačkog programa ne mora prekinuti napajanje kontrolera i ne jamči njegovo potpuno ponovno pokretanje.

Neke izvedbe mogu automatski prilagođavati dodirni kontroler pri uključivanju. Pomicanje vrata ili folije nakon toga kod tih uređaja može biti povezano s lažnim kontaktima. To nije univerzalno svojstvo: postupak potvrdite s dobavljačem hardvera.

Najprije dovršite servis, zatvorite vrata i ostavite kućište u uobičajenom radnom položaju. Ako proizvođač preporučuje potpuno isključivanje napajanja, ono mora obuhvatiti i dodirni kontroler, koji se može napajati USB-om. Ponovno pokretanje reproduktora možda neće prekinuti to napajanje. Ovlaštena osoba mora slijediti predviđeni postupak; nakon uključivanja nemojte pomicati konstrukciju.

Udaljena obnova USB veze ovisi o spoju i može odspojiti i druge uređaje. Zato ovaj vodič ne sadrži univerzalnu naredbu za ponovno postavljanje ni uputu za ažuriranje firmvera.

Povezane teme i sljedeći koraci

6. Provjerite rezultat i predajte nalaze

Ponovno usporedite stanje bez dodirivanja i nekoliko dodira na poznatim mjestima. Podršci pošaljite naziv kontrolera, ispis, simptome, orijentaciju zaslona i posljednji servisni zahvat. Navedite je li potpuno isključivanje napajanja pomoglo i utječe li pomicanje vrata na problem. Ako problem ostane, dogovorite pregled hardvera.

Niste pronašli ono što ste tražili?
Obratite se svojem pružatelju softvera.