Эмуляция тачпада

У меня Surface Pro с поломанной половиной сенсорного экрана. Короче говоря, могу ли я создать виртуальную сенсорную панель, например виртуальную клавиатуру (onboard), чтобы я мог использовать планшет один?

1
задан 3 July 2018 в 11:33

1 ответ

Резюме

Чтобы ответить на вопрос «есть ли способ», я бы сказал, что мое предположение заключается в том, что да, это теоретически возможно , Но детали того, как это сделать, - вопрос для пользователей более продвинутых, чем я. Я также предполагаю, что решение не будет очень практичным (как в реализации, так и в использовании) и что будет более эффективно ремонтировать / заменять сенсорный экран.

Объяснение

Сказав это, вот почему я говорю, что это возможно.

Одним из свойств устройства является «Матрица преобразования координат», которую вы можете увидеть и изменить с помощью xinput. Эта матрица сопоставляет физические датчики сенсорного экрана с местоположениями экрана системы отображения. При нормальной работе эта матрица является единичной матрицей , поэтому сопоставление является взаимно-однозначным (т. Е. При касании экрана происходит регистрация действия на дисплее). Эта матрица используется, например, при повороте экрана: вместе с вращающимся выводом на дисплей матрица изменяется на соответствующую матрицу вращения, так что вывод на дисплей по-прежнему совпадает с тем, где вы физически касаетесь экрана.

Это означает, что вы также должны иметь возможность определить более общую матрицу преобразования, которая отображает небольшую прямоугольную область на физическом экране на весь экран.

Таким образом, должна быть возможность написать программу в вашем графическом интерфейсе, которая открывает маленькое прямоугольное окно (оно всегда сверху, поэтому оно не исчезнет, ​​когда вы щелкаете где-то еще) и в то же время запускается xinput соответственно обновить матрицу преобразования координат, чтобы она отображала сенсоры сенсорного экрана в этой прямоугольной области на весь вывод изображения.

1112 Чтобы было ясно, то, что я описал выше, означает, что оно не будет работать точно так же, как тачпад. На сенсорной панели, если вы положите палец вниз и перетащите его вверх, курсор переместится вверх; если вы снова дотронетесь до дна и перетащите его вверх, курсор продолжит двигаться от того места, куда он должен был пойти дальше (то есть он перемещается относительно точки контакта). На виртуальной сенсорной панели, которую я описал, если вы дотронетесь до нижней части, курсор перейдет к соответствующей части в нижней части экрана. Чтобы пойти дальше и заставить его вести себя как сенсорная панель , вы могли бы заставить программу менять матрицу на лету при каждом касании, чтобы точка контакта соответствовала текущей позиции курсора. Но я предполагаю, что время отклика сделает это не очень полезным.

Я не очень разбираюсь в программировании GUI, так что это не тривиально для меня, но может отличаться для вас. Другая часть, в которой ваша программа рассчитывает правильную матрицу, включает некоторую базовую линейную алгебру. Таким образом, вы можете судить, насколько легко вам реализовать решение.

Кстати, я говорил о реализации этого решения самостоятельно, потому что ваша проблема настолько специализирована, что я не могу представить, что там есть готовые инструменты; но я могу ошибаться!

Чтобы пойти еще дальше, даже если вы получили что-то, как я описал выше, я вижу две практические проблемы:

  • Виртуальная сенсорная панель будет потреблять кусок вашего дисплея (но, возможно, вы могли бы изменить непрозрачность окна сенсорной панели на полупрозрачный, чтобы иметь возможность использовать область дисплея под ним).
  • Поскольку вы будете отображать меньшую область на большую, в зависимости от разрешения сенсора и вашего разрешения экрана, это может не дать вам достаточной точности и точного контроля, чтобы сделать его практичным.

В заключение: отремонтируйте / замените сенсорный экран!

0
ответ дан 3 July 2018 в 11:33

Другие вопросы по тегам:

Похожие вопросы: