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

ps -aef | grep $(pwd)

Поиск, получение и отображение полной информации о списке процессов, связанных с working directory, и печать пути к этому каталогу.

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

3 ответа

У меня была такая же проблема на моем Surface Pro 2 с Ubuntu 12.04 64 бит. У меня есть настройка с двумя мониторами с кабелем MiniDisplay to 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 -list», упомянутый @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
ответ дан 25 May 2018 в 17:38
  • 1
    Спасибо за то, что дали нам знать! Хорошо слышать, что xinput выполняет ту же работу, что и xsetwacom --list. Небольшое предложение, если можно, рассмотреть возможность использования "MICROSOFT SAM" вместо идентификаторов 11 и 12. Идентификаторы могут меняться, имя не будет. – Tomas 12 December 2013 в 12:28
  • 2
    Милая! Это сделало это для меня. Благодаря! :) – casraf 26 May 2014 в 19:57

Слишком плохо, видимо, никто не знает.

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

Сенсорный экран работает безупречно в 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 являются произвольными (не имеют было время, чтобы понять это).

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

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

И я должен вернуться к работе сейчас.

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

Используя 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   

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

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

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

Возможно, вы захотите снова прочитать предложение выше. Чтобы немного помочь вам, см. http://ubuntuforums.org/showthread.php?t=1527548 из arandr.

Чтобы получить идеальное значение для моей горизонтальной области, x , Просто умножьте x0 на коэффициент a. Сделайте то же самое для своей вертикальной области 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

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

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

0
ответ дан 25 May 2018 в 17:38

Я написал простой скрипт, который будет исправлять вещи, используя 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 (пометьте его + 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. Я думаю, что это еще один вопрос. Если кто-нибудь может это исправить - дайте мне знать !!

0
ответ дан 25 May 2018 в 17:38

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

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