如何更改键盘上«PowerOff»键的映射?

Ada*_*ski 16 shortcut-keys unity 14.04

我购买了 ROG G551JM 华硕笔记本电脑,经证明与 Ubuntu 兼容。电脑键盘设计不良,“Poweroff”键是一个普通键,放置在通常可以找到“End”键的位置。否则电脑还好,所以我买它时假设我能够以某种方式“修复”问题,即将关机按钮重新映射到“结束”键。

关机按钮出错(ASUS G551JM): 华硕 G551JM

通常有一个 «End» 键 (ASUS N56VZ): 华硕 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 服务器也可以看到该键,最终 Ubuntu 可以将按键识别为PowerOff键并启动“再见用户 Adam...”半透明对话框,确认我将实际关闭计算机的意愿。

问题是将 PowerOff 按键与显示确认对话框的例程绑定的绑定在 dconf-editor 下不可见,我不知道在哪里可以找到它。

谁能告诉我,在哪里更改(或删除)PowerOff 键的默认绑定???

这应该是一件容易的事。


编辑 21.IX.2016:

有一种方法可以永久禁用该对话框,请参阅如何修改电源按钮的选项?. 我希望在禁用电源按钮后,可以将其重新分配给其他东西。

ezz*_*zze 12

我能够在 Ubuntu 18.04 LTS 和 Ubuntu 16.04 LTS(在这两种情况下使用 Unity 桌面环境和 18.04 中的 KDE Plasma 测试)中的华硕 N751JK 上运行它:

  1. 首先,将“关机”按钮的动作设置为nothing

    统一

    就像Johano Fierra 的回答中提到的:

    gsettings set org.gnome.settings-daemon.plugins.power button-power "nothing"
    
    Run Code Online (Sandbox Code Playgroud)

    或可替换地sudo apt install dconf-tools和使用dconf-editor改变org.gnome.settings-daemon.plugins.power属性(如描述在这里)。需要重新启动或注销才能使其工作。

    凯德

    转到“系统设置”,在“硬件”部分选择“电源管理”选项卡,然后选择“节能”选项卡,向下滚动,找到“按下电源按钮时”下拉列表并将其值更改为“什么都不做”。单击“应用”按钮以使更改生效。

    节能

  2. 安装xdotool

    sudo apt install xdotool
    
    Run Code Online (Sandbox Code Playgroud)

    这将允许我们触发关键事件。

  3. 下一步是在按下“关机”按钮时触发“结束”键按下。

    Ubuntu 18.04

    创建/etc/acpi/events/power包含以下内容的文件:

    event=button/power
    action=/etc/acpi/power.sh "%e"
    
    Run Code Online (Sandbox Code Playgroud)

    并创建/etc/acpi/power.sh具有以下内容的脚本:

    #!/bin/sh
    xdotool key End
    
    Run Code Online (Sandbox Code Playgroud)

    并为其添加执行权限:

    sudo chmod +x /etc/acpi/power.sh
    
    Run Code Online (Sandbox Code Playgroud)

    Ubuntu 16.04

    用于处理“关机”按钮事件的备份 ACPI 脚本:

    sudo cp /etc/acpi/powerbtn.sh /etc/acpi/powerbtn.sh.backup
    
    Run Code Online (Sandbox Code Playgroud)

    然后编辑它,找到以下内容:

    # If logind is running, it already handles power button presses; desktop
    # environments put inhibitors to logind if they want to handle the key
    # themselves.
    
    Run Code Online (Sandbox Code Playgroud)

    并修改下面的代码,使其看起来像:

    if pidof systemd-logind >/dev/null; then
        xdotool key End
        exit 0
    fi
    
    Run Code Online (Sandbox Code Playgroud)
  4. 为了应用这些更改,应该运行:

    sudo acpid restart
    
    Run Code Online (Sandbox Code Playgroud)

    感谢Adamacpid当用户登录时(在系统启动时)可以自动重启。因此,sudo acpid restart每次重新启动后,不要在终端中手动添加以下行:

    session optional    pam_exec.so /usr/sbin/acpid restart
    
    Run Code Online (Sandbox Code Playgroud)

    /etc/pam.d/common-session文件末尾。