在 gnome3 中映射耳机按钮

在 gnome3 中映射耳机按钮

我如何在 gnome3 中映射我的蓝牙耳机的按钮?

AcceleratorActivated当我按下它时,Gnome 会看到一个事件:

$ dbus-monitor --monitor
signal time=1525078944.868498 sender=:1.17 -> destination=:1.52 serial=2069 path=/org/gnome/Shell; interface=org.gnome.Shell; member=AcceleratorActivated
   uint32 152
   array [
      dict entry(
         string "device-id"
         variant             uint32 3
      )
      dict entry(
         string "timestamp"
         variant             uint32 61966125
      )
      dict entry(
         string "action-mode"
         variant             uint32 1
      )
   ]

但是 gnome 除了在 gnome 的 OSD 中显示一个图标外不做任何事情"action-unavailable-symbolic"(我使用深色 gnome 主题):

在此处输入图片描述

ShowOSD同时还会出现以下 dbus 事件:

$ dbus-monitor --monitor
method call time=1525078944.869555 sender=:1.52 -> destination=:1.17 serial=246 path=/org/gnome/Shell; interface=org.gnome.Shell; member=ShowOSD
   array [
      dict entry(
         string "icon"
         variant             string "action-unavailable-symbolic"
      )
   ]

在通常的键盘映射设置中,gnome 无法识别耳机按钮:Settings > keyboard > Add Custom Shortcut:尽管它可以很好地映射键盘键,但是当我按下耳机按钮时,该工具无法检测到耳机按钮,所以我无法使用它来映射耳机按钮。

我想要做的是按下耳机按钮时触发播放/暂停。你知道怎么做吗?

答案1

看到AcceleratorActivated意味着关键是已经映射到某个东西;可能是内置的“播放/暂停”项。否则它就不会在加速器注册期间提交给 gnome-shell。

如果您在观察总线的同时重新启动 gnome-shell,您将看到一个GrabAccelerators包含所有按键名称的方法调用,以及一个包含加速 ID 的相应 method_return。这样您就可以从 AcceleratorActivated 中解密 ID,例如152在您的例子中,返回到按键组合。(系统很可能已经将您的按钮识别为XF86AudioPlay。并且 GNOME 已经为“XF86AudioPlay ⇒ 通过 MPRIS 播放/暂停”提供了默认映射。)

在这种情况下,如果没有运行 MPRISv2 兼容播放器(gnome-shell 可以将事件转发到该播放器),也没有播放器使用旧的 GNOME 特定功能来接收媒体密钥,则会显示 ∅ OSD。

相关内容