วิธีเปลี่ยนการแมปสำหรับปุ่ม« PowerOff »บนแป้นพิมพ์


15

ฉันซื้อแล็ปท็อป ROG G551JM Asus ซึ่งพิสูจน์แล้วว่ารองรับ Ubuntu แป้นพิมพ์ของคอมพิวเตอร์ได้รับการออกแบบมาอย่างไม่ดีนักโดยใช้ปุ่ม "Poweroff" ซึ่งเป็นกุญแจธรรมดาวางไว้ตรงจุดที่มักจะพบคีย์ "End" คอมพิวเตอร์ไม่เป็นอย่างอื่นดังนั้นฉันซื้อด้วยสมมติฐานว่าฉันจะสามารถ "แก้ไข" ปัญหาอย่างใดอย่างหนึ่งเช่นทำการแมปปุ่ม PowerOff ลงในปุ่ม "สิ้นสุด" อีกครั้ง

ปุ่ม PowerOff ทำผิด (ASUS G551JM): ASUS G551JM

โดยปกติจะมีปุ่ม« End » (ASUS N56VZ): ASUS N56VZ

"การ poweroff" เหตุการณ์ปุ่มที่มีการผลิตโดย/dev/input/event2: Power Buttonอุปกรณ์ (ตามการรายงานevtest) ด้วยรหัส 116 (ตัวอย่างเช่นบรรทัดจากevtest: Event: time 1422895638.246142, type 1 (EV_KEY), code 116 (KEY_POWER), value 1)

คีย์นี้ยังสามารถมองเห็นได้บน X server และในที่สุด Ubuntu ก็สามารถระบุการกดปุ่มเป็นPowerOffกุญแจและเปิดตัวกล่องโต้ตอบ "Goodbye user Adam ... " แบบกึ่งโปร่งใสที่ยืนยันความประสงค์ของฉันที่จะปิดคอมพิวเตอร์จริง ๆ

ปัญหาคือการเชื่อมโยงที่ผูกกับการกดปุ่ม PowerOff กับชุดคำสั่งที่แสดงว่ากล่องโต้ตอบการยืนยันไม่สามารถมองเห็นได้ภายใต้ dconf-editor และฉันไม่มีคำใบ้ว่าจะหาได้ที่ไหน

ทุกคนสามารถบอกฉันได้ว่าจะเปลี่ยนแปลง (หรือลบ) การเชื่อมโยงเริ่มต้นสำหรับคีย์ PowerOff ได้ที่ไหน

มันควรเป็นอะไรที่ง่าย


แก้ไข 21.IX.2016:

มีวิธีปิดใช้งานกล่องโต้ตอบอย่างถาวรให้ดูที่ฉันจะแก้ไขตัวเลือกต่าง ๆ สำหรับปุ่มเปิดปิดได้อย่างไร . ฉันหวังว่าหลังจากปิดการใช้งานปุ่มเปิดปิดมันจะเป็นไปได้ที่จะกำหนดใหม่ให้กับสิ่งอื่น


คุณแก้ไขปัญหาได้หรือไม่ มันจะมีประโยชน์มากถ้าคุณโพสต์คำตอบที่นี่
Ezze

1
@Ezze ไม่จริง (ฉันใช้คอมพิวเตอร์เครื่องอื่นเนื่องจากปัญหานี้) แต่ฉันจัดการเพื่อปิดการใช้งานไดอะล็อกการปิดระบบที่สร้างอย่างถาวรหลังจากกดปุ่ม ตกลงฉันจะอัพเดตคำตอบ
Adam Ryczkowski


2
ฉันเกลียด ASUS มากสำหรับการลบคีย์นั้น HomeและEndเป็นปุ่ม "เมตา" ที่ฉันใช้มากที่สุด ... :(
Matthieu

คำตอบ:


10

ฉันสามารถทำให้ ASUS N751JK ของฉันทำงานใน Ubuntu 18.04 LTS และ Ubuntu 16.04 LTS (ทดสอบกับสภาพแวดล้อมเดสก์ท็อป Unity ทั้งในกรณีและ KDE Plasma ใน 18.04):

  1. แรกของทุกการกระทำที่ชุดของ"ปิด"nothingปุ่มเพื่อ

    เอกภาพ

    ชอบพูดถึงในคำตอบของJohano Fierra :

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

    หรืออีกวิธีหนึ่งsudo apt install dconf-toolsและใช้dconf-editorเพื่อเปลี่ยนorg.gnome.settings-daemon.plugins.powerคุณสมบัติ (เช่นอธิบายไว้ที่นี่ ) ต้องรีบูตหรือออกจากระบบเพื่อให้ทำงานได้

    KDE

    ไปที่"ตั้งค่าระบบ"เลือก"การจัดการพลังงาน"แท็บใน"ฮาร์ดแวร์"ส่วนและจากนั้นเลือก"ประหยัดพลังงาน"เลื่อนลงค้นหา"เมื่อกดปุ่มเพาเวอร์"รายการแบบเลื่อนลงและเปลี่ยนค่าในการ"ทำอะไร" คลิกปุ่ม"ใช้"เพื่อให้การเปลี่ยนแปลงมีผล

    การประหยัดพลังงาน

  2. ติดตั้งxdotool :

    sudo apt install xdotool
    

    อันนี้จะทำให้เราสามารถเรียกเหตุการณ์สำคัญ

  3. ขั้นตอนต่อไปคือการทริกเกอร์"จบ"กดปุ่มบน"ปิด"กดปุ่ม

    Ubuntu 18.04

    สร้าง/etc/acpi/events/powerไฟล์ที่มีเนื้อหาดังต่อไปนี้:

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

    และสร้าง/etc/acpi/power.shสคริปต์ด้วยเนื้อหาดังต่อไปนี้:

    #!/bin/sh
    xdotool key End
    

    และเพิ่มสิทธิ์ดำเนินการ:

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

    Ubuntu 16.04

    สคริปต์ ACPI สำรองใช้เพื่อจัดการเหตุการณ์ของปุ่ม"ปิดเครื่อง" :

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

    จากนั้นแก้ไขให้ค้นหาสิ่งต่อไปนี้:

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

    และแก้ไขรหัสด้านล่างเพื่อให้ดูเหมือนว่า:

    if pidof systemd-logind >/dev/null; then
        xdotool key End
        exit 0
    fi
    
  4. ในการใช้การเปลี่ยนแปลงเหล่านี้คุณควรเรียกใช้:

    sudo acpid restart
    

    ขอบคุณAdam ที่สามารถเริ่มต้นใหม่acpidโดยอัตโนมัติเมื่อผู้ใช้ลงชื่อเข้าใช้ (ในการบูตระบบ) ดังนั้นแทนที่จะทำเองsudo acpid restartในเทอร์มินัลในแต่ละครั้งหลังจากรีบูตเพิ่มบรรทัดต่อไปนี้:

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

    ไปที่ท้าย/etc/pam.d/common-sessionไฟล์


แล้วsudo acpid reloadแทนที่จะรีสตาร์ทล่ะ มันจะใช้ได้ไหม
ผู้บัญชาการไบต์

1
สิ่งที่แก้acpid restartปัญหาคือการเพิ่มบรรทัดในตอนท้ายของsession optional pam_exec.so /usr/sbin/acpid restart /etc/pam.d/common-sessionวิธีนี้ acpid จะเริ่มต้นใหม่หลังจากเข้าสู่ระบบของผู้ใช้และนี่ก็เพียงพอแล้วสำหรับฉัน ปัญหาได้รับการแก้ไขในที่สุด !!
Adam Ryczkowski

1
@rtindru คุณควรแทนgsettings set gsettings get
Ezze

1
ในการทำให้งานนี้ใน Kubuntu 18.04 ฉันต้องให้สิทธิ์การดำเนินการกับ power.sh: sudo chmod +x /etc/acpi/power.sh@Ezze บางทีคุณอาจปรับปรุงคำตอบของคุณเพื่อรวมสิ่งนี้
LGenzelis

1
@LGenzelis ขอบคุณ อัปเดตคำตอบ
Ezze

4

สิ่งนี้ควรทำเคล็ดลับ

ใส่ใน terminal:

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

2
ใช่!!! แต่มีอีกสิ่งหนึ่ง: วิธีการแมปลงในคีย์«สิ้นสุด»
Adam Ryczkowski

1
เข้าสู่อาณาเขตที่ไม่ได้จดที่นี่ แต่ฉันคิดว่าคุณสามารถสร้างไฟล์ xmodmap config ($ {HOME} /. xmodmap) แล้วใส่มันลงในนั้น: keycode 116 = สิ้นสุดหรือป้อนเทอร์มินัล: xmodmap -e "keycode 116 = End "
Johano Fierra

น่าเสียดายที่มันไม่ช่วย มันปิดการใช้งานการจับปุ่ม "ปิดไฟ" ตามที่เห็นโดยxevคำสั่งและป้องกันไม่xmodmapให้ทำการแมปใหม่ และอย่างไรก็ตามรหัสของปุ่ม "ปิดเครื่อง" อาจแตกต่างกัน (124 สำหรับ ASUS N751JK ของฉัน)
Ezze

ไม่ควรปิดใช้งานความสามารถในการจับปุ่ม ... แต่จะทำอย่างไรกับสิ่งนี้ ป้อนในเทอร์มินัล: gsettings set org.gnome.settings-daemon.plugins.power button-power "shutdown"(ดังนั้นการกดปุ่มจะถูกจับ) จากนั้นแก้ไข/etc/acpi/events/powerbtnและใส่ความคิดเห็นในบรรทัด#action=/etc/acpi/powerbtn.shจากนั้นป้อนในเทอร์มินัล: xmodmap -e "keycode 124 = End"สิ่งนี้จะป้องกันไม่ให้ปุ่มเพาเวอร์ทำอะไรเลยและในเวลาเดียวกัน
Johano Fierra

1
มันไม่ได้ช่วยเช่นกันเพราะเหตุการณ์ "ปิด" นั้นไม่เพียงจัดการโดยpowerbtn.shสคริปต์ แต่ยังรวมถึงบริการ (อย่างน้อย) systemd-logind(อาจเป็นเพราะมันใช้button-powerการตั้งค่าที่คุณระบุไว้ในคำตอบของคุณ) คุณสามารถค้นหาบรรทัดif pidof systemd-logind >/dev/null; then... ซึ่งหมายความว่าสคริปต์อนุญาตให้จัดการเหตุการณ์ "ปิด" ด้วยตัวเองเมื่อเปิดใช้งานเซสชันเดสก์ท็อป สิ่งหนึ่งที่คุณพูดถูก - การเปลี่ยนค่าไม่ได้ส่งผลกระทบต่อความสามารถในการจับกุญแจ แต่มันถูกจับแล้วโดยบางกระบวนการ ( หรืออื่น ๆ ) exit 0powerbtn.shsystemd-logindbutton-powersystemd-logind
Ezze
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.