Làm cách nào để ngăn chặn chuyển động của chuột đánh thức máy tính bị treo?


32

Thật là khó chịu khi tôi phải rút chuột ra sau khi bị treo để đảm bảo rằng một cú va chạm không thường xuyên không đánh thức hệ thống. Tôi đã không tìm thấy bất cứ điều gì trong cài đặt hệ thống có thể vô hiệu hóa điều này bằng cách googling xung quanh.

Câu trả lời:


24

Tôi chưa kiểm tra BIOS, nhưng tôi đã tìm thấy giải pháp!

Tóm tắt ngắn gọn: Trong /proc/acpi/wakeup, bạn có thể xem thiết bị nào hiện đang được bật để tiếp tục tạm dừng. Danh sách đó hiển thị tên (viết tắt) của cái gọi là "Thiết bị". Ví dụ "PWRB" có nghĩa là "nút nguồn".

Nếu bạn viết tên thiết bị vào tập tin đó, bạn sẽ chuyển chúng giữa bật / tắt.

Tôi đã viết một HowTo nhỏ để vô hiệu hóa Wakeup-by-mouse , dựa trên một blog nơi tôi tìm thấy thông tin đó.


1
Điều này nghe tốt hơn nhiều so với câu trả lời của tôi và tôi đã chỉnh sửa câu trả lời của mình cho phù hợp. Cảm ơn!
Robie Basak

2
Vì vậy, các công trình này (tuy nhiên, tôi nhận thấy trong truyền rằng chỉ sử dụng sudosẽ không làm việc: người ta phải làm sudo sutrước, sau đó echo để /proc/acpi/wakeup. Tuy nhiên, tôi tự hỏi liệu có ai đã tìm ra cách để chỉ ? Disable chuột tôi có cả hai trên máy tính để bàn của tôi được kết nối qua USB (không dây) và điều này cũng sẽ vô hiệu hóa cảnh báo từ bàn phím.
Marco

15

Cảm ơn tất cả các áp phích vì việc đánh thức chuột là một bất tiện lớn và tôi đã có câu trả lời của mình ở đây. Tôi muốn thêm twist của tôi vào các giải pháp vì điều đó có thể giúp ích trong nhiều trường hợp hơn. Tôi đã phải vô hiệu hóa 3 mục khác nhau trong /proc/acpi/wakeup. Thiết bị của tôi : EHC1, EHC2, XHCI. 2 đầu tiên là usb2 và thứ 3 là một mục USB3. Xin lưu ý rằng mặc dù bộ thu phát usb cho chuột của tôi được cắm vào cổng usb2 và không có gì trong bất kỳ cổng usb3 nào, máy tính sẽ thức dậy khi chuột di chuyển cho đến khi cả 3 mục bị vô hiệu hóa.

$ 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

Để tắt các mục đánh thức trên mỗi lần khởi động, bạn có thể thêm một số thứ như thế này vào /etc/rc.local..

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

chỉnh sửa bởi cipricus:

Tôi đang chỉnh sửa điều này bởi vì tôi cần thêm nhiều chi tiết hơn để một câu hỏi riêng của tôi được đóng lại dưới dạng trùng lặp ở trên dựa trên câu trả lời này; Tôi nghĩ rằng nó hữu ích hơn để gửi như một câu trả lời riêng biệt.

*** Kiểm tra những mục nào cần được vô hiệu hóa - như được chỉ ra ở đây - cho từng mục được đăng enableddưới đây cat /proc/acpi/wakeup | sortbằng cách chạy trong thiết bị đầu cuối từng lệnh bên dưới và sau đó kiểm tra xem chuột có đánh thức hệ thống không (không cần khởi động lại) :

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

(trong trường hợp của tôi, cái đầu tiên là đủ ngay cả sau khi thử nghiệm với các cổng USB khác)

*** Nếu /etc/rc.localtệp không tồn tại - theo bài đăng này :

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

Các tập tin sẽ trông giống như:

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

exit 0

Khởi động lại.


Nếu vẫn không hoạt động, có thể tệp /etc/systemd/system/rc-local.servicebị thiếu hoặc không được cấu hình đúng.

Kiểm tra với

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

sudo systemctl status rc-local

Theo dõi Cách bật /etc/rc.local với Systemd :

Tạo tập tin:

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

Sau đó thêm nội dung sau vào nó.

[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

Lưu và đóng tập tin. Để lưu tệp trong trình soạn thảo văn bản Nano, nhấn Ctrl + O, sau đó nhấn Enter để xác nhận. Để thoát tệp, nhấn Ctrl + X.

Kiểm tra tất cả là tốt với không có lỗi với:

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

Khởi động lại để xem thay đổi.


Nếu bạn không thích bản chỉnh sửa của tôi, vui lòng cho tôi biết bằng cách gắn cờ @cipricus và tôi sẽ đăng dưới dạng một câu trả lời riêng được liên kết với phần trên.

6

Hệ thống của tôi là Ubuntu 15.10

Tôi đã cố gắng sử dụng lsusblệnh để tìm thiết bị chuột là gì. Rất đơn giản, bạn gõ lsusbrồi rút chuột (trong trường hợp của tôi, đó là bộ thu Bluetooth) và gõ lsusblại. Thiết bị trông như thế này:

Bus 007 Device 008: ID 24ae:2000

Bây giờ tìm thấy nó trong /sys/bus/usb/devices/thư mục bằng cách sử dụng cùng một cách (rút / cắm). Trong trường hợp của tôi, tôi thấy rằng chúng ở đâu đó trong các thư mục bắt đầu bằng 7-2*.

Bây giờ hãy thử đọc idSản phẩm và idVendor. Ví dụ: cat /sys/bus/usb/devices/7-2.3/idProduct=> 2000, cat /sys/bus/usb/devices/7-2.3/idVendor=> 24ae. Đó là nó.

Cuối cùng tôi tạo một tập lệnh trong /lib/systemd/system-sleepthư mục, đặt tên cho nó bất cứ điều gì bạn muốn.

#! /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

Tất cả đã được làm xong.


Nó hoạt động với Ubuntu 18.04 trên máy tính xách tay của tôi.
Minh Nguyễn

1

kịch bản này đã giải quyết vấn đề của tôi. kiểm tra nó

    #!/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 )

Tất cả những gì bạn phải làm là, trước tiên, chạy sudo xinput list, tìm Tên đã cho của chuột USB và đặt nó vào tập lệnh. Sau đó, lưu tệp dưới dạng "ssmonoff.sh", làm cho nó có thể thực thi được và thiết lập để chạy khi khởi động.


1

Giải thích tuyệt vời. Tôi chỉ cần thêm vào RC.local lệnh sau

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

để vô hiệu hóa mọi thiết bị hơn so với PS2K (bàn phím PS2) khi thức dậy. Đơn giản và hiệu quả!


0

Có thể có một cách cụ thể cho phần cứng của bạn, trong trường hợp đó, tùy chọn có thể khả dụng thông qua cài đặt BIOS của hệ thống.

Đến menu BIOS của bạn để thay đổi cài đặt cũng là hệ thống cụ thể. Thông thường bạn nhấn một phím ngay sau khi khởi động lại và phím để bấm thường được hiển thị trên màn hình.

Tuy nhiên, câu trả lời của user138339 có vẻ như là một cách tổng quát hơn để đạt được những gì bạn cần và bạn có thể làm điều này từ hệ thống đang chạy.


0

Đây là "hướng dẫn" từng bước của tôi để làm cho nó hoạt động cho bạn:

  1. Sử dụng lệnh cat /proc/acpi/wakeupđể hiển thị danh sách các thiết bị đánh thức
  2. Sử dụng lệnh sudo sh -c "echo XXXX >/proc/acpi/wakeup"(thay thế "XXXX" bằng mã thiết bị của bạn) để chuyển trạng thái thiết bị (bật / tắt). Đi đến một thiết bị tại một thời điểm và cố gắng tạm dừng máy của bạn và đánh thức thiết bị bằng thiết bị bạn muốn tắt cho đến khi thiết bị xứng đáng không thể đánh thức máy. Đừng quên luôn bật lại các thiết bị mà bạn không muốn tắt.
  3. Khi bạn tìm đúng thiết bị tạo trên tệp máy tính để bàn của bạn "acpi_wakeup" có chứa mã sau: #!/bin/sh printf "XXXX" > /proc/acpi/wakeup (đừng quên thay thế "XXXX" bằng mã thiết bị của bạn)
  4. Di chuyển hoặc sao chép tập tin vào thư mục /etc/init.d/ . Để sao chép tệp, sử dụng lệnh sau: sudo cp /home/USERNAME/Desktop/acpi_wakeup /etc/init.d/acpi_wakeup (thay thế "USERNAME" bằng tên người dùng thực tế của bạn)
  5. Làm cho tập tin thực thi: sudo chmod 755 /etc/init.d/acpi_wakeup
  6. Sau đó, sử dụng 'update-rc.d' để tự động tạo các liên kết tượng trưng cần thiết trong các thư mục khác: sudo update-rc.d acpi_wakeup defaults (nó hiển thịWARNING: ...missing LSB tags and overrides nhưng không sao. Bạn không cần phải lo lắng về điều đó)
  7. Khởi động lại máy tính của bạn.

Nguồn và đọc thêm:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.