Де я повинен вставити команду "xinput", щоб вона виконувала її при запуску GNOME?


10

На своєму Thinkpad мені потрібно виконати щось подібне в терміналі:

xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Middle Button Emulation" 8 1

так що мої 2 кнопки на моїй тачпада імітують середній клацання миші. Тепер мені потрібно виконувати цей рядок щоразу, коли я запускаю GNOMe або X чи що завгодно, щоб він "просто працював".

Я спробував ~ / .xsession або ~ / .bashrc, але безрезультатно. Чи потрібно це помістити в початкові сценарії GNOME або в / etc / X?

Я використовую Ubuntu 11.10.


Спробуйте додати файл sleep 5на початку .xsessionфайлу?
Thomas Ahle

1
@ThomasAhle не вирішить проблему, якщо менеджер вікон завантажений і змінить властивості evdev після виконання .xsession.
Марцін Камінський

Відповіді:


7

Я використовую DM просвітництва, але це стосується інших DM / настільних ПК. Я починаю свій сеанс з використанням xsession, тому спочатку я вводив xinput команди в ~ / .xsession, які не змінювали всіх параметрів, які я хотів змінити. Тільки деякі з них. Я очікував будь-яких змін або немає, тому я додав цикл 10-інтеракції в свій .xsession з інтервалом 1 секунди, щоразу виконував команди xinput і перевіряв, чи були застосовані налаштування. На мій подив, усі налаштування були застосовані після першої ітерації.

Це означає, що саме ваш DM робить щось, що може змінити ваші налаштування xinput, і оскільки команда, яка запускає ваш DM (E17 в моєму випадку), є останньою у вашому .xsession файлі, цьому файлу для цього не місце.

У свій ~ / .profile я додав наступні рядки, і це вирішило проблему:

# don't run unless we're being invoked from an xwindows session
if [[ -n ${DISPLAY} ]]; then

  # set your devices names here
  pointer1="IBM TrackPoint"
  pointer2="Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint"
  pointer3="Logitech USB Trackball"

  id1=$(xinput | awk -F= "/$pointer1.*pointer/ {print \$2}" | cut -f1)
  id2=$(xinput | awk -F= "/$pointer2.*pointer/ {print \$2}" | cut -f1)
  id3=$(xinput | awk -F= "/$pointer3.*pointer/ {print \$2}" | cut -f1)

  if [[ -n "${id1}" ]]; then
    xinput --set-button-map "${id1}" 1 2 3 4 5 6 7
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id1}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id1}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id2}" ]]; then
    xinput --set-button-map "${id2}" 1 2 3 4 5 6 7
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id2}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id2}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id3}" ]]; then
    xinput --set-button-map "${id3}" 1 2 3 4 5 6 7 8 9
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id3}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Button" 8
    xinput set-prop "${id3}"  "Evdev Middle Button Emulation" 1
  fi
fi

PS. set-int-prop застаріло на користь set-prop (man xinput).

Сподіваємось, це комусь допомагає.


Сценарій хороший, але, на жаль, це не дає мені рішення. Наразі єдиний метод працює, якщо я запускаю термінал, а потім запускаю 'xinput set-prop' з необхідними параметрами. Я спробував сценарій Маркіна, Запуск програми, але вони, на жаль, не спрацювали.
Geeocode

"set-int-prop застаріло на користь налаштування" T • H • A • N • K • • Y • O • U •
Clément

4

Додайте команду безпосередньо до запуску програм. У командному полі.

або

складіть простий скрипт і додайте його до запуску програм.


3

Створіть для нього файл /etc/X11/Xsession.d/.


Для мене це було/etc/X11/xinit/Xsession
Thomas Ahle

3
Я, як правило, не рекомендую вносити зміни в конфігурації, характерні для користувача, у файл конфігурації, що стосується всієї системи. По-перше, тому, що це створює додаткову річ, про яку потрібно пам’ятати, коли вам потрібно перейти на іншу машину, по-друге, тому що ці файли здебільшого є для забезпечення розумних стандартних параметрів. Приємно мати можливість взяти з собою знімок вашого $ HOME та списку встановлених пакетів, коли потрібно перевстановити / перенести.
Marcin Kaminski

1

Ось як я це зробив в Ubuntu 14.04 з терміналу:

1) Перевірте ім'я свого пристрою:

xinput list

2) Перегляньте доступні варіанти для вашого пристрою:

xinput list-props "Your Device Name"

3) Редагуйте налаштування (щоб параметри були послідовними після перезавантаження / відключення, просто додайте цю команду до програм запуску ):

xinput set-prop "Your Device Name" "Option Name" "Value"

Ось приклад команди, яку я використовував для активації заблокованих перетяжок на своєму сенсорній панелі:

xinput set-prop "SynPS/2 Synaptics TouchPad" "Synaptics Locked Drags" 1

Щоб активувати / змінити інший варіант, просто знайдіть у своєму пристрої доступні параметри та грайте з ними, поки не отримаєте бажаний результат, а потім додайте команду до програм запуску, і ви закінчите! Сподіваюся, це допомагає! :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.