¿Dónde debo pegar un comando "xinput" para que lo ejecute cuando se inicia GNOME?

10

En mi Thinkpad necesito ejecutar algo como esto en la terminal:

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

para que mis 2 botones en mi panel táctil emulen el clic central del mouse. Ahora necesito que esta línea se ejecute cada vez que inicio GNOMe o X o lo que sea, para que "simplemente funcione".

Intenté ~ / .xsession o ~ / .bashrc pero fue en vano. ¿Debo ponerlo en los scripts de inicio de GNOME o en / etc / X en alguna parte?

Estoy usando Ubuntu 11.10.

michuk
fuente
¿Intenta agregar un sleep 5al principio de su .xsessionarchivo?
Thomas Ahle
1
@ThomasAhle que no resolverá el problema si se carga el administrador de ventanas y cambia las propiedades evdev después de que se ejecute la .xsession.
Marcin Kaminski

Respuestas:

7

Estoy usando Enlightenment DM, pero eso es relevante para otros DM / escritorios. Comienzo mi sesión usando xsession, así que inicialmente puse los comandos xinput en ~ / .xsession que no cambiaron todas las configuraciones que quería cambiar. Solo algunos de ellos. Esperaba todos los cambios o ninguno, así que agregué un bucle de 10 interacciones a mi .xsession con intervalos de 1 segundo, ejecutando comandos xinput cada vez y comprobando si se aplicaron las configuraciones. Para mi sorpresa, todas las configuraciones se aplicaron después de la primera iteración.

Esto significa que es su DM el que hace algo para anular su configuración de xinput y dado que el comando que inicia su DM (E17 en mi caso) es el último en su archivo .xsession, este archivo no es lugar para esto.

He agregado las siguientes líneas en mi ~ / .profile y esto ha resuelto el problema:

# 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

PD. set-int-prop ha quedado en desuso a favor de set-prop (man xinput).

Esperemos que esto ayude a alguien.

Marcin Kaminski
fuente
El guión es bueno, pero desafortunadamente no me da una solución. Por ahora el único método funciona, si ejecuto el terminal y luego ejecuto el 'xinput set-prop' con las opciones requeridas. Probé el script de Marcin, Aplicación de inicio, pero desafortunadamente no funcionó.
Geeocode
"set-int-prop ha quedado en desuso a favor de set-prop" T • H • A • N • K • • Y • O • U •
Clément
4

Agregue el comando directamente a las aplicaciones de inicio. En el campo de comando.

o

cree un script simple y agregue el script a las aplicaciones de inicio.

NickTux
fuente
3

Crea un archivo /etc/X11/Xsession.d/para ello.

Florian Diesch
fuente
Para mí eso fue/etc/X11/xinit/Xsession
Thomas Ahle
3
Por lo general, no recomiendo realizar cambios de configuración específicos del usuario en un archivo de configuración de todo el sistema. En primer lugar, porque crea algo adicional para recordar cuando necesita migrar a una máquina diferente y, en segundo lugar, porque estos archivos están principalmente allí para proporcionar valores predeterminados razonables. Es bueno poder tomar la instantánea de su $ HOME y la lista de paquetes instalados cuando necesite reinstalar / migrar.
Marcin Kaminski
1

Así es como lo hice en Ubuntu 14.04 desde la terminal:

1) Verifique el nombre de su dispositivo:

xinput list

2) Vea las opciones disponibles para su dispositivo:

xinput list-props "Your Device Name"

3) Editar configuración (para hacer que la configuración sea consistente después de reiniciar / apagar simplemente agregue este comando a las Aplicaciones de inicio ):

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

Aquí hay un ejemplo de comando que utilicé para activar los arrastres bloqueados en mi panel táctil:

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

Para activar / cambiar otra opción, simplemente búsquela en las opciones disponibles de su dispositivo y juegue con ellas hasta que obtenga el resultado deseado, luego agregue el comando a Aplicaciones de inicio y listo. ¡Espero eso ayude! :)

Marco
fuente