Saya ingin agar touchpad saya dinonaktifkan secara otomatis ketika mouse eksternal terhubung dan diaktifkan ketika tidak ada mouse. Saya sudah mencoba menggunakan touchpad-indicator
tetapi itu gagal dalam kasus-kasus ketika komputer telah ditidurkan dengan mouse yang terhubung dan terbangun dengan mouse terputus.
Saya telah mencoba membuat skrip berikut menjadi daemon untuk menyelesaikan masalah ini, tetapi saya tidak dapat membuatnya berfungsi:
#!/bin/bash
declare -i TID
declare -i MID
TID=`xinput list | grep -Eo 'Touchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
MID=`xinput list | grep -Eo 'Mouse\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
if [ $MID -gt 0 ]
then
xinput disable $TID
else
xinput enable $TID
fi
Saya mencoba start-stop-daemon -S -x ./myscript.sh -b
dan setsid ./myscript.sh >/dev/null 2>&1 < /dev/null &
dan nohup ./myscript 0<&- &>/dev/null &
bahkan./myscript.sh &
Semua ini mengembalikan beberapa angka 4 digit, yang, saya kira, harus PID dari proses yang dimulai tetapi ketika saya meluncurkan lxtask tidak ada proses dengan PID ini , bahkan jika saya mencentang "lihat semua proses". Dan, tentu saja, itu tidak berhasil!
xinput
memerlukan server X yang berjalan, dan sebagian besar metode menjalankan hal-hal seperti daemon tidak memiliki pengetahuan atau kemampuan untuk terhubung ke X. Ketiga, dan alasan utama mengapa Anda harus selalu menjelaskan apa yang Anda coba lakukan adalah solusi yang sangat sering bahwa seseorang berusaha menerapkannya sebenarnya bukanlah cara untuk menyelesaikannya dan Anda akhirnya mengajukan pertanyaan yang salah, umumnya dikenal sebagai masalah XY .Jawaban:
Skrip dasar yang Anda butuhkan hanyalah:
Script di atas akan mengaktifkan trackpad tergantung pada apakah mouse terhubung. Saat diluncurkan, ini akan berjalan selamanya dan akan memeriksa mouse setiap detik, menonaktifkan atau mengaktifkan touchpad sesuai.
Sekarang, simpan skrip sebagai
~/touchpad.sh
, buat skrip tersebut dapat dieksekusi (chmod +x ~/touchpad.sh
) dan tambahkan ke program startup sesi GUI Anda. Anda belum menentukan lingkungan desktop mana yang Anda gunakan, tetapi karena Anda menyebutkanlxtask
, saya akan menganggap Anda menggunakanLXDE
. Bagaimanapun, berikut adalah instruksi untuk keduanyaLXDE
danUnity
:Tambahkan skrip ke file autostart LXDE
Pastikan Anda mengganti "PROFIL" dengan nama sebenarnya dari profil LXDE Anda, Anda dapat mengetahui apa itu dengan menjalankan
ls ~/.config/lxsession/
.Tambahkan skrip ke file autostart Unity
Buka
Startup Applications
(cari di dashboard untuk "Startup")Klik "Tambah" dan kemudian tempel jalur ke skrip Anda di bidang perintah:
sumber
Oke, saya sudah membuat aturan udev untuk itu, dan itu, seperti @terdon katakan, cara yang jauh lebih bersih
Jadi, berkat panduan ini , saya membuat file "touchpad_toggle.rules" di /etc/udev/rules.d/ (memerlukan akses root) dan mengisinya dengan dua baris:
Jangan lupa ganti "nama pengguna" dengan nama pengguna Anda!
Isi skrip shell aktif dan nonaktif ini hanya versi kastrasi dari skrip dalam pertanyaan saya. Contoh - off.sh:
Anda harus menggunakan xinput untuk mengaktifkan $ TID di on.sh
Dan jangan lupa untuk menambahkan skrip dalam pertanyaan saya (atau yang @terdon sarankan, tetapi tanpa loop) ke sesi autostart seperti yang dia katakan pada Anda dalam jawabannya.
Itu dia, tapi saya harus menambahkan satu hal:
Jika Anda memiliki panel sentuh Synaptics (saya punya Elantech, jadi tidak cocok untuk saya), Anda dapat mengganti skrip Anda (jalur yang Anda tulis setelah RUN + =) dengan perintah sederhana
/usr/bin/synclient TouchpadOff=0
dan masing-masing 1sumber
udev
aturan apa pun, mungkin lebih baik menyimpan file di tempat lain selain direktori home. Misalnya:/usr/local/bin
atau/opt/touchpad-toggle/bin/
.