Dove devo incollare un comando "xinput" in modo che venga eseguito all'avvio di GNOME?


10

Sul mio Thinkpad devo eseguire qualcosa di simile nel terminale:

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

in modo che i miei 2 pulsanti sul mio touchpad emulino il clic centrale del mouse. Ora ho bisogno che questa riga venga eseguita ogni volta che avvio GNOMe o X o altro, in modo che "funzioni".

Ho provato ~ / .xsession o ~ / .bashrc ma senza risultati. Dovrei metterlo negli script di avvio GNOME o in / etc / X da qualche parte?

Sto usando Ubuntu 11.10.


Prova ad aggiungere un sleep 5all'inizio del tuo .xsessionfile?
Thomas Ahle,

1
@ThomasAhle che non risolverà il problema se il gestore delle finestre viene caricato e cambia le proprietà evdev dopo l'esecuzione della .xsession.
Marcin Kaminski,

Risposte:


7

Sto usando Enlightenment DM, ma questo è rilevante per altri DM / desktop. Inizio la mia sessione usando xsession, quindi inizialmente ho inserito i comandi xinput in ~ / .xsession che non ha modificato tutte le impostazioni che volevo cambiare. Solo alcuni di loro. Mi aspettavo tutte o nessuna modifica, quindi ho aggiunto un ciclo di 10 interazioni alla mia sessione .x con intervalli di 1 secondo, eseguendo i comandi xinput ogni volta e controllando se le impostazioni erano state applicate. Con mia sorpresa, tutte le impostazioni sono state applicate dopo la prima iterazione.

Ciò significa che è il tuo DM che fa qualcosa per sovrascrivere le tue impostazioni di xinput e poiché il comando che avvia il tuo DM (E17 nel mio caso) è l'ultimo nel tuo file .xsession, questo file non è adatto a questo.

Ho aggiunto le seguenti righe nel mio ~ / .profile e questo ha risolto il 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

PS. set-int-prop è stato deprecato a favore di set-prop (man xinput).

Spero che questo aiuti qualcuno.


La sceneggiatura è carina, ma sfortunatamente non mi dà una soluzione. Per ora l'unico metodo funziona, se eseguo il terminale e quindi eseguo 'xinput set-prop' con le opzioni richieste. Ho provato la sceneggiatura di Marcin, Startup Application, ma sfortunatamente non ha funzionato.
Gee del

"set-int-prop è stato deprecato a favore di set-prop" T • H • A • N • K • • Y • O • U •
Clément

4

Aggiungi il comando direttamente alle applicazioni di avvio. Nel campo di comando.

o

crea uno script semplice e aggiungi lo script alle applicazioni di avvio.


3

Crea un file /etc/X11/Xsession.d/per esso.


Per me era/etc/X11/xinit/Xsession
Thomas Ahle il

3
In genere non incoraggio a apportare modifiche alla configurazione specifiche dell'utente in un file di configurazione dell'intero sistema. In primo luogo perché crea una cosa aggiuntiva da ricordare quando è necessario migrare su una macchina diversa e in secondo luogo, perché questi file sono principalmente lì per fornire impostazioni predefinite sensate. È bello poter portare con sé l'istantanea di $ HOME e l'elenco dei pacchetti installati quando è necessario reinstallare / migrare.
Marcin Kaminski,

1

Ecco come l'ho fatto in Ubuntu 14.04 dal terminale:

1) Controlla il nome del tuo dispositivo:

xinput list

2) Vedi le opzioni disponibili per il tuo dispositivo:

xinput list-props "Your Device Name"

3) Modifica impostazioni (per rendere coerenti le impostazioni dopo il riavvio / spegnimento basta aggiungere questo comando alle applicazioni di avvio ):

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

Ecco un comando di esempio che ho usato per attivare i trascini bloccati nel mio touchpad:

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

Per attivare / modificare un'altra opzione, cercala nelle opzioni disponibili sul tuo dispositivo e gioca con loro fino ad ottenere il risultato desiderato, quindi aggiungi il comando ad Applicazioni di avvio e hai finito! Spero che sia d'aiuto! :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.