Куда мне вставить команду «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.

michuk
источник
Попробуйте добавить sleep 5в начало вашего .xsessionфайла?
Томас Ахл
1
@ThomasAhle, который не решит проблему, если менеджер окон загружен, и изменит свойства evdev после выполнения .xsession.
Марцин Камински

Ответы:

7

Я использую Enlightenment 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' с необходимыми опциями. Я попробовал скрипт Marcin, Startup Application, но, к сожалению, он не сработал.
Geeocode
«set-int-prop устарел в пользу set-prop» T • H • A • N • K • • Y • O • U •
Clément
4

Добавьте команду непосредственно в автозагрузку приложений. В командном поле.

или

сделайте простой скрипт и добавьте скрипт в автозагрузку приложений.

NickTux
источник
3

Создайте файл /etc/X11/Xsession.d/для этого.

Флориан Диш
источник
Для меня это было/etc/X11/xinit/Xsession
Томас Ахл
3
Как правило, я не рекомендую вносить изменения в конфигурацию конкретного пользователя в системный файл конфигурации. Во-первых, потому что это создает дополнительную вещь, о которой нужно помнить, когда вам нужно мигрировать на другой компьютер, и, во-вторых, потому что эти файлы в основном существуют для обеспечения нормальных значений по умолчанию. Приятно иметь возможность просто сделать снимок вашего $ HOME и список установленных пакетов, когда вам нужно переустановить / перенастроить.
Марцин Камински
1

Вот как я это сделал в Ubuntu 14.04 с терминала:

1) Проверьте название вашего устройства:

xinput list

2) Просмотреть доступные параметры для вашего устройства:

xinput list-props "Your Device Name"

3) Измените настройки (чтобы сделать настройки согласованными после перезагрузки / выключения, просто добавьте эту команду в Startup Applications ):

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

Вот пример команды, которую я использовал для активации заблокированных перетаскиваний в сенсорной панели:

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

Чтобы активировать / изменить другую опцию, просто найдите в вашем устройстве доступные опции и играйте с ними, пока не получите желаемый результат, затем добавьте команду в Startup Applications и все готово! Надеюсь, это поможет! :)

Marco
источник