我如何在 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。