Câu hỏi Mã nào được thực hiện khi tai nghe bị ngắt kết nối?


Tôi muốn thực hiện một kịch bản trên tai nghe ngắt kết nối nhưng tôi bực bội ý tưởng -sự bỏ phiếu liên tục trạng thái khi đã có một số mã được thực hiện khi nó được thay đổi.


7
2018-06-25 07:23


gốc




Các câu trả lời:


Trong hầu hết các hệ thống nếu không phải tất cả, ACPI có thể xử lý sự kiện này. Để kiểm tra điều đó:

  1. Chạy acpi_listen
  2. Ngắt kết nối và phát lại tai nghe, ví dụ đầu ra: (mic / tai chia sẻ trong cùng một jack trên máy tính xách tay của tôi)

    jack/headphone HEADPHONE unplug
    jack/microphone MICROPHONE unplug
    jack/headphone HEADPHONE plug
    jack/microphone MICROPHONE plug
    
  3. Đặt your-script.sh trong /etc/acpi/

  4. Thêm tệp trình kích hoạt sự kiện cho tập lệnh của bạn /etc/acpi/events/

    event=jack/headphone HEADPHONE unplug
    action=/etc/acpi/your-script.sh
    

    Kiểm tra các tệp khác ở đó để tìm hiểu.

  5. Bạn có thể cần phải khởi động lại acpid dịch vụ để tải lại các quy tắc đã thay đổi trong /etc/acpi/events/

    sudo service acpid restart
    

Tài liệu tham khảo:  man acpid


7
2018-06-29 16:42



Bây giờ tôi chỉ cần tìm hiểu làm thế nào để làm cho công việc dbus từ scrips ACPI, nhưng đó là một câu hỏi khác nhau. - int_ua
@int_ua bạn cần phải viết DBUS_SESSION_BUS_ADDRESS biến môi trường vào một tập tin trong homedir của bạn với một kịch bản bắt đầu với ~/.config/autostart/dbus.desktop. Sau đó, bạn có thể chạy su YOURUSER -c "DBUS_SESSION_BUS_ADDRESS=$(cat ~/.dbus_address) amixer ......." từ /etc/acpi/your-script.sh - Germar
Hey, tôi đã viết một kịch bản để hiển thị một thông báo. Tiếp theo chính xác những gì bạn nói. Tập lệnh của tôi thực thi gửi thông báo "Tai nghe đã kết nối" trên sự kiện cắm. Có vẻ như nó không hoạt động. askubuntu.com/questions/877804/… - Logan


Phiên bản hiện tại của tập lệnh của bạn hiện có chứa sleep 0.25 chỉ huy.

sleep dựa trên bộ đếm thời gian nên không sử dụng bất kì chu kỳ xử lý khi đang ngủ…

Nó sử dụng một chút CPU rất nhỏ để thiết lập bộ hẹn giờ, nhưng sleep 1 (ngủ 1 giây), sleep 60 (ngủ một phút) và sleep 86400 (ngủ trong một ngày) tất cả sử dụng cùng một chu trình CPU số.

Sử dụng ACPI tuy nhiên là hoàn hảo giải pháp như ACPI là sự kiện điều khiển thay vì bỏ phiếu điều khiển.


1
2018-06-30 07:45