Како да ги читате извештаите за влезните настани од екранот на допир
Вовед и основни насоки
Најпрво проверете дали Linux го гледа уредот за допир. Потоа споредете ги пријавените контакти во две ситуации: кога никој не го допира екранот и кога некој на локацијата намерно допира позната точка. Ова покажува дали контролерот пријавува контакти што не одговараат на реалноста; не ја открива автоматски причината или поправката.
Проверки и решавање проблеми
Далечинската конзола и алатките на Linux може да помогнат да се утврди што се случува со внесот преку допир — од канцеларија или при посета на локацијата. Дијагностиката помага да се проверат претпоставките пред ажурирање на фирмверот, повторна калибрација или замена на слојот за допир, со што може да се избегне непотребна работа. Не ја заменува хардверската проверка.
Започнете со Мониторинг, а потоа поставете конкретно прашање
Најпрво проверете ги временската ознака на најновиот извештај и поврзаните USB-уреди во Мониторинг на уредот. Препознаен контролер не значи дека пријавува правилни допири. Тоа Ви помага да го проверите следнава постапка.
1. Утврдете ги симптомите
- Нема реакција: проверете дали уредот за допир е препознаен и поврзан.
- Реакција на погрешно место: проверете ги ориентацијата и мапирањето на допирот во поставките на уредот.
- Неправилни или несакани реакции: споредете ги пријавените контакти кога никој не го допира екранот и при намерен допир.
- Доцнење: разликувајте задоцнет внес од бавна реакција на апликацијата; една моментална слика на состојбата сама по себе не ја мери латентноста.
Ако далечинско глувче работи, а физичкиот допир не, тоа само по себе не потврдува неисправен панел за допир. Споредете го внесот што го пријавува Linux со реакцијата на апликацијата. Под Wayland, менувањето на поставките XInput можеби нема да влијае врз внесот што го користи плеерот; повторното поставување на истата матрица не е поправка.
2. Проверете што пријавува уредот за допир
Проширете ја командата подолу и извршете ја во далечинската конзола. Таа прави една моментална снимка на состојбата и не менува ништо. Прво уверете се дека никој не го допира екранот и зачувајте го излезот. Потоа повторете додека некој на локацијата допира позната точка. Командата не снима што се случува меѓу тие две читања.
Прикажи команда за еднократна проверка
python3 - <<'PY'
#!/usr/bin/env python3
"""Снимка на состојбата на Linux evdev само за читање. Без ресетирање, преземање на внесот, калибрација или запишување.
Потребни се Python 3, општата ioctl-структура на Linux (на пр. x86/ARM) и дозвола
за читање /dev/input/event*. Контактите од тип B се читаат од состојбата на јадрото.
Необработените оски се пред ротацијата/калибрацијата од композиторот. Повторете за споредба.
"""
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('\nУред:', path, name)
print('Само моментална снимка; координатите се необработени оски на сензорот, а не пиксели на екранот.')
if multi:
count = absinfo(fd, 47)[2] + 1
if not 1 <= count <= 256:
print('Неподдржан број слотови:', 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('Активни контакти:', len(active))
for i in active:
print('Слот', i, 'ID', tracking[i], 'X=', xs[i], position(xs[i], xr),
'Y=', ys[i], position(ys[i], yr))
else:
print('Нема број на контакти од тип B; само состојба на единечен допир.')
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, 'Не може да се прочита овој уред:', error)
finally:
os.close(fd)
if not found:
print('Не е прочитан поддржан кандидат. Ова не докажува хардверски дефект.')
if denied:
print('Одбиен пристап за', denied, 'влезни уреди. Обратете се до овластената поддршка.')
if __name__ == '__main__':
main()
PYИстата проверка може да ја извршите со дијагностичката скрипта за преземање.
Техничка белешка за администратори
За скриптата се потребни Linux, Python 3 и дозвола за читање /dev/input/event*. Не инсталира ништо, не менува калибрација, не исклучува драјвер и не го блокира внесот во други апликации. Списокот може да содржи и други покажувачки уреди; препознајте го правилниот контролер по име. Бројот на контакти можеби нема да биде достапен за неподдржан вид внес. Ако пристапот е одбиен, побарајте помош од добавувачот наместо општо да ги проширувате дозволите за пристап.
Потврдата за испраќање не е излез од командата или доказ за завршување. Ако конзолата престане да враќа резултати, особено откако е запрена апликацијата за прикажување, не го толкувајте молчењето како празен дијагностички наод. Организирајте независна проверка преку овластена сервисна врска или на локацијата. Видете ги и насоките за користење далечинска конзола.
3. Протолкувајте ги контактите и координатите
| Што да барате | Што значи |
|---|---|
Уред | Името и идентификаторот на влезниот уред во Linux. Пронајдете го Вашиот контролер за допир по име. |
Активни контакти | Бројот на тековно пријавени контакти за поддржан контролер со повеќекратен допир. Очекувајте нула кога никој не го допира. |
Slot / ID | Идентификува контакт; не е нумерирана положба на екранот. |
X / Y | Положбата што ја пријавува сензорот. Процентите не се автоматски пиксели или растојанија од левиот и горниот раб. |
BTN_TOUCH | True значи дека се пријавува допир, а False дека не се пријавува, кога уредот ги обезбедува овие информации. |
Илустративен излез, а не мерење од Вашиот уред:
Уред: /dev/input/eventN Примерен контролер за допир Активни контакти: 1 Слот 0 ID 12 X= 600 50.0% Y= 1100 100.0% BTN_TOUCH: True
Техничка белешка за администратори
X и Y се необработени оски на сензорот; процентите ја опишуваат положбата во опсегот што го пријавува драјверот. Не се автоматски пиксели на екранот или растојанија од левиот и горниот раб. Ротацијата, калибрацијата и мапирањето може да го менуваат односот. Споредете познати допири за да утврдите физичка точка. Вредностите не се читаат атомски: повторете ја командата ако контактите се движат.
Контакт што останува пријавен без некој да допира може да ја насочи проверката кон одредено место. Помага да се проверат претпоставките пред ажурирање фирмвер или замена на делови без докази. Не утврдува дека причината е нечистотија, механички притисок, состојба на контролерот или дефект. Нула контакти во еден момент не исклучува повремени проблеми; непрепознаен внес или грешка при читање не докажува хардверски дефект.
При една сервисна проверка, контролерот повеќепати пријавуваше четири активни контакти близу долниот раб и BTN_TOUCH: True кога никој не го допираше екранот. По софтверско ресетирање, контактите се вратија со нови ID. Ова ги потврдува пријавените контакти, а не нивната причина. Нови ID или променето име на датотеката event не докажуваат дека проблемот е решен. Споредете ново читање и проверете ја соодветната област од куќиштето пред да менувате други поставки.
4. Проверете ги површината и куќиштето
Проверете ги површината и рабовите за нечистотија, влага, прицврстени предмети или притисок од куќиштето. Следете ги упатствата на производителот за чистење. Кај врати со фолија за допир, утврдете дали проблемот започнал по сервисирање или промена на положбата.
5. Соодветно обновете ја почетната состојба
Забележете ја состојбата пред и по секоја интервенција. Идентификаторот /dev/input/eventN може да се промени по рестартирање или повторно поврзување. Повторно препознајте го контролерот по име наместо слепо да го користите претходниот број на влезот. Ресетирањето на софтверски драјвер може да го остави контролерот под напојување и не гарантира целосно хардверско ресетирање.
Некои изведби може автоматски да го приспособуваат контролерот за допир при вклучување. Подоцнежно поместување на врата или фолија кај тие уреди може да биде поврзано со лажни контакти. Ова не е универзално: потврдете ја постапката со добавувачот на хардверот.
Прво завршете го сервисирањето, затворете ги вратите и оставете го куќиштето во неговата нормална работна положба. Ако производителот препорачува целосно исклучување на напојувањето, тоа мора да го опфати и контролерот за допир, кој може да се напојува преку USB. Рестартирањето на плеерот можеби нема да го прекине тоа напојување. Овластено лице мора да ја следи предвидената постапка; не го поместувајте куќиштето по повторното вклучување.
Далечинското обновување на USB зависи од поврзувањето и може да исклучи други уреди. Затоа овој водич не дава универзална команда за ресетирање ниту упатство за ажурирање фирмвер.
Поврзани теми и следни чекори
6. Проверете го резултатот и споделете ги наодите
Повторно споредете ја состојбата без допирање со неколку допири на познати места. Испратете ѝ на поддршката име на контролерот, излез, симптоми, ориентација на екранот и последна сервисна интервенција. Наведете дали помогнало целосното исклучување на напојувањето и дали поместувањето на врата влијае врз проблемот. Ако продолжи, организирајте хардверска проверка.
Контактирајте го давателот на софтверот.
