为什么 gnome-session 和 i3 的 acpi_listen 显示不同的事件?

为什么 gnome-session 和 i3 的 acpi_listen 显示不同的事件?

当我acpi_listen在运行 gnome-session 或 ubuntu-session 时运行,并按键盘上的亮度向上/向下键时,我得到如下输出:

video/brightnessdown BRTDN 00000087 00000000
video/brightnessup BRTUP 00000086 00000000

xev

KeymapNotify event, serial 38, synthetic NO, window 0x0,
    keys:  4294967216 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

FocusOut event, serial 38, synthetic NO, window 0x2000001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 38, synthetic NO, window 0x2000001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 38, synthetic NO, window 0x0,
    keys:  2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

并且屏幕的亮度调整正确。但是,运行 i3wm 时,运行acpi_listenxev按键时不会显示任何输出。

在这两种环境中,dmesg都显示:

[ 5237.752419] atkbd serio0: Unknown key pressed (translated set 2, code 0xab on isa0060/serio0).
[ 5237.752426] atkbd serio0: Use 'setkeycodes e02b <keycode>' to make it known.
[ 5237.763659] atkbd serio0: Unknown key released (translated set 2, code 0xab on isa0060/serio0).
[ 5237.763666] atkbd serio0: Use 'setkeycodes e02b <keycode>' to make it known.

在基于 gnome 的会话中运行什么服务来获取按键/触发 acpi 事件,而不是在 i3wm 会话中运行/配置?

另一个有趣的事情是,在 gnome 会话中,button/lid LID closeacpi_event 在盖子关闭时触发,但在 i3wm 中,会触发 KEY_WLAN 事件。


笔记本电脑:HP 15-cx0056wm(带英特尔集成显卡和 Nvidia 1050Ti)

Nvidia 驱动程序版本:nvidia-driver-418,当前启用 Nvidia OPTIMUS 配置文件

Ubuntu版本:19.04

侏儒版本:3.32.1

答案1

我发现它gnome-session有自己的电源管理守护进程,一旦会话开始,它就会在后台运行,并执行与会话分开的操作acpi(例如管理背光、在盖子开关更改时使系统进入睡眠状态等)。

我一直没有成功地找到如何直接在 i3 中拦截这些事件,或者找到一个单独的实用程序来为我监听它们。不过,我现在已经找到了一个可以接受的解决方案i3-gnome

它在后台启动 gnome 服务,同时允许 i3wm 作为窗口管理器运行。这导致我的背光和盖子开关由 gnome 电源守护进程处理,而我的窗口由 i3wm 管理。

答案2

acpid 可以处理 acpi 事件视频/亮度增加、视频/亮度减少和盖子、电源按钮、音量增大/减小等,无需任何窗口管理器或桌面管理器。我编辑了 /etc/acpi/handler.sh,背光和音量按钮甚至在控制台中也能工作:

video/brightnessup)
        (echo $(( $(cat /sys/class/backlight/intel_backlight/brightness)+5 )) >/sys/class/backlight/intel_backlight/brightness )
        ;;
video/brightnessdown)
        (echo $(( $(cat /sys/class/backlight/intel_backlight/brightness)-5 )) >/sys/class/backlight/intel_backlight/brightness )
        ;;
button/screenlock)
        logger "screenlock Fn + F7 pressed"
        ;;
0B3CBB35-E3C2-)
        logger "acpi tag 0B3CBB35-E3C2- misc"
        ;;
button/mute)
        logger "mute Fn + f10 toggle pressed"
        (amixer -q sset Master,0 toggle)
        ;;
button/volumeup)
        logger "volumeup Fn + F12 pressed"
        (amixer -q sset Master,0 2dB+)
        ;;
button/volumedown)
        logger "volumedown Fn + F11 pressed"
        (amixer -q sset Master,0 2dB-)
        ;;

相关内容