Dokumentacija / Rješavanje problema / Kako provjeriti šta prijavljuje dodirni ekran

Kako provjeriti šta prijavljuje dodirni ekran

Uvod i orijentacija

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

Provjera i rješavanje problema

Udaljena konzola i alati Linuxa mogu pomoći otkriti šta se dešava s dodirom — iz kancelarije ili tokom 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 monitoringom, zatim postavite konkretno pitanje

Najprije u monitoringu 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: uporedite 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. Uporedite ulaz koji prijavljuje Linux s reakcijom aplikacije. U okruženju Wayland promjena postavki XInputa ne mora utjecati na ulaz koji koristi plejer; ponovno postavljanje iste matrice nije popravak.

2. Provjerite šta 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 niko ne dodiruje ekran i sačuvajte izlaz. Zatim ponovite uz dodir osobe na lokaciji na poznatoj tački. Naredba ne bilježi događaje između ta dva 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 ovlasti 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 nedostaju ovlasti, 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, posebno nakon zaustavljanja aplikacije za prikaz, izostanak odgovora nemojte tumačiti kao prazan dijagnostički nalaz. Osigurajte nezavisnu provjeru putem zasebnog odobrenog servisnog pristupa ili na lokaciji. Pogledajte i upute za korištenje udaljene konzole.

3. Protumačite kontakte i koordinate

Šta potražiti u ispisuŠta to znači
DeviceNaziv i oznaka ulaznog uređaja u Linuxu. Pronađite svoj dodirni kontroler prema nazivu.
Active contactsBroj trenutno prijavljenih kontakata za podržani višedodirni kontroler. Bez dodira očekujete nulu.
Slot / IDOznaka pojedinog kontakta; nije broj mjesta na ekranu.
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 niko ne dodiruje ekran: uporedite 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 greškom: sačuvajte 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 ose senzora; procenti označavaju položaj unutar raspona koji prijavljuje upravljački program. To nisu automatski pikseli ekrana ni udaljenosti slijeva i odozgo. Rotacija, kalibracija i mapiranje mogu promijeniti odnos. Za pronalaženje fizičkog mjesta uporedite poznate dodire. Vrijednosti se ne čitaju istovremeno: ponovite naredbu ako se kontakti pomjeraju.

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 greška čitanja ne dokazuju kvar hardvera.

Primjer: kontakti se prijavljuju i bez dodira

Tokom jedne servisne provjere kontroler je bez dodirivanja više puta 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 uporedite 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 povezivanja. Ponovo pronađite kontroler prema nazivu; nemojte naslijepo koristiti prethodni broj ulaza. Ponovno pokretanje softverskog upravljačkog programa ne mora prekinuti napajanje kontrolera i ne garantuje njegovo potpuno ponovno pokretanje.

Neke izvedbe mogu automatski prilagođavati dodirni kontroler pri uključivanju. Pomjeranje 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.

Prvo 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 plejera možda neće prekinuti to napajanje. Ovlaštena osoba mora slijediti predviđeni postupak; nakon uključivanja nemojte pomjerati konstrukciju.

Udaljena obnova USB veze zavisi od spoja i može odspojiti i druge uređaje. Zato ovaj vodič ne sadrži univerzalnu naredbu za resetovanje ni uputu za ažuriranje firmvera.

Povezane teme i naredni koraci

6. Provjerite rezultat i predajte nalaze

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

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