В приложении, которое я пишу, есть поток, который постоянно опрашивает местоположение /dev/input/eventX
для событий касания, поскольку ядро Linux, которое я использую, имеет ограниченную поддержку сенсорных экранов. Из-за этой ограниченной поддержки QT5 не получает никаких событий касания, и мне приходится анализировать необработанные данные о событиях с устройства.
Мой метод работает, но я получаю крайне неточные значения X и Y для точек касания, потому что мне нужно масштабировать координаты в соответствии с разрешением монитора. Например, если я использую утилиту evtest
, я могу увидеть, что текущие максимальные значения X и Y для этого монитора равны (15360, 8640), а разрешение монитора — 1920x1080. Это означает, что мне нужно масштабировать значения X и Y на 0,125, чтобы получить правильные координаты.
Поскольку утилита evtest
может показать мне эти максимальные значения X и Y, я предполагаю, что информацию можно где-то прочитать, но я не могу найти никакой информации о том, где получить эту информацию. Может ли кто-нибудь сказать мне, где я могу найти текущие максимальные значения координат сенсорного экрана? Кроме того, если он не находится в том же месте, где я могу получить разрешение монитора?
evtest
, чтобы увидеть, как он получает нужную информацию? С другой стороны, мне не кажется, что ваше ядро Linux имеет ограниченную поддержку вашего сенсорного экрана, если события видны через/dev/input/eventX
. Это все, что должно делать ядро. Чтобы события были видны черезQT
API, сначала нужно убедиться, чтоX11
читает из/dev/input/eventX
. Я бы рекомендовал не анализировать файл устройства напрямую. Qt может рисовать на другом экране или в другой координате, чем вы ожидаете. - person HAL9000   schedule 25.06.2019xorg.conf
, чтобы вы могли получать доступ к сенсорному экрану через X и QT. Есть много забавных способов облажаться при сопоставлении необработанных событий с qt-виджетами. Например, удаленные рабочие столы, темы пользовательского интерфейса и т. д. И когда вы пишете в неудобных интерфейсах, ваши пользователи и системные администраторы действительно полюбят вас. Вы действительно хотите получить телефонный звонок во время отпуска, потому что кто-то купил новый сенсорный экран, настроил ОС для работы с этим экраном, и ваша программа была единственным, что перестало работать? И что, когда руководство, наконец, решит обновить свой программный стек? - person HAL9000   schedule 25.06.2019