Сенсорный экран и дополнительный внешний монитор

Скоро я начну аспирантуру с упором на моделирование. Мне повезло, что мой начальник предложил мне ноутбук. Поскольку помимо создания и запуска моделей я буду проводить минуты встреч и, возможно, время от времени выступать с лекциями, мы думали о ноутбуке с сенсорным экраном.

Из-за контрактов я застряну с HP или Dell. Хороший ноутбук, который мы нашли, можно увидеть на здесь . Наиболее важным аспектом здесь, вероятно, является то, что графический чип представляет собой Intel HD Graphics 3000.

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

  1. Будет ли сенсорный экран ноутбука работать с Ubuntu 11.10? Хотя похожие вопросы по AskUbuntu и Googling предполагают, что это не будет проблемой, я бы хотел знать наверняка перед покупкой ноутбука. Было бы большой тратой, если бы мне пришлось переключиться обратно на Windows, чтобы использовать сенсорный экран.

  2. А если сенсорный экран работает, будет ли он работать при подключении внешнего монитора? Я нашел похожий вопрос (см. Как откалибровать сенсорный экран в системе с двумя мониторами? ), но, к сожалению, на него никогда не отвечали.

Если вы можете сказать мне что-нибудь, что может помочь (различные настройки, которые работали или не работали, и т. Д.), Пожалуйста, дайте мне знать.

3
задан 13 April 2017 в 15:23

4 ответа

Существует определенная команда для отображения входа к дисплею в xsetwacom названный MapToOutput. Вот то, что Вы делаете:

Запустите путем выяснения названия дисплея, на который Вы хотите отобразиться. Это может быть сделано путем выполнения xrandr:

phnomic@phnomic-jobb:~$ xrandr
Screen 0: minimum 320 x 200, current 3200 x 1597, maximum 8192 x 8192
LVDS1 connected 1280x800+1920+797 (normal left inverted right x axis y axis) 286mm x 179mm
   1280x800       60.0*+
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 518mm x 324mm
   1920x1200      59.9*+
   1920x1080      60.0  
   1600x1200      60.0  
   1680x1050      60.0  
   1280x1024      60.0  
   1440x900       59.9  
   1280x960       60.0  
   1024x768       60.0  
   800x600        60.3  
   640x480        60.0  
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)

В моем случае я хочу использовать LVDS1.

Затем, фигура, чем называют Ваши устройства. Это сделано с помощью xsetwacom --list:

phnomic@phnomic-jobb:~$ xsetwacom --list
Wacom ISDv4 E6 Pen stylus           id: 20  type: STYLUS    
Wacom ISDv4 E6 Pen eraser           id: 21  type: ERASER    
Wacom ISDv4 E6 Finger touch         id: 22  type: TOUCH     

Наконец выполните команду xsetwacom set "[device name]" MapToOutput [screen name] для всех устройств, которые Вы хотите присвоить. В моем случае это становится:

phnomic@phnomic-jobb:~$ xsetwacom set "Wacom ISDv4 E6 Pen stylus" MapToOutput LVDS1
phnomic@phnomic-jobb:~$ xsetwacom set "Wacom ISDv4 E6 Pen eraser" MapToOutput LVDS1
phnomic@phnomic-jobb:~$ xsetwacom set "Wacom ISDv4 E6 Finger touch" MapToOutput LVDS1

И затем Вы - вся польза для использования необычного сенсорного экрана независимо от того, с какими мониторами Вы подключаете его и какую ориентацию Вы используете для своих мониторов.

Если Вы хотите знать больше, я рекомендую это сообщение SourceForge.

2
ответ дан 13 April 2017 в 15:23

У меня была та же проблема на моей Surface Pro 2 с Ubuntu 12.04 64 бита. У меня есть двухмониторная установка с MiniDisplay к HDMI-кабели, мой второй монитор не является сенсорным. То, что работало на меня, должно было найти имена устройств:

xinput --list

Это возвратилось:

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ HOLTEK Wireless USB Device                id=10   [slave  pointer  (2)]
⎜   ↳ Atmel Atmel maXTouch Digitizer            id=13   [slave  pointer  (2)]
⎜   ↳ MICROSOFT SAM                             id=11   [slave  pointer  (2)]
⎜   ↳ MICROSOFT SAM                             id=12   [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)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ HOLTEK Wireless USB Device                id=9    [slave  keyboard (3)]
    ↳ Front LifeCam                             id=14   [slave  keyboard (3)]
    ↳ Rear LifeCam 

"xsetwacom - список", упомянутый @phnomic ничего не возвратил бы.

Мы затем отображаем устройства на экраны как предложенный @phnomic:

xsetwacom set "Atmel Atmel maXTouch Digitizer" MapToOutput eDP1
xsetwacom set 11 MapToOutput eDP1
xsetwacom set 12 MapToOutput eDP1

обратите внимание, что 11 и 12 идентификаторы устройства для этих двух устройств, которые оба назвали "MICROSOFT SAM"

4
ответ дан 13 April 2017 в 15:23

Я написал простой скрипт, который исправит все с помощью udev. Сначала создайте /etc/udev/rules.d/99-monitor-hotplug.rules

Это просто строка:

ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", RUN+="/usr/share/X11/touchscreen.sh"

Теперь / usr / share / X11 / touchscreen. sh file (отметьте его + x !!):

#!/bin/sh
#
# This is designed to be run by hotplug.  See hotplug docs ...
#

# Make sure PATH is sane
export PATH="/bin:/usr/bin"

# Now the rest of the ENV to hook into X
# This should probably be run by Dbus, but I don't know how.
# Instead I see who's running Dbus, and get that user's .Xauthority
# So, its kind of a hack!

export USER=`ps -ef | grep dbus-daemon | grep session | cut -d ' ' -f 1`
export DISPLAY=":0"
export XAUTHORITY=/home/$USER/.Xauthority
export ICON=/usr/share/icons/Humanity/devices/48/monitor.svg

# Find Touchscreen id number -- sets id
export `xinput | grep Touchscreen | cut -f 2`

# Find the primary screen! 
export screen=`xrandr | grep primary | cut -d ' ' -f 1`

# Use xinput to map them
xinput --map-to-output $id $screen

su $USER -c "notify-send -i $ICON \"TouchScreen\"\
 \"Mapping Device $id to your $screen screen\""

В последней строке просто выскакивает приятное сообщение о том, что он сделал. Находясь в терминале, с любым идентификатором пользователя, он отлично работает, но не работает с udev! Сам сценарий работает нормально - это просто уведомление, которое выходит из udev. Еще одна проблема с dbus, я думаю. Если кто-нибудь может это исправить - дайте мне знать!

0
ответ дан 13 April 2017 в 15:23
1112 Жаль, что, видимо, никто не знает.

1113 Однако мне повезло. Мой коллега купил ноутбук с сенсорным экраном несколько месяцев назад и не возражал, чтобы я немного поиграл с ним, когда он был в лаборатории. Вот что я понял до сих пор:

Сенсорный экран работает в Ubuntu 11.10 безупречно, по крайней мере, до тех пор, пока вы не подключите внешний монитор. В этот момент сенсорный экран выровнен с комбинированным исходным экраном и внешним монитором, что означает, что вы не можете использовать сенсорный экран должным образом. Хорошая новость заключается в том, что он работает так же, как планшет для рисования Wacom. Это означает, что вы можете изменить область монитора, для которой работает сенсорный экран. Изменяя свойство Area всех ваших устройств, вы можете заставить сенсорный экран работать так, как вы хотите, например, выполнив:

for pad in "Serial Wacom Tablet stylus" "Serial Wacom Tablet eraser" "Serial Wacom Tablet touch"
do
    xsetwacom --set "$pad" Area 0 0 10000 10000
done

, где значения 0 0 10000 10000 являются произвольными (не имели время выяснить это).

Мой герой на сегодня - чх, он выяснил и написал, как это сделать, на http://ubuntuforums.org/showthread.php?t=1527548 . По этой ссылке вы также можете найти его скрипты для расчета правильных значений. Версия xsetwacom, которую он использовал, отличается от той, которую я скачал сегодня, поэтому его сценарии не помогли мне. Тем не менее, с помощью этой ссылки вы сможете сами понять это.

Короче говоря, если вы планируете купить ноутбук HP, о котором я упоминал ранее, вы сможете настроить сенсорный экран для правильной работы с подключенным внешним дисплеем.

1118 И мне пора возвращаться к работе.


Обновление! Я наконец-то получил свой ноутбук на этой неделе и провел более углубленный анализ сценария с двумя экранами, описанного в этом вопросе.

Используя xsetwacom --list, вы можете получить список Wacom-подобных устройств (т. Е. Вашего сенсорного экрана). Используя идентификатор, возвращаемый этой командой, вы можете сэкономить много печатать. Если вы хотите воспроизвести то, что я собираюсь объяснить, было бы полезно узнать мою точную конфигурацию:

tomas@EliteBook:~$ xsetwacom --list
Serial Wacom Tablet stylus          id: 16  type: STYLUS    
Serial Wacom Tablet eraser          id: 18  type: ERASER    
Serial Wacom Tablet touch           id: 19  type: TOUCH   

Используя идентификатор 16, я могу получить текущие настройки области (18 и 19 должны дать здесь те же результаты):

tomas@EliteBook:~$ xsetwacom --get 16 Area
0 0 26312 16520

Что означает это значение, я оставлю экспертам. Для меня важно знать, что это означает 100%. Независимо от того, подключен ли внешний дисплей, это значение остается неизменным. Метод проб и ошибок дал мне достойную калибровку сенсорного экрана для xsetwacom --set 16 0 0 50000 22000. Если вы посмотрите на это немного больше, вы поймете, почему это имеет смысл: определите правильную калибровку как 0 0 x y и начальную (то, что я назвал 100%) настройку как 0 0 x0 y0. Зная, что мое разрешение составляет 1280x800 для ноутбука и 1920x1080 для внешнего монитора, а внешний монитор расположен справа от моего ноутбука, верхняя часть выровнена, вы заметите, что в горизонтальном направлении правильный коэффициент - это отношение моего общего разрешение (для меня 1280 + 1920) выше моего желаемого разрешения сенсорного экрана (1280). Это дает коэффициент, который я определю как = 2,5. В вертикальном направлении это 1080 над 800, или b = 1,35.

Возможно, вы захотите прочитать предложение выше снова. Чтобы помочь вам, см. этот скриншот arandr.

Чтобы получить идеальное значение для моей горизонтальной области, х, просто умножьте х0 на коэффициент а. Сделайте то же самое для вашей вертикальной области, y = b * y0, а затем повторите для всех ваших устройств с сенсорным экраном (перо, ластик, сенсорный), и все готово:

xsetwacom --set 16 Area 0 0 65780 22302
xsetwacom --set 18 Area 0 0 65780 22302
xsetwacom --set 19 Area 0 0 65780 22302

редактировать: хмм, это странно, требуемая площадь для прикосновения пальца / руки меньше, чем у других устройств, примерно в 10 раз.

Если я что-то пропустил или мне непонятно, отправьте мне сообщение, и я постараюсь помочь.

0
ответ дан 13 April 2017 в 15:23

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

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