Bagaimana cara mencegah gerakan mouse dari membangunkan komputer yang ditangguhkan?


32

Ini sangat menjengkelkan karena saya harus mencabut mouse setelah penundaan untuk memastikan bahwa benjolan sesekali tidak membangunkan sistem. Saya belum menemukan apa pun dalam pengaturan sistem yang dapat menonaktifkan ini dengan googling.

Jawaban:


24

Saya belum memeriksa BIOS, tetapi saya sudah menemukan solusinya!

Ringkasan singkat: Di /proc/acpi/wakeup, Anda dapat melihat perangkat mana yang saat ini diaktifkan untuk melanjutkan dari penangguhan. Daftar itu menunjukkan nama (disingkat) dari apa yang disebut "Perangkat". Contoh "PWRB" berarti "tombol daya".

Jika Anda menulis nama perangkat ke file itu, Anda beralih antara diaktifkan / dinonaktifkan.

Saya menulis HowTo kecil untuk menonaktifkan wakeup-by-mouse , berdasarkan pada blog di mana saya menemukan info itu.


1
Ini terdengar jauh lebih baik daripada jawaban saya, dan saya sudah mengedit jawaban saya. Terima kasih!
Robie Basak

2
Jadi, ini berfungsi (namun, saya perhatikan secara sepintas bahwa penggunaan saja sudotidak akan berhasil: seseorang harus melakukan sudo suterlebih dahulu, kemudian menggemakannya /proc/acpi/wakeup. Namun, saya bertanya-tanya apakah ada yang menemukan cara untuk hanya menonaktifkan mouse? Saya memiliki keduanya pada desktop saya terhubung melalui (nirkabel) USB dan ini akan menonaktifkan wake dari keyboard juga
Marco

15

Terima kasih untuk semua poster karena bangun mouse adalah ketidaknyamanan utama dan saya mendapat jawaban saya di sini. Saya ingin menambahkan twist saya ke solusi karena dapat membantu dalam lebih banyak kasus. Saya harus menonaktifkan 3 item berbeda di /proc/acpi/wakeup. Perangkat saya: EHC1, EHC2, XHCI. 2 yang pertama adalah usb2 dan 3 adalah entri usb3. Harap dicatat bahwa meskipun transceiver usb untuk mouse saya dicolokkan ke port usb2 dan tidak ada apa pun di port usb3, komputer akan aktif ketika mouse bergerak sampai ketiga item dinonaktifkan.

$ cat /proc/acpi/wakeup | sort 
Device  S-state   Status   Sysfs node
EHC1      S3    *disabled  pci:0000:00:1d.0
EHC2      S3    *disabled  pci:0000:00:1a.0
GLAN      S4    *enabled   pci:0000:08:00.0
.. ,, ..
USB7      S3    *disabled
WLAN      S3    *disabled  pci:0000:03:00.0
XHCI      S3    *disabled  pci:0000:07:00.0

Untuk menonaktifkan item bangun di setiap startup, Anda dapat menambahkan sesuatu seperti ini ke /etc/rc.local..

echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHCI > /proc/acpi/wakeup

edit oleh cipricus:

Saya menyunting ini karena saya perlu menambahkan lebih banyak detail agar pertanyaan saya yang terpisah dapat ditutup sebagai duplikat di atas berdasarkan jawaban ini; Saya pikir ini lebih bermanfaat daripada memposting sebagai jawaban terpisah.

*** Uji item mana yang perlu dinonaktifkan - seperti yang ditunjukkan di sini - untuk setiap item yang diposting di enabledbawah cat /proc/acpi/wakeup | sortdengan menjalankan terminal masing-masing perintah di bawah ini dan kemudian menguji apakah mouse membangunkan sistem (tanpa perlu restart) :

sudo sh -c "echo EHC1 > /proc/acpi/wakeup"
sudo sh -c "echo EHC2 > /proc/acpi/wakeup"
sudo sh -c "echo XHCI > /proc/acpi/wakeup"

(dalam kasus saya yang pertama sudah cukup bahkan setelah pengujian dengan port USB lainnya)

*** Jika /etc/rc.localfile tidak ada - sesuai dengan posting ini :

printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local

File tersebut akan terlihat seperti:

#!/bin/bash
echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHCI > /proc/acpi/wakeup

exit 0

Mulai ulang.


Jika itu masih tidak berhasil, mungkin file /etc/systemd/system/rc-local.servicetersebut hilang atau tidak dikonfigurasi dengan benar.

Tes dengan

sudo /etc/init.d/rc.local start

dan

sudo systemctl status rc-local

Mengikuti Cara Mengaktifkan /etc/rc.local dengan Systemd :

Buat file:

sudo nano /etc/systemd/system/rc-local.service

Kemudian tambahkan konten berikut ke dalamnya.

[Unit]
 Description=/etc/rc.local Compatibility
 ConditionPathExists=/etc/rc.local

[Service]
 Type=forking
 ExecStart=/etc/rc.local start
 TimeoutSec=0
 StandardOutput=tty
 RemainAfterExit=yes
 SysVStartPriority=99

[Install]
 WantedBy=multi-user.target

Simpan dan tutup file. Untuk menyimpan file dalam editor teks Nano, tekan Ctrl + O, lalu tekan Enter untuk mengonfirmasi. Untuk keluar dari file, Tekan Ctrl + X.

Periksa semua baik-baik saja tanpa kesalahan dengan:

sudo systemctl start rc-local.service
sudo systemctl status rc-local.service

Mulai ulang untuk melihat perubahan.


Jika Anda tidak menyukai hasil edit saya, beri tahu saya dengan menandai @cipricus dan saya akan memposting sebagai jawaban terpisah yang ditautkan ke yang di atas.

6

Sistem saya adalah Ubuntu 15.10

Saya mencoba menggunakan lsusbperintah untuk menemukan apa itu perangkat mouse. Ini sangat sederhana, Anda mengetik lsusblalu mencabut mouse (dalam kasus saya, ini adalah penerima Bluetooth) dan ketik lsusblagi. Perangkat terlihat seperti ini:

Bus 007 Device 008: ID 24ae:2000

Sekarang temukan di /sys/bus/usb/devices/folder dengan menggunakan cara yang sama (cabut / pasang). Dalam kasus saya, saya menemukan bahwa mereka berada di suatu tempat di folder mulai dengan 7-2*.

Sekarang cobalah untuk membaca idProduct dan idVendor. Sebagai contoh: cat /sys/bus/usb/devices/7-2.3/idProduct=> 2000, cat /sys/bus/usb/devices/7-2.3/idVendor=> 24ae. Itu dia.

Akhirnya saya membuat skrip di /lib/systemd/system-sleepdirektori, beri nama apa pun yang Anda inginkan.

#! /bin/sh

if [ ! -r /sys/bus/usb/devices/7-2.3/power/wakeup ]; then
    exit 0
fi
case "$1" in
    pre )
    echo disabled > /sys/bus/usb/devices/7-2.3/power/wakeup
;;
esac

Semua selesai.


Ini bekerja dengan Ubuntu 18.04 di laptop saya.
Minh Nguyen

1

skrip ini memecahkan masalah saya. saksikan berikut ini.

    #!/bin/bash

# allow only one instance
r=$(pidof -x -o $$ ssmonoff.sh)
set -- $r
if [ "${#@}" -ge 1 ]; then
    echo "Script already running. Exit..."
    exit
fi

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | ( while read line; do
    if echo $line | grep "boolean true" &> /dev/null; then
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "0"
            xset dpms force off
    else
            xinput --set-prop "Dell Premium USB Optical Mouse" "Device Enabled" "1"
    fi
done )

Yang harus Anda lakukan adalah, pertama, jalankan sudo xinput list, cari Nama yang diberikan mouse USB Anda, dan letakkan di skrip. Kemudian, simpan file sebagai "ssmonoff.sh", buat itu dapat dieksekusi, dan atur agar dijalankan saat startup.


1

Penjelasan yang bagus. Saya cukup menambahkan ke rc.local perintah berikut

for d in `cat wakeup |grep enabled|grep -v PS2K|cut -b -4`; do echo $d >/proc/acpi/wakeup ; done

untuk menonaktifkan setiap perangkat selain PS2K (keyboard PS2) dari bangun. Sederhana dan bekerja!


0

Mungkin ada cara khusus untuk perangkat keras Anda, dalam hal ini opsi mungkin tersedia melalui pengaturan BIOS sistem Anda.

Membuka menu BIOS Anda untuk mengubah pengaturan juga spesifik untuk sistem. Biasanya Anda menekan tombol sesaat setelah reboot, dan tombol untuk menekan sering ditampilkan di layar.

Namun, jawaban pengguna138339 sepertinya merupakan cara yang lebih umum untuk mencapai apa yang Anda butuhkan, dan Anda dapat melakukan ini dari sistem yang sedang berjalan.


0

Ini adalah "tutorial" langkah demi langkah saya untuk membuatnya bekerja untuk Anda:

  1. Gunakan perintah cat /proc/acpi/wakeupuntuk menampilkan daftar perangkat bangun
  2. Gunakan perintah sudo sh -c "echo XXXX >/proc/acpi/wakeup"(ganti "XXXX" dengan kode perangkat Anda) untuk mengganti status perangkat (diaktifkan / dinonaktifkan). Pergi satu perangkat pada satu waktu dan cobalah untuk menangguhkan mesin Anda dan membangunkannya menggunakan perangkat yang ingin Anda menonaktifkan sampai perangkat yang layak tidak akan dapat membangunkan mesin. Jangan lupa untuk selalu mengaktifkan kembali perangkat yang Anda tidak ingin dinonaktifkan.
  3. Ketika Anda menemukan perangkat yang tepat buat di file desktop Anda "acpi_wakeup" yang berisi kode berikut: #!/bin/sh printf "XXXX" > /proc/acpi/wakeup (jangan lupa ganti "XXXX" dengan kode perangkat Anda)
  4. Pindahkan atau salin file ke folder /etc/init.d/ . Untuk menyalin file gunakan perintah berikut: sudo cp /home/USERNAME/Desktop/acpi_wakeup /etc/init.d/acpi_wakeup (ganti "USERNAME" dengan nama pengguna Anda yang sebenarnya)
  5. Jadikan file dapat dieksekusi: sudo chmod 755 /etc/init.d/acpi_wakeup
  6. Kemudian gunakan 'update-rc.d' untuk membuat tautan simbolis yang diperlukan secara otomatis di direktori lain: sudo update-rc.d acpi_wakeup defaults (itu terlihatWARNING: ...missing LSB tags and overrides tetapi tidak apa-apa. Anda tidak perlu khawatir tentang hal itu)
  7. Nyalakan kembali komputer Anda.

Sumber dan bacaan lebih lanjut:

http://www.das-werkstatt.com/forum/werkstatt/viewtopic.php?f=7&t=1985 http://ubuntuforums.org/showthread.php?t=814939&page=3

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.