Activar / desactivar panel táctil


17

Logré instalar Ubuntu 16.04 en mi asus ux501 vw, pero algunos de mis accesos directos no funcionan. No estoy buscando solucionarlos todos, sino solo uno: el acceso directo que me permite habilitar o deshabilitar el panel táctil, para que pueda escribir documentos largos trabajando sobre el panel táctil.

Traté de encontrarlo en google pero no obtuve nada.

¿Alguien puede explicarme cómo arreglar eso, por favor? Gracias !

Respuestas:


24

Creé este script bash a partir de la respuesta de negusp . Encuentra y alterna el dispositivo TouchPad. Puede configurar un acceso directo personalizado en la configuración del sistema.

#!/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

Estoy configurando Ctrl+ Shift+ F9para activar y desactivar el panel táctil de la siguiente manera:

ingrese la descripción de la imagen aquí

Editar: es posible que deba hacer que su script sea ejecutable con el comando chmod + x filename o input / bin / bash / filepath al campo Command de la ventana de acceso directo personalizado.


2
Rara vez hay necesidad de encadenar grepy sed. Puede consolidar fácilmente los dos sed -nre '/TouchPad/s/.*id=([0-9]*).*/\1/p'.
David Foerster

3
Una pequeña corrección en el script para Ubuntu 17.10 después de obtener la línea de error 6: [:: se espera que la expresión entera no pueda encontrar el dispositivo Cambiar TouchPad a Touchpad
Gregor Grajzar

1
Respuesta impresionante! Mis únicas adiciones son para añadir zenity --info --text "Touchpad DISABLED" --timeout=2y zenity --info --text "Touchpad ENABLED" --timeout=2a sus ify elsebloques, respectivamente, para que aparezca una ventana que anuncia el nuevo estado luego autocloses en 2 seg.
Gabriel Staples el

1
Vea mi ligera modificación aquí: askubuntu.com/a/1109515/327339
Gabriel Staples el

1
Actualización: algunos sistemas se muestran en Touchpadlugar de TouchPaden la salida de xinput, por lo que he actualizado mi respuesta para buscar ambos. Además, también lo he solucionado correctamente, utilizando el problema de la rueda de desplazamiento lenta imwheel. Ver respuesta
Gabriel Staples el

11

Desea un acceso directo, pero puede poner fácilmente 2 scripts en el escritorio y ejecutarlos.

Primero, ve a la terminal. Tipo xinput. Ejemplo de salida:

⎡ 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 

Encuentra el panel táctil. En este ejemplo, el panel táctil aparece como id = 12

Crea el primer script con esto:

#!/bin/bash
xinput enable 12

Guárdelo y asígnele un nombre touchpadenable.sh, y en la terminal, márquelo como ejecutable con:

chmod +x touchpadenable.sh

Haga exactamente lo mismo otra vez, pero cambie el nombre del archivo como touchpaddisable.sh(o lo que sea), y en lugar de

xinput enable 12

Usa el comando

xinput disable 12

Guarde, marque como ejecutable y debería poder ejecutar los scripts desde el escritorio. Nota: puede que tenga que hacer clic con el botón derecho en los scripts, hacer clic en propiedades y permitir que se ejecute.


Hola gracias por la respuesta! ¡Usaré algo como esto! Solo una cosa, ¿crees que sería posible si lo hago en 1 archivo de script para que pueda usar el mismo acceso directo?
Rei

@Thomas Vea esta respuesta: askubuntu.com/questions/597395/…
negusp el

6

Debe hacer como la respuesta de negusp , primero verifique su dispositivo táctil y mostrará algo como esto:

~ $ xinput
Id Id. Del puntero del núcleo virtual = 2 [puntero maestro (3)]
⎜ ↳ ID de puntero XTEST de núcleo virtual = 4 [puntero esclavo (2)]
⎜ ↳ PixArt Dell MS116 USB Optical Mouse id = 10 [puntero esclavo (2)]
⎜ ↳ SynPS / 2 Synaptics TouchPad id = 14 [puntero esclavo (2)]
⎜ ↳ DLLC6B2: 00 06CB: 75BF Touchpad id = 12 [puntero esclavo (2)]
⎣ Id. De teclado del núcleo virtual = 3 [teclado maestro (2)]
    Id Id. Del teclado XTEST del núcleo virtual = 5 [teclado esclavo (3)]
    Id ID del botón de encendido = 6 [teclado esclavo (3)]
    Id Identificación del bus de video = 7 [teclado esclavo (3)]
    Id ID del botón de encendido = 8 [teclado esclavo (3)]
    ↳ ID del botón de reposo = 9 [teclado esclavo (3)]
    ↳ Integrated_Webcam_HD id = 11 [teclado esclavo (3)]
    ↳ AT Translated Set 2 keyboard id = 13 [teclado esclavo (3)]
    ↳ ID de teclas de acceso rápido de Dell WMI = 15 [teclado esclavo (3)]
    ↳ ID de teclas rápidas inalámbricas DELL = 16 [teclado esclavo (3)]

En mi caso es el dispositivo con id = 12, ahora cree un script bash con el nombre "toggle-touch" en su carpeta de escritorio en una carpeta llamada "bin", sería "~ / Desktop / bin" y copie el siguiente código, verifique la variable del dispositivo apunta a mi identificación táctil = 12, corríjala con su caso:

#!/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

Establezca este permiso de ejecución de script:

chmod 775 /Desktop/bin/toggle-touch

Finalmente, puede agregar esta ruta al ".bashrc" desde su carpeta de inicio, simplemente agregue esta línea al final del archivo:

PATH=$PATH:~/Desktop/bin

actualizar la ruta con:

. .bashrc

Entonces puedes ejecutar este script desde cualquier lugar, espero esta ayuda.


1

En mi Ubuntu 18.04 , la respuesta de Almas Dusal no funcionó hasta que cambié la 'p' a minúsculas TouchPaden la siguiente línea de su código:

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

Después de que el panel táctil se deshabilitó y habilitó con éxito por el script, pero eso no se reflejó en la pantalla de configuración del mouse y el panel táctil . Creé la siguiente secuencia de comandos nueva que alterna el panel táctil al actualizar la vista de configuración.

#!/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

1

Probado y funciona en Ubuntu 14.04, 16.04 y 18.04.

Hacer como respuesta de @Almas Dusal , que le gusta la respuesta de @ negusp , salvo el uso del script modificado mi lugar ya que tiene 3 ventajas adicionales ( ACTUALIZACIÓN: Beneficios 1 y 3 a continuación se añadió 12 de septiembre 2019 ):

  1. Busca la salida de xinputambos TouchpadAND TouchPad, ya que algunos sistemas tienen la P en mayúscula mientras que otros no. Esto hace que mi script sea compatible con más sistemas (con suerte TODOS los sistemas).
  2. Agrega las ventanas emergentes de cierre automático de 2 segundos zenitypara mostrar si su panel táctil ahora está HABILITADO o DESHABILITADO. Ver capturas de pantalla de estas ventanas emergentes a continuación.
  3. Corrige adecuadamente la velocidad de la rueda de desplazamiento, lo imwheelque permite (lo que soluciona el problema de la rueda de desplazamiento lenta en Ubuntu / Linux cuando usa una rueda de desplazamiento del mouse) cuando usa un mouse, mientras que la desactiva imwheelcuando usa un panel táctil, ya imwheelque de lo contrario hace que el desplazamiento del panel táctil sea realmente irregular cuando está habilitado Asegúrese de descomentar las líneas respectivas para que esto funcione. Ej: # imwheel -b "4 5"y # 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

Tenga en cuenta que lo de imwheel solo es necesario si sigue esta respuesta para corregir la velocidad de su rueda de desplazamiento también: Fije permanentemente la velocidad de desplazamiento de Chrome .

Ahora, asígnele una tecla de acceso directo de Ctrl+ Alt+ P(o lo que elija [la 'P' significa touch'P'ad en mi caso]). Mi adición al script anterior es la zenityparte de la ventana emergente de cierre automático, que describo más en mi respuesta aquí ( /superuser//a/1310142/425838 ).

Ahora, cuando uso el acceso directo anterior, veo esta ventana emergente, que se cierra automáticamente después de 2 segundos:

ingrese la descripción de la imagen aquí

Y si lo presiono nuevamente, aparece esta ventana emergente, que se cierra automáticamente después de 2 segundos:

ingrese la descripción de la imagen aquí

¡Perfecto!

Como una ventaja adicional, si es un usuario pesado del mouse, simplemente agregue el comando que llama a su script anterior a sus programas de inicio en Ubuntu para que se ejecute y desactive su trackpad cada vez que su computadora se inicia. ¡Tengo este conjunto para que pueda dejar de golpear el trackpad con la base de mi mano y eliminar cosas accidentalmente todo el tiempo! Ahora, cuando mi mano golpea el track pad, no pasa nada porque está desactivado. :)

Nota: todo esto funciona muy bien en Ubuntu 18.04, así como en versiones anteriores. Lo he probado en Ubuntu 18.04 y Ubuntu 14.04. Aquí hay una captura de pantalla de la ventana de configuración de acceso directo en 18.04:

ingrese la descripción de la imagen aquí

Relacionado:

  1. Fijar permanentemente la velocidad de desplazamiento de Chrome

No se puede volver a habilitar en mi HP Probook. Hay 2 elementos en xinput, SynPS/2 Synaptics TouchPady SYNA306A:00 06CB:CD0B Touchpad. La primera ejecución desactiva una, la segunda desactiva la otra. A partir de ahí, alternará el segundo, pero nunca el primero.
rtaft

0

Dejando mi script aquí (más o menos lo mismo que arriba). Funciona de fábrica, sin necesidad de buscar previamente la ID del dispositivo.

#!/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

0

Cree un script de shell y pegue el siguiente código en él y asígnele el nombre touchPadDisable.sh

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

Cree otro script de shell y pegue el siguiente código en él y asígnele el nombre touchPadEnable.sh

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

El primer script deshabilitará el panel táctil y el segundo habilitará el panel táctil.

Puede agregar este script a accesos directos personalizados en teclados.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.