Włącz / wyłącz touchpad

17

Udało mi się zainstalować Ubuntu 16.04 na moim asus ux501 vw, ale niektóre skróty nie działają. Nie chcę ich wszystkich naprawiać, ale tylko jeden: skrót, który pozwala mi włączyć lub wyłączyć touchpad, dzięki czemu mogę pisać długie dokumenty przy pracy z touchpadem.

Próbowałem go znaleźć w Google, ale nic nie dostałem.

Czy ktoś może mi wyjaśnić, jak to naprawić? Dzięki !

Rei
źródło

Odpowiedzi:

24

Stworzyłem ten skrypt bashowy z odpowiedzi negusp . Wyszukuje i przełącza urządzenie TouchPad. Możesz skonfigurować niestandardowy skrót do niego w ustawieniach systemu.

#!/bin/bash

read TPdevice <<< $( xinput | sed -nre '/TouchPad|Touchpad/s/.*id=([0-9]*).*/\1/p' )
state=$( xinput list-props "$TPdevice" | grep "Device Enabled" | grep -o "[01]$" )

if [ "$state" -eq '1' ];then
    xinput --disable "$TPdevice" && notify-send -i emblem-nowrite "Touchpad" "Disabled"
else
    xinput --enable "$TPdevice" && notify-send -i input-touchpad "Touchpad" "Enabled"
fi

Ustawiam Ctrl+ Shift+ F9dla włączania i wyłączania przełączania touchpada w następujący sposób:

wprowadź opis zdjęcia tutaj

Edycja: Może być konieczne ustawienie skryptu jako wykonywalnego za pomocą komendy chmod + x nazwa pliku lub input / bin / bash / filepath w polu Command w oknie skrótów niestandardowych.

Almas Dusal
źródło
2
Rzadko trzeba łączyć grepi sed. Możesz łatwo skonsolidować dwa do sed -nre '/TouchPad/s/.*id=([0-9]*).*/\1/p'.
David Foerster
3
Mała poprawka w skrypcie dla Ubuntu 17.10 po otrzymaniu linii błędu 6: [:: wyrażenie całkowite oczekuje, że nie można znaleźć urządzenia Zmień TouchPada na Touchpad
Gregor Grajzar
1
Świetna odpowiedź! Moimi jedynymi dodatkami są odpowiednio dodać zenity --info --text "Touchpad DISABLED" --timeout=2i zenity --info --text "Touchpad ENABLED" --timeout=2do twoich ifi elsebloków, aby wyświetlić okno, które ogłasza nowy stan, a następnie automatycznie zamyka się w ciągu 2 sekund.
Gabriel Staples,
1
Zobacz moją niewielką modyfikację tutaj: askubuntu.com/a/1109515/327339
Gabriel Staples
1
Aktualizacja: niektóre systemy wyświetlają się Touchpadzamiast TouchPadw danych wyjściowych z xinput, więc zaktualizowałem odpowiedź, aby wyszukać oba. Poprawiłem też problem z wolnym kółkiem przewijania, używając imwheel. Zobacz pełną odpowiedź tutaj: askubuntu.com/questions/844151/enable-disable-touchpad/…
Gabriel Staples
11

Chcesz skrótu, ale możesz łatwo umieścić 2 skrypty na pulpicie i wykonać je.

Najpierw idź do terminalu. Wpisz xinput. Przykład wyjścia:

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                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)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Laptop_Integrated_Webcam_1.3M             id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys 

Znajdź touchpad. W tym przykładzie touchpad jest wymieniony jako id = 12

Utwórz pierwszy skrypt za pomocą tego:

#!/bin/bash
xinput enable 12

Zapisz go i nazwij touchpadenable.sh, a następnie w terminalu oznacz go jako wykonywalny za pomocą:

chmod +x touchpadenable.sh

Zrób dokładnie to samo, ale zmień nazwę pliku na touchpaddisable.sh (lub cokolwiek) i zamiast

xinput enable 12

Użyj polecenia

xinput disable 12

Zapisz, zaznacz jako plik wykonywalny i powinieneś być w stanie uruchomić skrypty z pulpitu. Uwaga: może być konieczne kliknięcie skryptów prawym przyciskiem myszy, kliknięcie właściwości i zezwolenie na wykonanie.

negusp
źródło
Hej dzięki za odpowiedź! Użyję czegoś takiego! Sądzisz, że to tylko możliwe, że utworzę jeden plik skryptu, aby móc użyć tego samego skrótu?
Rei
@Thomas Zobacz tę odpowiedź: askubuntu.com/questions/597395/…
negusp
6

Musisz robić jak negusp , najpierw sprawdź swoje urządzenie dotykowe, a wyświetli się coś takiego:

~ $ xinput
⎡ Identyfikator wirtualnego wskaźnika rdzenia = 2 [wskaźnik główny (3)]
↳ ↳ Wskaźnik wirtualnego rdzenia XTEST id = 4 [wskaźnik slave (2)]
⎜ ↳ PixArt Dell MS116 USB Optical Mouse id = 10 [wskaźnik slave (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 14 [wskaźnik slave (2)]
↳ ↳ DLLC6B2: 00 06CB: 75BF Touchpad id = 12 [wskaźnik slave (2)]
⎣ Identyfikator wirtualnej klawiatury rdzenia = 3 [klawiatura główna (2)]
    ↳ Identyfikator klawiatury wirtualnego rdzenia XTEST = 5 [klawiatura podrzędna (3)]
    ↳ Identyfikator przycisku zasilania = 6 [klawiatura podrzędna (3)]
    ↳ Identyfikator magistrali wideo = 7 [klawiatura podrzędna (3)]
    ↳ Przycisk zasilania id = 8 [klawiatura podrzędna (3)]
    ↳ Przycisk uśpienia id = 9 [klawiatura podrzędna (3)]
    ↳ Integrated_Webcam_HD id = 11 [klawiatura podrzędna (3)]
    ↳ AT Translated Set 2 keyboard id = 13 [slave keyboard (3)]
    ↳ Klawisze skrótu Dell WMI id = 15 [klawiatura podrzędna (3)]
    ↳ Klawisze skrótów bezprzewodowych DELL id = 16 [klawiatura podrzędna (3)]

W moim przypadku jest to urządzenie o id = 12, teraz utwórz skrypt bash o nazwie „przełącz-dotknij” w twoim folderze Desktop w folderze o nazwie „bin”, będzie to „~ / Desktop / bin” i skopiuj następny kod, sprawdź zmienna urządzenia jest wskazywana na mój touch id = 12, napraw to z twoim przypadkiem:

#!/bin/bash

device=12
state=`xinput list-props "$device" | grep "Device Enabled" | grep -o "[01]$"`

if [ $state == '1' ];then
  xinput --disable $device
else
  xinput --enable $device
fi

Ustaw uprawnienie do wykonywania skryptu:

chmod 775 /Desktop/bin/toggle-touch

Na koniec możesz dodać tę ścieżkę do „.bashrc” z folderu domowego, po prostu dodaj tę linię na końcu pliku:

PATH=$PATH:~/Desktop/bin

zaktualizuj ścieżkę za pomocą:

. .bashrc

Następnie możesz wykonać ten skrypt z dowolnego miejsca, mam nadzieję, że ta pomoc.

hermeslm
źródło
1

W moim Ubuntu 18.04 odpowiedź Almas Dusal nie zadziałała, dopóki nie zmieniłem litery „p” na małe litery w TouchPadnastępującym wierszu jego kodu:

read TPdevice <<< $( xinput | sed -nre '/Touchpad/s/.*id=([0-9]*).*/\1/p' )

Po tym touchpad został pomyślnie wyłączony i włączony przez skrypt, ale nie zostało to odzwierciedlone na ekranie ustawień myszy i touchpada . Utworzyłem następujący nowy skrypt, który przełącza touchpad podczas aktualizacji widoku ustawień.

#!/bin/bash

state=$( gsettings get org.gnome.desktop.peripherals.touchpad send-events )

if [ "$state" = "'enabled'" ];then
    gsettings set org.gnome.desktop.peripherals.touchpad send-events 'disabled' \
        && notify-send -i touchpad-disabled-symbolic "Touchpad" "Disabled"
else
    gsettings set org.gnome.desktop.peripherals.touchpad send-events 'enabled' \
        && notify-send -i input-touchpad-symbolic "Touchpad" "Enabled"
fi
Samuli Asmala
źródło
1

Testowane i działa na Ubuntu 14.04, 16.04 i 18.04.

Podoba mi się odpowiedź @Almas Dusal , która podoba się w odpowiedzi @ negusp , z wyjątkiem użycia mojego zmodyfikowanego skryptu, ponieważ ma on 3 dodatkowe korzyści ( AKTUALIZACJA: korzyści 1 i 3 poniżej zostały dodane 12 września 2019 r. ):

  1. Przeszukuje dane wyjściowe xinputzarówno dla TouchpadAND TouchPad, ponieważ niektóre systemy mają litery P pisane wielkimi literami, podczas gdy inne nie. To sprawia, że ​​mój skrypt jest kompatybilny z większą liczbą systemów (mam nadzieję WSZYSTKIE systemy).
  2. Dodaje 2-sekundowe, automatycznie zamykane okna wyskakujące zenity, aby pokazać, czy touchpad jest teraz WŁĄCZONY, czy WYŁĄCZONY. Zobacz zrzuty ekranowe tych okien wyskakujących poniżej.
  3. Prawidłowo naprawia prędkość kółka przewijania, włączając imwheel(co rozwiązuje problem powolnego kółka przewijania w systemie Ubuntu / Linux podczas korzystania z kółka myszy) podczas korzystania z myszy, a wyłączając imwheelprzy użyciu touchpada, ponieważ w imwheelprzeciwnym razie przewijanie touchpada jest naprawdę glitchy po włączeniu. Pamiętaj, aby odkomentować odpowiednie linie, aby to zadziałało. Np .: # imwheel -b "4 5"i # killall imwheel.
#!/bin/bash

# GS_toggle_touchpad.sh
# - toggle the touchpad on and off

# Gabriel Staples
# Written: 2 Apr. 2018 
# Updated: 12 Sept. 2019 

# References:
# - /ubuntu//a/874865/327339
# - /ubuntu/844151/enable-disable-touchpad/1109515#1109515 <-- my own ans!

# Search for id number of "TouchPad" OR "Touchpad" in `xinput` list; manually type `xinput` to see all your devices
read TouchPadDeviceId <<< $( xinput | sed -nre '/TouchPad|Touchpad/s/.*id=([0-9]*).*/\1/p' ) 

state=$( xinput list-props "$TouchPadDeviceId" | grep "Device Enabled" | grep -o "[01]$" )

echo "TouchPadDeviceId = $TouchPadDeviceId"
echo "state = $state"

if [ "$state" -eq '1' ];then
    xinput --disable "$TouchPadDeviceId"
    zenity --info --text "Touchpad DISABLED" --timeout=2
    # Next line required only if using imwheel to fix slow scroll speed in Chrome, for ex; see here: 
    # /ubuntu//a/991680/327339
    # imwheel -b "4 5"
else
    xinput --enable "$TouchPadDeviceId"
    zenity --info --text "Touchpad ENABLED" --timeout=2
    # Next line required only if using imwheel to fix slow scroll speed in Chrome, for ex; see here: 
    # /ubuntu//a/991680/327339
    # killall imwheel
fi

Pamiętaj, że kółko zębate jest wymagane tylko wtedy, gdy postępujesz zgodnie z tą odpowiedzią, aby również zmienić prędkość kółka przewijania: Napraw na stałe prędkość przewijania Chrome .

Teraz przypisz mu klawisz skrótu Ctrl+ Alt+ P(lub cokolwiek wybierzesz [w moim przypadku „P” oznacza touch'P ”). Mój dodatek do powyższego skryptu to zenitysamozamykająca część okna podręcznego, którą opisuję więcej w mojej odpowiedzi tutaj ( /superuser//a/1310142/425838 ).

Teraz, gdy używam powyższego skrótu, widzę to okienko wyskakujące, które zamyka się automatycznie po 2 sekundach:

wprowadź opis zdjęcia tutaj

Po ponownym naciśnięciu tego okna pojawia się wyskakujące okienko, które zamyka się automatycznie po 2 sekundach:

wprowadź opis zdjęcia tutaj

Doskonały!

Jako dodatkowy bonus, jeśli jesteś ciężkim użytkownikiem myszy, po prostu dodaj polecenie, które wywołuje powyższy skrypt do programów startowych w Ubuntu, aby uruchamiał i wyłączał panel dotykowy przy każdym uruchomieniu komputera! Mam ten zestaw, dzięki czemu mogę rzucić się na uderzanie w podkładkę dłonią dłonią i przez cały czas usuwając rzeczy przypadkowo! Teraz, gdy moja ręka uderza w gładzik, nic się nie dzieje, ponieważ jest wyłączone. :)

Uwaga: to wszystko działa świetnie w Ubuntu 18.04, a także w starszych wersjach. Przetestowałem to w Ubuntu 18.04 i Ubuntu 14.04. Oto zrzut ekranu z okna ustawień skrótów w 18.04:

wprowadź opis zdjęcia tutaj

Związane z:

  1. UDPATE: Pobierz najnowszą wersję tego skryptu tutaj! https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/toggle_touchpad.sh
  2. Napraw na stałe szybkość przewijania Chrome
Gabriel Staples
źródło
Nie można go włączyć na moim HP Probook. W xinput są 2 elementy SynPS/2 Synaptics TouchPadi SYNA306A:00 06CB:CD0B Touchpad. Pierwsze wykonanie wyłącza jedno, drugie wyłącza drugie. Stamtąd będzie przełączać drugi, ale nigdy pierwszy.
rtaft,
0

Pozostawiając mój skrypt tutaj (mniej więcej taki sam jak powyżej). Działa po wyjęciu z pudełka, nie ma potrzeby wcześniejszego wyszukiwania identyfikatora urządzenia.

#!/bin/bash

function query_device_id {
    xinput list | grep -i touchpad | sed 's/.*id=\([0-9]*\).*/\1/g'
}

let device_id=$(query_device_id)

let state=$(xinput list-props $device_id | grep Enabled | awk '{print $4;}')

let new_state=$((1 - $state))

xinput set-prop $device_id "Device Enabled" $new_state
erosb
źródło
0

Utwórz skrypt powłoki i wklej do niego poniższy kod i nazwij go touchPadDisable.sh

#!/bin/bash
temp=$(xinput | grep -i "Elantech Touchpad" | cut -d"=" -f 2 | cut -d"[" -f 1)
xinput disable $temp

Utwórz kolejny skrypt powłoki i wklej do niego poniższy kod i nazwij go touchPadEnable.sh

#!/bin/bash
temp=$(xinput | grep -i "Elantech Touchpad" | cut -d"=" -f 2 | cut -d"[" -f 1)
xinput enable $temp

Pierwszy skrypt wyłączy touchpad, a drugi włączy touchpad.

Możesz dodać ten skrypt do niestandardowych skrótów na klawiaturze.

Shrinivas Kulkarni
źródło