Di mana saya harus menempelkan perintah "xinput" agar dieksekusi ketika GNOME dimulai?

10

Di Thinkpad saya, saya perlu menjalankan sesuatu seperti ini di terminal:

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

sehingga saya tombol 2 pada touchpad saya meniru klik tengah mouse. Sekarang saya perlu baris ini dieksekusi setiap kali saya memulai GNOMe atau X atau apa pun, sehingga "hanya berfungsi".

Saya mencoba ~ / .xsession atau ~ / .bashrc tetapi tidak berhasil. Haruskah saya meletakkannya di skrip mulai GNOME atau di / etc / X di suatu tempat?

Saya menggunakan Ubuntu 11.10.

michuk
sumber
Coba tambahkan sleep 5di awal .xsessionfile Anda ?
Thomas Ahle
1
@ThomasAhle yang tidak akan menyelesaikan masalah jika manajer jendela dimuat dan mengubah properti evdev setelah .xsession dijalankan.
Marcin Kaminski

Jawaban:

7

Saya menggunakan DM Pencerahan, tapi itu relevan dengan DM / desktop lain. Saya memulai sesi saya menggunakan xsession jadi saya awalnya menaruh perintah xinput di ~ / .xsession yang tidak mengubah semua pengaturan yang ingin saya ubah. Hanya beberapa dari mereka. Saya mengharapkan semua atau tidak ada perubahan, jadi saya menambahkan 10-interation loop ke .xsession saya dengan interval 1 detik, menjalankan perintah xinput setiap kali dan memeriksa apakah pengaturan diterapkan. Yang mengejutkan saya, semua pengaturan diterapkan setelah iterasi pertama.

Ini berarti DM Anda yang melakukan sesuatu untuk menimpa pengaturan xinput Anda dan karena perintah yang meluncurkan DM Anda (E17 dalam kasus saya) adalah yang terakhir dalam file .xsession Anda, file ini bukan tempat untuk ini.

Saya telah menambahkan baris berikut di profil ~ /. Saya dan ini telah menyelesaikan masalah:

# 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 telah ditinggalkan karena set-prop (man xinput).

Semoga ini bisa membantu seseorang.

Marcin Kaminski
sumber
Naskahnya bagus, tapi sayangnya itu tidak saya berikan solusinya. Untuk saat ini satu-satunya metode yang berfungsi, jika saya menjalankan terminal dan kemudian menjalankan 'xinput set-prop' dengan opsi yang diperlukan. Saya mencoba skrip Marcin, Aplikasi Startup tetapi sayangnya itu tidak berhasil.
Geeocode
"set-int-prop telah ditinggalkan demi set-prop" T • H • A • N • K • • Y • O • U •
Clément
4

Tambahkan perintah langsung ke aplikasi startup. Di bidang perintah.

atau

buat skrip sederhana dan tambahkan skrip ke aplikasi startup.

NickTux
sumber
3

Buat file /etc/X11/Xsession.d/untuk itu.

Florian Diesch
sumber
Bagi saya itu/etc/X11/xinit/Xsession
Thomas Ahle
3
Saya biasanya tidak menyarankan untuk membuat perubahan konfigurasi khusus pengguna dalam file konfigurasi sistem. Pertama karena ia menciptakan hal tambahan yang perlu diingat ketika Anda harus bermigrasi ke mesin yang berbeda dan kedua, karena file-file ini sebagian besar ada untuk memberikan default waras. Sangat menyenangkan bisa mengambil snapshot $ HOME Anda dan daftar paket yang terinstal ketika Anda perlu menginstal ulang / bermigrasi.
Marcin Kaminski
1

Ini adalah bagaimana saya melakukannya di Ubuntu 14.04 dari terminal:

1) Periksa nama perangkat Anda:

xinput list

2) Lihat opsi yang tersedia untuk perangkat Anda:

xinput list-props "Your Device Name"

3) Edit pengaturan (untuk membuat pengaturan konsisten setelah reboot / shutdown cukup tambahkan perintah ini ke Aplikasi Startup ):

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

Berikut adalah contoh perintah yang saya gunakan untuk mengaktifkan drag yang terkunci di touchpad saya:

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

Untuk mengaktifkan / mengubah opsi lain, cukup mencarinya di perangkat Anda yang tersedia opsi dan bermain dengan mereka sampai Anda mendapatkan hasil yang diinginkan, kemudian tambahkan perintah ke Aplikasi Startup dan selesai! Semoga ini bisa membantu! :)

Marco
sumber