Làm cách nào để thay đổi ánh xạ cho phím «PowerPack» trên bàn phím?


15

Tôi đã mua máy tính xách tay Asus ROG G551JM được chứng minh là tương thích với Ubuntu. Bàn phím của máy tính được thiết kế không hợp lệ với phím "Poweroff" là một phím thông thường, được đặt tại chỗ, nơi người ta thường tìm thấy phím "Kết thúc". Máy tính vẫn ổn, vì vậy tôi đã mua nó với giả định rằng tôi có thể "khắc phục" vấn đề bằng cách nào đó, tức là ánh xạ lại nút PowerPack vào phím "Kết thúc".

Nút PowerPack bị sai (ASUS G551JM): ASUS G551JM

Thông thường có phím «Kết thúc» (ASUS N56VZ): ASUS N56VZ

Các "PowerOff" sự kiện nút được tạo ra bởi các /dev/input/event2: Power Buttonthiết bị (theo báo cáo của evtest) với mã 116 (ví dụ dòng từ evtest: Event: time 1422895638.246142, type 1 (EV_KEY), code 116 (KEY_POWER), value 1)

Khóa này cũng hiển thị với máy chủ X và cuối cùng Ubuntu có thể xác định các lần nhấn phím là một PowerOffphím và khởi chạy hộp thoại bán trong suốt "Tạm biệt người dùng Adam ..." để xác nhận ý chí của tôi thực sự tắt máy tính.

Vấn đề là ràng buộc liên kết với phím bấm PowerPack với thói quen hiển thị hộp thoại xác nhận đó không hiển thị dưới trình soạn thảo dconf và tôi không có gợi ý nơi tìm thấy nó.

Ai đó có thể cho tôi biết, nơi để thay đổi (hoặc xóa) ràng buộc mặc định cho khóa PowerPack không ???

Nó phải là một cái gì đó dễ dàng.


chỉnh sửa 21.IX.2016:

Có một cách để vô hiệu hóa vĩnh viễn hộp thoại, xem Làm cách nào để sửa đổi các tùy chọn cho nút nguồn? . Tôi hy vọng rằng sau khi vô hiệu hóa nút nguồn, có thể gán lại nó cho thứ khác.


Bạn đã giải quyết vấn đề? Nó sẽ rất hữu ích nếu bạn gửi một câu trả lời ở đây.
Ezze

1
@Ezze Không thực sự (Tôi đang sử dụng máy tính khác vì vấn đề này). Nhưng tôi đã xoay sở để tắt vĩnh viễn hộp thoại tắt được tạo sau khi nhấn phím. OK, tôi sẽ cập nhật câu trả lời.
Adam Ryczkowski

Câu hỏi liên quan về Unix & Linux StackExchange.
Ezze

2
Tôi ghét ASUS rất nhiều vì đã loại bỏ phím đó. HomeEndlà các phím "meta" mà tôi sử dụng nhiều nhất ... :(
Matthieu

Câu trả lời:


10

Tôi đã có thể làm cho nó hoạt động trên ASUS N751JK của tôi trong Ubuntu 18.04 LTS và Ubuntu 16.04 LTS (được thử nghiệm với môi trường máy tính để bàn Unity trong cả hai trường hợp và KDE Plasma trong 18.04):

  1. Trước hết, đặt hành động của nút "Tắt nguồn" thành nothing.

    Đoàn kết

    Giống như được đề cập trong câu trả lời của Johano Fierra :

    gsettings set org.gnome.settings-daemon.plugins.power button-power "nothing"
    

    hoặc thay thế sudo apt install dconf-toolsvà sử dụng dconf-editorđể thay đổi org.gnome.settings-daemon.plugins.powertài sản (như được mô tả ở đây ). Khởi động lại hoặc đăng xuất là cần thiết để làm cho nó hoạt động.

    KDE

    Chuyển đến "Cài đặt hệ thống" , chọn tab "Quản lý năng lượng" trong phần "Phần cứng" và sau đó chọn tab "Tiết kiệm năng lượng" , cuộn xuống, tìm danh sách thả xuống "Khi nhấn nút nguồn" và thay đổi giá trị thành "Không làm gì" . Nhấp vào nút "Áp dụng" để thay đổi có hiệu lực.

    Tiết kiệm năng lượng

  2. Cài đặt xdotool :

    sudo apt install xdotool
    

    Điều này sẽ cho phép chúng tôi kích hoạt các sự kiện quan trọng.

  3. Bước tiếp theo là kích hoạt phím "Kết thúc", nhấn nút "Tắt nguồn" .

    Ubuntu 18.04

    Tạo /etc/acpi/events/powertập tin với nội dung sau:

    event=button/power
    action=/etc/acpi/power.sh "%e"
    

    và tạo /etc/acpi/power.shtập lệnh với nội dung sau:

    #!/bin/sh
    xdotool key End
    

    và thêm quyền thực thi cho nó:

    sudo chmod +x /etc/acpi/power.sh
    

    Ubuntu 16.04

    Tập lệnh ACPI dự phòng được sử dụng để xử lý sự kiện của nút "Tắt nguồn" :

    sudo cp /etc/acpi/powerbtn.sh /etc/acpi/powerbtn.sh.backup
    

    Sau đó chỉnh sửa nó, tìm như sau:

    # If logind is running, it already handles power button presses; desktop
    # environments put inhibitors to logind if they want to handle the key
    # themselves.
    

    và sửa đổi mã dưới đây để nó trông giống như:

    if pidof systemd-logind >/dev/null; then
        xdotool key End
        exit 0
    fi
    
  4. Để áp dụng những thay đổi này, người ta nên chạy:

    sudo acpid restart
    

    Nhờ Adam , có thể acpidtự động khởi động lại khi người dùng đăng nhập (khi khởi động hệ thống). Vì vậy, thay vì thủ công sudo acpid restarttrong thiết bị đầu cuối mỗi lần sau khi khởi động lại, hãy thêm dòng sau:

    session optional    pam_exec.so /usr/sbin/acpid restart
    

    đến cuối /etc/pam.d/common-sessiontập tin.


Những gì về sudo acpid reloadthay vì khởi động lại? Liệu điều đó có hiệu quả?
Chỉ huy Byte

1
Điều giải quyết acpid restartvấn đề là thêm một dòng session optional pam_exec.so /usr/sbin/acpid restartở cuối /etc/pam.d/common-session. Bằng cách này, acpid sẽ được khởi động lại ngay sau khi người dùng đăng nhập và điều này là đủ cho tôi. Vấn đề được giải quyết cuối cùng !!
Adam Ryczkowski

1
@rtindru, bạn nên gsettings setthay thế gsettings get.
Ezze

1
Để làm cho điều này hoạt động trong Kubfox 18.04, tôi đã phải cấp quyền thực thi cho power.sh: sudo chmod +x /etc/acpi/power.sh@Ezze, có lẽ bạn có thể cập nhật câu trả lời của mình để bao gồm điều này.
LGenzelis

1
@LGenzelis, cảm ơn. Cập nhật câu trả lời.
Ezze

4

Cái này cần phải dùng mẹo.

Nhập vào thiết bị đầu cuối:

gsettings set org.gnome.settings-daemon.plugins.power button-power "nothing"

2
ĐÚNG!!! Nhưng sau đó, có một điều khác: làm thế nào để ánh xạ nó vào phím «end»?
Adam Ryczkowski 2/2/2015

1
Nhập lãnh thổ chưa được khám phá ở đây, nhưng tôi nghĩ rằng bạn chỉ có thể tạo cấu hình tệp xmodmap ($ {HOME} /. Xmodmap) và sau đó đặt mã này vào đó: keycode 116 = End hoặc nhập vào terminal: xmodmap -e "keycode 116 = End "
Johano Fierra 2/2/2015

Thật không may, nó không có ích. Nó vô hiệu hóa việc chụp nút "Tắt nguồn" như đã thấy bằng xevlệnh và ngăn không xmodmapcho ánh xạ lại. Và nhân tiện, mã khóa của nút "Tắt nguồn" có thể khác (124 cho ASUS N751JK của tôi).
Ezze

Nó không nên vô hiệu hóa khả năng chụp nút ... nhưng làm thế nào về điều này. Nhập vào thiết bị đầu cuối: gsettings set org.gnome.settings-daemon.plugins.power button-power "shutdown"(để nhấn nút được chụp), sau đó chỉnh sửa /etc/acpi/events/powerbtnvà nhận xét dòng #action=/etc/acpi/powerbtn.sh, sau đó nhập vào thiết bị đầu cuối: xmodmap -e "keycode 124 = End"Điều này sẽ ngăn nút nguồn làm bất cứ điều gì và đồng thời ánh xạ nó tới phím Kết thúc.
Johano Fierra

1
Điều này cũng không giúp cho sự kiện "Tắt nguồn" được xử lý không chỉ bởi powerbtn.shtập lệnh mà còn bởi (ít nhất là) systemd-loginddịch vụ (có thể, nó sử dụng button-powercài đặt bạn đã đề cập trong câu trả lời của mình). Bạn có thể tìm thấy if pidof systemd-logind >/dev/null; then... exit 0dòng powerbtn.shcó nghĩa là tập lệnh cho phép systemd-logindtự xử lý sự kiện "Tắt nguồn" khi phiên máy tính để bàn được kích hoạt. Một điều bạn đúng - thay đổi button-powergiá trị không ảnh hưởng đến khả năng nắm bắt khóa nhưng nó đã bị bắt bởi một số quy trình ( systemd-logindhoặc cách khác).
Ezze
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.