Калибровка сенсорного экрана с двумя мониторами (NVidia и xinput)

У меня есть карта NVidia GTX260 с одним обычным экраном над одним сенсорным экраном с использованием драйвера eGalax.

Я пытался настроить сенсорный экран с помощью xinput, но не могу сделать это правильно. С отключенным обычным экраном и переключением с параметром «Калибровка оси Evdev» он работает нормально, но когда я снова подключаю обычный экран, жесткое отображение смещается. Если я касаюсь сенсорного экрана, мышь перемещается в соответствующую позицию на другом экране.

Кажется, что ни «Матрица преобразования координат», ни «отображение на выход» не работают ...

Любая помощь очень ценится!

/ Хенрик

6
задан 10 February 2013 в 15:39

5 ответов

для меня с Ubuntu 12.04 LTS (64 бита) он не прерывал работу, пока в xinput --help не увидел, что правильная команда:

xinput map-to-crtc 'Имя ввода device 'Name of output device

, в то время как имя устройства ввода отображается в виде $ xinput --list, имя устройства вывода отображается в виде $ xrandr и может быть LVDS1 или VGA1, например

0
ответ дан 10 February 2013 в 15:39

Если Вы хотите графический инструмент, который находится в Вас системный лоток, то мы просто создали один и хотели бы видеть, полезно ли это для кого-либо еще: Просто выберите свое входное перьевое устройство и которые экранируют для отображения его на:

http://wenhsinjen.github.io/ptxconf/

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

1
ответ дан 10 February 2013 в 15:39

У меня сейчас (13.04) была похожая проблема, но xinput map-to-output помог, если я делаю вещи в правильном порядке.

xinput map-to-output настраивает «Матрицу преобразования координат».
xinput_calibrator устанавливает «Калибровку оси Евдева» и совершенно не знает о «Матрице преобразования координат». Он также всегда открывается растянутым до полной доступной области вывода.

Это означает, что вы должны запустить xinput_calibrator на одном экране.

  1. xrandr --output <non-touch-output> --off

  2. xinput map-to-output <touch input device> <touch-output>
    (чтобы сбросить «Матрицу преобразования координат», если вы к ней уже прикоснулись) . [тысяча сто двадцать пять]

  3. Калибровать с xinput_calibrator.
    Теперь у вас должно быть хорошо откалиброванное касание на одном экране.
    (Мой сенсорный экран был изначально отключен - X / Y поменялся местами, Y инвертирован - поэтому мне пришлось выполнить это дважды, с --misclick 0. Я считаю, что это свойство моего сенсорного экрана, не связанное с ситуацией с двумя мониторами.)

    [ 1117]
  4. Повторно включить второй экран.
    xrandr --output <non-touch-output> --on

  5. Сделайте map-to-output снова.

0
ответ дан 10 February 2013 в 15:39

Я никак не мог заставить работать мою стандартную сенсорную панель USB / eGalax в моей системе Mint 18.2 с любым ответом, который нашел сам, но подумал, что должен поделиться тем, что сработало для меня.

Сначала я отключил свой бесконтактный монитор (как предложил Бени Чернявский-Паскин) и откалибровал сенсорную панель, используя xinput_calibrator.

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

Чтобы полностью сместить его до нужного монитора / области, я затем заново сопоставил «Матрицу преобразования координат», как рекомендовано в настоящего руководства , используя

$ xinput set-prop "Device Name" --type=float "Coordinate Transformation Matrix" c0 0 c1 0 c2 c3 0 0 1

. Device Name Я использовал xinput --list, чтобы получить идентификатор сенсорной панели. Из следующего вывода я получил идентификатор 13 :

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SIGMACH1P USB Keyboard                    id=10   [slave  pointer  (2)]
⎜   ↳ SOAI Gaming Mouse                         id=12   [slave  pointer  (2)]
⎜   ↳ eGalax Inc. USB TouchController           id=13   [slave  pointer  (2)]

Я вычислил параметры, как описано в упомянутом руководстве. например Для меня смещение сенсорной области шириной 768 пикселей моим монитором 1900 пикселей дало мне c0 = 768/(1900+768) = 0.287856. Закончился этой командой:

$ xinput set-prop 13 --type=float "Coordinate Transformation Matrix" 0.287856, 0.000000, 0.712114, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000

Это все работает нормально. Кстати, у меня были некоторые проблемы, которые, кажется, исчезают, когда я использовал точность только 6 десятичных знаков для параметра idk, если это действительно требуется, или, скорее всего, я только что испортил что-то другое.

0
ответ дан 10 February 2013 в 15:39

Хотя ответ Бени , вероятно, будет работать для некоторых (если не для большинства) людей, в моем случае xinput_calibrator все еще путался, несмотря на то, что другие дисплеи были отключены. Я также не был неравнодушен к установке драйверов с закрытым исходным кодом от поставщика.

К счастью, используя информацию из этого самого QA и других источников (документация EVDEV xorg и этот ответ ), оказывается, что можно полностью настроить все вручную [ 1153] до тех пор, пока вы используете EVDEV и Xorg (по умолчанию для Kubuntu в настоящее время как минимум) .

Настройка одного сеанса (через xinput)

  1. Найти идентификатор устройства через xinput --list. Это будет упоминаться как <DEVICE_ID>.
  2. Запустите xinput --list-prop <DEVICE-ID> и запишите значения по умолчанию на всякий случай.
  3. Установите свойство Матрица преобразования координат. Самым простым способом было бы установить ptxconf из ответа Хробьяртура и использовать опцию конфигурации.
  4. Теперь вы готовы настроить оси. Первым шагом является проверка, поменялись ли координаты X и Y друг с другом. Для этого:
    • нажмите пальцем / стилусом вверху экрана,
    • и снизу. Если указатель мыши появляется слева и справа (или наоборот), выполните: xinput --set-prop <DEVICE_ID> "Evdev Axes Swap" 1. В противном случае оставьте это свойство без изменений.
  5. Теперь проверьте, нужно ли инвертировать оси X и / или Y. Это контролируется свойством Evdev Axis Inversion с двумя значениями - X Y, где 0 - нормальное, а 1 - инвертированное. Итак:
    • проверьте, перемещает ли курсор в крайнем левом углу экрана курсор вправо. Если это так, вам нужно инвертировать X.
    • Проверьте, помещает ли курсор в самом верху экрана курсор внизу. Если это так, вам нужно инвертировать Y.
    • Например, инвертирование X и оставление Y без изменений означает выполнение: xinput --set-prop <DEVICE_ID> "Evdev Axis Inversion" 1 0.
  6. Теперь перейдем к забавным вещам - калибровке. Свойство Evdev Axis Calibration управляет им, и оно теоретически зависит от поставщика , но это можно выяснить с небольшим подталкиванием (в буквальном смысле). Вот что вам нужно сделать:
    • проверить, был ли сброшен Evdev Axis Calibration (это произошло в моем случае после запуска ptxconf). Если это так, запустите xinput --set-prop <DEVICE_ID> "Evdev Axis Calibration" <DEFAULT_VALUES_FROM_POINT_1> (учтите, что хотя значения выводятся через запятую, на входе они должны быть разделены пробелом).
    • значения могут быть описаны, по крайней мере, в моем случае, как <FAR_RIGHT_OFFSET> <FAR_LEFT_OFFSET> <VERY_TOP_OFFSET> <VERY_BOTTOM_OFFSET>.
    • Возьмите стилус и начинайте тыкать в крайнее правое смещение. Регулируйте первое значение, пока указатель не окажется под вашим стилусом. Не беспокойтесь, если указатель находится вне цели на другой оси.
    • сделать то же самое для крайнего левого смещения. Проверьте правильность смещения справа, если нет, то изменяйте два значения, пока не найдете совпадение.
    • сделать то же самое с двумя другими смещениями.
    • Проверьте, правильно ли расположен указатель на крайне левой средней, крайне правой средней, верхней центральной и нижней центральной части экрана. Если это так, вы можете идти.
  7. Запустите xinput --list-props <DEVICE_ID> и запишите свои окончательные значения. Вот и все!

Настройка Permament (через xorg conf)

Как указано в выводе xinput_calibration, для сохранения настроек вам необходимо добавить файл конфигурации в вашу конфигурацию xorg. dir (это /usr/share/X11/xorg.conf.d/ в Ubuntu, названный с достаточно низким приоритетом - как 99-calibration.conf в представленном примере).

Подготовьте значения свойств xinput и проверьте имя устройства в xinput --list. Теперь все, что вам нужно сделать, это создать файл следующим образом:

Section "InputClass"
        Identifier                      "calibration"
        MatchProduct                    "<DEVICE_NAME_FROM_XINPUT_LIST>"
        Option  "TransformationMatrix"  "<VALUES_FROM(Coordinate Transformation Matrix)>"
        Option  "Calibration"           "<VALUES_FROM(Evdev Axis Calibration)>"
        Option  "SwapAxes"              "<VALUE_FROM(Evdev Axes Swap)>"
        Option  "InvertX"               "<X_VALUE_FROM(Evdev Axis Inversion)>"
        Option  "InvertY"               "<Y_VALUE_FROM(Evdev Axis Inversion)>"
EndSection

Например:

Section "InputClass"
        Identifier                      "calibration"
        MatchProduct                    "ACME USB Touch"
        Option  "TransformationMatrix"  "0.5656 0.000000 0.676576 0.000000 0.765756 0.756233 0.000000 0.000000 1.000000"
        Option  "Calibration"           "50 1366 25 2876"
        Option  "SwapAxes"              "1"
        Option  "InvertY"               "1"
EndSection

Проверить, все ли работает после перезагрузки. И теперь все готово!

0
ответ дан 10 February 2013 в 15:39

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

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