Сенсорный экран с двумя мониторами

У меня есть ubuntu 12.04 и два монитора, где первый сенсорный экран.

Система распознает разрешение как один большой экран с разрешением 3840 * 1080.

Проблема в том, что при использовании сенсорной калибровки экран калибратора получает размер по обоим экранам. Таким образом, при касании экрана указатель получает двойные перемещения по оси X.

Есть ли какое-либо решение?

Графика: NVIDIA с Twin wiew

4
задан 24 May 2012 в 00:08

21 ответ

Сначала перечислите все входные источники с помощью xinput --list:

⎡ Virtual core pointer                       id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Sony Vaio Jogdial                         id=8    [slave  pointer  (2)]
⎜   ↳ Advanced Silicon S.A CoolTouch(TM) System id=11   [slave  pointer  (2)]
⎜   ↳ HID-compliant Mouse HID-compliant Mouse   id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=9    [slave  keyboard (3)]
    ↳ Power Button                              id=10   [slave  keyboard (3)]
    ↳ IR camera                                 id=12   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=14   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=15   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=16   [slave  keyboard (3)]

Возьмите интересующее вас устройство (в этом случае я использую «Advanced Silicon SA CoolTouch (TM) System») и отметьте его ID.

Теперь вам нужно узнать, на какой дисплей вы хотите сопоставить устройство ввода. Самый простой способ - использовать xrandr:

Screen 0: minimum 8 x 8, current 3200 x 1080, maximum 16384 x 16384
HDMI-0 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024     60.02*+
   1280x960      60.00  
   1280x720      60.00    59.94  
   1152x864      75.00    70.00  
   1024x768      60.00  
   800x600       60.32  
   720x480       59.94  
   640x480       59.94    59.93  
LVDS-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     60.00*+  59.94  

В этом случае я хочу сопоставить мое сенсорное устройство с выходом LVDS-0.

Объединить ID с первого шага (11 здесь) с именем экрана со второго шага (здесь LVDS-0) и запустите эту команду:

xinput --map-to-output INPUT-ID SCREEN

В моем примере эта команда будет:

xinput --map-to-output 11 LVDS-0

Ваше сенсорное устройство не должно быть правильно отображено на устройстве ввода и не должно требовать дополнительной настройки.

Эти настройки не будут сохраняться между перезагрузками. См. Этот вопрос в , как сделать команды xinput постоянными .

5
ответ дан 25 July 2018 в 18:47

Archlinux wiki - лучшее описание того, как это решить, но вот что-то более конкретное.

Вы должны запустить xinput -list для определения имени вашего устройства ввода. Я создал таблицу для расчета значений преобразования.

Электронная таблица здесь: https://docs.google.com/spreadsheets/d/13CNQjWfzpEkHM4ZdCcUWDTdQNaFqQ6TYTwatQsYcHcQ/edit?usp=sharing

Я запустил ваши номера (два экрана 1920x1080).

Если ваш сенсорный экран находится слева, команда будет («Advanced Silicon SA CoolTouch (TM) System» - это имя моего входное устройство, замените его):

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0 0 1 0 0 0 1

Для правой стороны это должно быть:

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0.5 0 1 0 0 0 1
2
ответ дан 25 July 2018 в 18:47

Так как это первый результат поиска Google для этой проблемы, я решил опубликовать свое решение, которое для меня выглядит просто.

Я нашел эту ссылку на archlinux , и вы может использовать

xinput --map-to-output <stylus device ID> <screen ID>

, поэтому мне не нужно играть с «матрицей преобразования координат» ...

1
ответ дан 25 July 2018 в 18:47

Сначала перечислите все входные источники с помощью xinput --list:

⎡ Virtual core pointer                       id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Sony Vaio Jogdial                         id=8    [slave  pointer  (2)]
⎜   ↳ Advanced Silicon S.A CoolTouch(TM) System id=11   [slave  pointer  (2)]
⎜   ↳ HID-compliant Mouse HID-compliant Mouse   id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=9    [slave  keyboard (3)]
    ↳ Power Button                              id=10   [slave  keyboard (3)]
    ↳ IR camera                                 id=12   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=14   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=15   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=16   [slave  keyboard (3)]

Возьмите интересующее вас устройство (в этом случае я использую «Advanced Silicon SA CoolTouch (TM) System») и отметьте его ID.

Теперь вам нужно узнать, на какой дисплей вы хотите сопоставить устройство ввода. Самый простой способ - использовать xrandr:

Screen 0: minimum 8 x 8, current 3200 x 1080, maximum 16384 x 16384
HDMI-0 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024     60.02*+
   1280x960      60.00  
   1280x720      60.00    59.94  
   1152x864      75.00    70.00  
   1024x768      60.00  
   800x600       60.32  
   720x480       59.94  
   640x480       59.94    59.93  
LVDS-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     60.00*+  59.94  

В этом случае я хочу сопоставить мое сенсорное устройство с выходом LVDS-0.

Объединить ID с первого шага (11 здесь) с именем экрана со второго шага (здесь LVDS-0) и запустите эту команду:

xinput --map-to-output INPUT-ID SCREEN

В моем примере эта команда будет:

xinput --map-to-output 11 LVDS-0

Ваше сенсорное устройство не должно быть правильно отображено на устройстве ввода и не должно требовать дополнительной настройки.

Эти настройки не будут сохраняться между перезагрузками. См. Этот вопрос в , как сделать команды xinput постоянными .

5
ответ дан 2 August 2018 в 00:56

Archlinux wiki - лучшее описание того, как это решить, но вот что-то более конкретное.

Вы должны запустить xinput -list для определения имени вашего устройства ввода. Я создал таблицу для расчета значений преобразования.

Электронная таблица здесь: https://docs.google.com/spreadsheets/d/13CNQjWfzpEkHM4ZdCcUWDTdQNaFqQ6TYTwatQsYcHcQ/edit?usp=sharing

Я запустил ваши номера (два экрана 1920x1080).

Если ваш сенсорный экран находится слева, команда будет («Advanced Silicon SA CoolTouch (TM) System» - это имя моего входное устройство, замените его):

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0 0 1 0 0 0 1

Для правой стороны это должно быть:

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0.5 0 1 0 0 0 1
2
ответ дан 2 August 2018 в 00:56

Сначала перечислите все входные источники с помощью xinput --list:

⎡ Virtual core pointer                       id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Sony Vaio Jogdial                         id=8    [slave  pointer  (2)]
⎜   ↳ Advanced Silicon S.A CoolTouch(TM) System id=11   [slave  pointer  (2)]
⎜   ↳ HID-compliant Mouse HID-compliant Mouse   id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=9    [slave  keyboard (3)]
    ↳ Power Button                              id=10   [slave  keyboard (3)]
    ↳ IR camera                                 id=12   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=14   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=15   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=16   [slave  keyboard (3)]

Возьмите интересующее вас устройство (в этом случае я использую «Advanced Silicon SA CoolTouch (TM) System») и отметьте его ID.

Теперь вам нужно узнать, на какой дисплей вы хотите сопоставить устройство ввода. Самый простой способ - использовать xrandr:

Screen 0: minimum 8 x 8, current 3200 x 1080, maximum 16384 x 16384
HDMI-0 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024     60.02*+
   1280x960      60.00  
   1280x720      60.00    59.94  
   1152x864      75.00    70.00  
   1024x768      60.00  
   800x600       60.32  
   720x480       59.94  
   640x480       59.94    59.93  
LVDS-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     60.00*+  59.94  

В этом случае я хочу сопоставить мое сенсорное устройство с выходом LVDS-0.

Объединить ID с первого шага (11 здесь) с именем экрана со второго шага (здесь LVDS-0) и запустите эту команду:

xinput --map-to-output INPUT-ID SCREEN

В моем примере эта команда будет:

xinput --map-to-output 11 LVDS-0

Ваше сенсорное устройство не должно быть правильно отображено на устройстве ввода и не должно требовать дополнительной настройки.

Эти настройки не будут сохраняться между перезагрузками. См. Этот вопрос в , как сделать команды xinput постоянными .

5
ответ дан 4 August 2018 в 16:26

Смотрите: https://wiki.archlinux.org/index.php/Calibrating_Touchscreen

Ваша матрица является одной из следующих:

 Touch screen on the left: 0. 5 0 0 0 1 0 0 0 1
 Touch screen on the right: 0. 5 0 0. 5 0 1 0 0 0 1

У меня почти такая же конфигурация (но экраны одна поверх других), и после нескольких правильных настроек я получаю несколько кликов, как описано в нижней строке ссылки выше. Я не нашел способ перестроить xorg-server под Ubuntu; конечно, описанная процедура не работает.

1
ответ дан 4 August 2018 в 16:26

Archlinux wiki - лучшее описание того, как это решить, но вот что-то более конкретное.

Вы должны запустить xinput -list для определения имени вашего устройства ввода. Я создал таблицу для расчета значений преобразования.

Электронная таблица здесь: https://docs.google.com/spreadsheets/d/13CNQjWfzpEkHM4ZdCcUWDTdQNaFqQ6TYTwatQsYcHcQ/edit?usp=sharing

Я запустил ваши номера (два экрана 1920x1080).

Если ваш сенсорный экран находится слева, команда будет («Advanced Silicon SA CoolTouch (TM) System» - это имя моего входное устройство, замените его):

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0 0 1 0 0 0 1

Для правой стороны это должно быть:

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0.5 0 1 0 0 0 1
2
ответ дан 4 August 2018 в 16:26

Сначала перечислите все входные источники с помощью xinput --list:

⎡ Virtual core pointer                       id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Sony Vaio Jogdial                         id=8    [slave  pointer  (2)]
⎜   ↳ Advanced Silicon S.A CoolTouch(TM) System id=11   [slave  pointer  (2)]
⎜   ↳ HID-compliant Mouse HID-compliant Mouse   id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=9    [slave  keyboard (3)]
    ↳ Power Button                              id=10   [slave  keyboard (3)]
    ↳ IR camera                                 id=12   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=14   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=15   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=16   [slave  keyboard (3)]

Возьмите интересующее вас устройство (в этом случае я использую «Advanced Silicon SA CoolTouch (TM) System») и отметьте его ID.

Теперь вам нужно узнать, на какой дисплей вы хотите сопоставить устройство ввода. Самый простой способ - использовать xrandr:

Screen 0: minimum 8 x 8, current 3200 x 1080, maximum 16384 x 16384
HDMI-0 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024     60.02*+
   1280x960      60.00  
   1280x720      60.00    59.94  
   1152x864      75.00    70.00  
   1024x768      60.00  
   800x600       60.32  
   720x480       59.94  
   640x480       59.94    59.93  
LVDS-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     60.00*+  59.94  

В этом случае я хочу сопоставить мое сенсорное устройство с выходом LVDS-0.

Объединить ID с первого шага (11 здесь) с именем экрана со второго шага (здесь LVDS-0) и запустите эту команду:

xinput --map-to-output INPUT-ID SCREEN

В моем примере эта команда будет:

xinput --map-to-output 11 LVDS-0

Ваше сенсорное устройство не должно быть правильно отображено на устройстве ввода и не должно требовать дополнительной настройки.

Эти настройки не будут сохраняться между перезагрузками. См. Этот вопрос в , как сделать команды xinput постоянными .

5
ответ дан 6 August 2018 в 01:06

Archlinux wiki - лучшее описание того, как это решить, но вот что-то более конкретное.

Вы должны запустить xinput -list для определения имени вашего устройства ввода. Я создал таблицу для расчета значений преобразования.

Электронная таблица здесь: https://docs.google.com/spreadsheets/d/13CNQjWfzpEkHM4ZdCcUWDTdQNaFqQ6TYTwatQsYcHcQ/edit?usp=sharing

Я запустил ваши номера (два экрана 1920x1080).

Если ваш сенсорный экран находится слева, команда будет («Advanced Silicon SA CoolTouch (TM) System» - это имя моего входное устройство, замените его):

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0 0 1 0 0 0 1

Для правой стороны это должно быть:

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0.5 0 1 0 0 0 1
2
ответ дан 6 August 2018 в 01:06

Так как это первый результат поиска Google для этой проблемы, я решил опубликовать свое решение, которое для меня выглядит просто.

Я нашел эту ссылку на archlinux , и вы может использовать

xinput --map-to-output <stylus device ID> <screen ID>

, поэтому мне не нужно играть с «матрицей преобразования координат» ...

1
ответ дан 6 August 2018 в 01:06

Сначала перечислите все входные источники с помощью xinput --list:

⎡ Virtual core pointer                       id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Sony Vaio Jogdial                         id=8    [slave  pointer  (2)]
⎜   ↳ Advanced Silicon S.A CoolTouch(TM) System id=11   [slave  pointer  (2)]
⎜   ↳ HID-compliant Mouse HID-compliant Mouse   id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=9    [slave  keyboard (3)]
    ↳ Power Button                              id=10   [slave  keyboard (3)]
    ↳ IR camera                                 id=12   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=14   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=15   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=16   [slave  keyboard (3)]

Возьмите интересующее вас устройство (в этом случае я использую «Advanced Silicon SA CoolTouch (TM) System») и отметьте его ID.

Теперь вам нужно узнать, на какой дисплей вы хотите сопоставить устройство ввода. Самый простой способ - использовать xrandr:

Screen 0: minimum 8 x 8, current 3200 x 1080, maximum 16384 x 16384
HDMI-0 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024     60.02*+
   1280x960      60.00  
   1280x720      60.00    59.94  
   1152x864      75.00    70.00  
   1024x768      60.00  
   800x600       60.32  
   720x480       59.94  
   640x480       59.94    59.93  
LVDS-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     60.00*+  59.94  

В этом случае я хочу сопоставить мое сенсорное устройство с выходом LVDS-0.

Объединить ID с первого шага (11 здесь) с именем экрана со второго шага (здесь LVDS-0) и запустите эту команду:

xinput --map-to-output INPUT-ID SCREEN

В моем примере эта команда будет:

xinput --map-to-output 11 LVDS-0

Ваше сенсорное устройство не должно быть правильно отображено на устройстве ввода и не должно требовать дополнительной настройки.

Эти настройки не будут сохраняться между перезагрузками. См. Этот вопрос в , как сделать команды xinput постоянными .

5
ответ дан 7 August 2018 в 18:33

Смотрите: https://wiki.archlinux.org/index.php/Calibrating_Touchscreen

Ваша матрица является одной из следующих:

 Touch screen on the left: 0. 5 0 0 0 1 0 0 0 1
 Touch screen on the right: 0. 5 0 0. 5 0 1 0 0 0 1

У меня почти такая же конфигурация (но экраны одна поверх других), и после нескольких правильных настроек я получаю несколько кликов, как описано в нижней строке ссылки выше. Я не нашел способ перестроить xorg-server под Ubuntu; конечно, описанная процедура не работает.

1
ответ дан 7 August 2018 в 18:33

Archlinux wiki - лучшее описание того, как это решить, но вот что-то более конкретное.

Вы должны запустить xinput -list для определения имени вашего устройства ввода. Я создал таблицу для расчета значений преобразования.

Электронная таблица здесь: https://docs.google.com/spreadsheets/d/13CNQjWfzpEkHM4ZdCcUWDTdQNaFqQ6TYTwatQsYcHcQ/edit?usp=sharing

Я запустил ваши номера (два экрана 1920x1080).

Если ваш сенсорный экран находится слева, команда будет («Advanced Silicon SA CoolTouch (TM) System» - это имя моего входное устройство, замените его):

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0 0 1 0 0 0 1

Для правой стороны это должно быть:

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0.5 0 1 0 0 0 1
2
ответ дан 7 August 2018 в 18:33

Так как это первый результат поиска Google для этой проблемы, я решил опубликовать свое решение, которое для меня выглядит просто.

Я нашел эту ссылку на archlinux , и вы может использовать

xinput --map-to-output <stylus device ID> <screen ID>

, поэтому мне не нужно играть с «матрицей преобразования координат» ...

1
ответ дан 7 August 2018 в 18:33

Сначала перечислите все входные источники с помощью xinput --list:

⎡ Virtual core pointer                       id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Sony Vaio Jogdial                         id=8    [slave  pointer  (2)]
⎜   ↳ Advanced Silicon S.A CoolTouch(TM) System id=11   [slave  pointer  (2)]
⎜   ↳ HID-compliant Mouse HID-compliant Mouse   id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=9    [slave  keyboard (3)]
    ↳ Power Button                              id=10   [slave  keyboard (3)]
    ↳ IR camera                                 id=12   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=14   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=15   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=16   [slave  keyboard (3)]

Возьмите интересующее вас устройство (в этом случае я использую «Advanced Silicon SA CoolTouch (TM) System») и отметьте его ID.

Теперь вам нужно узнать, на какой дисплей вы хотите сопоставить устройство ввода. Самый простой способ - использовать xrandr:

Screen 0: minimum 8 x 8, current 3200 x 1080, maximum 16384 x 16384
HDMI-0 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024     60.02*+
   1280x960      60.00  
   1280x720      60.00    59.94  
   1152x864      75.00    70.00  
   1024x768      60.00  
   800x600       60.32  
   720x480       59.94  
   640x480       59.94    59.93  
LVDS-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     60.00*+  59.94  

В этом случае я хочу сопоставить мое сенсорное устройство с выходом LVDS-0.

Объединить ID с первого шага (11 здесь) с именем экрана со второго шага (здесь LVDS-0) и запустите эту команду:

xinput --map-to-output INPUT-ID SCREEN

В моем примере эта команда будет:

xinput --map-to-output 11 LVDS-0

Ваше сенсорное устройство не должно быть правильно отображено на устройстве ввода и не должно требовать дополнительной настройки.

Эти настройки не будут сохраняться между перезагрузками. См. Этот вопрос в , как сделать команды xinput постоянными .

5
ответ дан 10 August 2018 в 07:13

Смотрите: https://wiki.archlinux.org/index.php/Calibrating_Touchscreen

Ваша матрица является одной из следующих:

 Touch screen on the left: 0. 5 0 0 0 1 0 0 0 1
 Touch screen on the right: 0. 5 0 0. 5 0 1 0 0 0 1

У меня почти такая же конфигурация (но экраны одна поверх других), и после нескольких правильных настроек я получаю несколько кликов, как описано в нижней строке ссылки выше. Я не нашел способ перестроить xorg-server под Ubuntu; конечно, описанная процедура не работает.

1
ответ дан 10 August 2018 в 07:13

Сначала перечислите все входные источники с помощью xinput --list:

⎡ Virtual core pointer                       id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Sony Vaio Jogdial                         id=8    [slave  pointer  (2)]
⎜   ↳ Advanced Silicon S.A CoolTouch(TM) System id=11   [slave  pointer  (2)]
⎜   ↳ HID-compliant Mouse HID-compliant Mouse   id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Sony Vaio Keys                            id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=9    [slave  keyboard (3)]
    ↳ Power Button                              id=10   [slave  keyboard (3)]
    ↳ IR camera                                 id=12   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=14   [slave  keyboard (3)]
    ↳ Cherry USB keyboard                       id=15   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=16   [slave  keyboard (3)]

Возьмите интересующее вас устройство (в этом случае я использую «Advanced Silicon SA CoolTouch (TM) System») и отметьте его ID.

Теперь вам нужно узнать, на какой дисплей вы хотите сопоставить устройство ввода. Самый простой способ - использовать xrandr:

Screen 0: minimum 8 x 8, current 3200 x 1080, maximum 16384 x 16384
HDMI-0 connected 1280x1024+1920+0 (normal left inverted right x axis y axis) 338mm x 270mm
   1280x1024     60.02*+
   1280x960      60.00  
   1280x720      60.00    59.94  
   1152x864      75.00    70.00  
   1024x768      60.00  
   800x600       60.32  
   720x480       59.94  
   640x480       59.94    59.93  
LVDS-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
   1920x1080     60.00*+  59.94  

В этом случае я хочу сопоставить мое сенсорное устройство с выходом LVDS-0.

Объединить ID с первого шага (11 здесь) с именем экрана со второго шага (здесь LVDS-0) и запустите эту команду:

xinput --map-to-output INPUT-ID SCREEN

В моем примере эта команда будет:

xinput --map-to-output 11 LVDS-0

Ваше сенсорное устройство не должно быть правильно отображено на устройстве ввода и не должно требовать дополнительной настройки.

Эти настройки не будут сохраняться между перезагрузками. См. Этот вопрос в , как сделать команды xinput постоянными .

5
ответ дан 15 August 2018 в 19:13

Смотрите: https://wiki.archlinux.org/index.php/Calibrating_Touchscreen

Ваша матрица является одной из следующих:

 Touch screen on the left: 0. 5 0 0 0 1 0 0 0 1
 Touch screen on the right: 0. 5 0 0. 5 0 1 0 0 0 1

У меня почти такая же конфигурация (но экраны одна поверх других), и после нескольких правильных настроек я получаю несколько кликов, как описано в нижней строке ссылки выше. Я не нашел способ перестроить xorg-server под Ubuntu; конечно, описанная процедура не работает.

1
ответ дан 15 August 2018 в 19:13

Archlinux wiki - лучшее описание того, как это решить, но вот что-то более конкретное.

Вы должны запустить xinput -list для определения имени вашего устройства ввода. Я создал таблицу для расчета значений преобразования.

Электронная таблица здесь: https://docs.google.com/spreadsheets/d/13CNQjWfzpEkHM4ZdCcUWDTdQNaFqQ6TYTwatQsYcHcQ/edit?usp=sharing

Я запустил ваши номера (два экрана 1920x1080).

Если ваш сенсорный экран находится слева, команда будет («Advanced Silicon SA CoolTouch (TM) System» - это имя моего входное устройство, замените его):

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0 0 1 0 0 0 1

Для правой стороны это должно быть:

xinput set-prop 'Advanced Silicon S.A CoolTouch(TM) System' --type=float 'Coordinate Transformation Matrix' 0.5 0 0.5 0 1 0 0 0 1
2
ответ дан 15 August 2018 в 19:13
  • 1
    – Kamil Dziedzic 14 January 2015 в 02:23
  • 2
    Обратите внимание, что это работает для двух мониторов, но для более того, это не совсем работает. Я взял лист из этого ответа и нашел, что эти значения работают (три монитора, сенсорный экран - самый правый): 0.36 0 0.64 0 1 0 0 0 1 – Knetic 29 April 2017 в 21:12

Так как это первый результат поиска Google для этой проблемы, я решил опубликовать свое решение, которое для меня выглядит просто.

Я нашел эту ссылку на archlinux , и вы может использовать

xinput --map-to-output <stylus device ID> <screen ID>

, поэтому мне не нужно играть с «матрицей преобразования координат» ...

1
ответ дан 15 August 2018 в 19:13

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

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