Gdzie muszę wkleić polecenie „xinput”, aby zostało ono wykonane po uruchomieniu GNOME?

10

Na moim Thinkpadzie muszę wykonać coś takiego w terminalu:

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

tak że moje 2 przyciski na touchpadzie emulują środkowe kliknięcie myszą. Teraz potrzebuję, aby ta linia była wykonywana za każdym razem, gdy uruchamiam GNOMe, X lub cokolwiek innego, aby „po prostu działała”.

Próbowałem ~ / .xsession lub ~ / .bashrc, ale bezskutecznie. Czy powinienem umieścić go w skryptach startowych GNOME, czy gdzieś w / etc / X?

Używam Ubuntu 11.10.

Michuk
źródło
Spróbuj dodać sleep 5na początku .xsessionpliku?
Thomas Ahle,
1
@ThomasAhle, który nie rozwiąże problemu, jeśli menedżer okien zostanie załadowany i zmieni właściwości evdev po wykonaniu .xsession.
Marcin Kamiński

Odpowiedzi:

7

Używam oświecenia DM, ale dotyczy to innych DM / komputerów stacjonarnych. Sesję rozpoczynam od xsession, więc początkowo umieściłem polecenia xinput w ~ / .xsession, które nie zmieniły wszystkich ustawień, które chciałem zmienić. Tylko niektóre z nich. Spodziewałem się wszystkich zmian lub ich braku, więc do mojej .xsession dodałem pętlę 10-interacyjną z 1-sekundowymi interwałami, uruchamiając za każdym razem polecenia xinput i sprawdzając, czy ustawienia zostały zastosowane. Ku mojemu zaskoczeniu wszystkie ustawienia zostały zastosowane po pierwszej iteracji.

Oznacza to, że to twój DM robi coś, aby przesłonić twoje ustawienia xinput, a ponieważ polecenie, które uruchamia twój DM (E17 w moim przypadku) jest ostatnim w twoim pliku .xsession, ten plik nie ma na to miejsca.

Dodałem następujące wiersze do mojego ~ / .profile i to rozwiązało problem:

# 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 został wycofany na korzyść set-prop (man xinput).

Mam nadzieję, że to komuś pomaga.

Marcin Kamiński
źródło
Skrypt jest fajny, ale niestety nie daje mi rozwiązania. Na razie jedyna metoda działa, jeśli uruchomię terminal, a następnie uruchomię „xinput set-prop” z wymaganymi opcjami. Próbowałem skryptu Marcina, aplikacji startowej, ale te niestety nie działały.
Geeocode,
„set-int-prop został wycofany na korzyść set-prop” T • H • A • N • K • • Y • O • U •
Clément
4

Dodaj polecenie bezpośrednio do aplikacji startowych. W polu poleceń.

lub

zrób prosty skrypt i dodaj go do aplikacji startowych.

NickTux
źródło
3

Utwórz w nim plik /etc/X11/Xsession.d/.

Florian Diesch
źródło
Dla mnie to był/etc/X11/xinit/Xsession
Thomas Ahle,
3
Zasadniczo nie zachęcam do wprowadzania zmian konfiguracyjnych specyficznych dla użytkownika w ogólnosystemowym pliku konfiguracyjnym. Po pierwsze dlatego, że tworzy dodatkową rzecz, o której należy pamiętać, kiedy trzeba przeprowadzić migrację na inną maszynę, a po drugie, ponieważ pliki te są w większości w celu zapewnienia rozsądnych ustawień domyślnych. Miło jest móc po prostu zrobić migawkę $ HOME i listę zainstalowanych pakietów, gdy trzeba ponownie zainstalować / przeprowadzić migrację.
Marcin Kamiński
1

Oto jak to zrobiłem w Ubuntu 14.04 z terminala:

1) Sprawdź nazwę swojego urządzenia:

xinput list

2) Zobacz dostępne opcje dla twojego urządzenia:

xinput list-props "Your Device Name"

3) Edytuj ustawienia (aby zachować spójność ustawień po ponownym uruchomieniu / zamknięciu, wystarczy dodać to polecenie do aplikacji startowych ):

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

Oto przykładowe polecenie, którego użyłem do aktywacji zablokowanych przeciągnięć na touchpadzie:

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

Aby aktywować / zmienić inną opcję, poszukaj jej w dostępnych opcjach urządzenia i baw się nimi, aż uzyskasz pożądany wynik, a następnie dodaj polecenie do aplikacji startowych i gotowe! Mam nadzieję, że to pomoże! :)

Marco
źródło