我正在使用一个应用程序(VMWare Workstation)劫持我键盘上的媒体键,所以我想使用另一个输入设备(Elgato Stream Deck)来发送通用媒体命令,如“提高音量”或“暂停”。我可以使用流平台来发送 shell 命令xdotool key XF86AudioLowerVolume
,只要我在 gnome shell 中,它就可以工作,但是如果我在 VM 中,VMWare 仍然会劫持这些消息。另一方面,使用wmctrl
or之类的工具的低级命令可以正常工作。dbus-send
那么,什么dbus-send
相当于xdotool key XF86Audio*
命令?
我可以dbus-monitor
在按下媒体键时查看事件并查看,例如:
signal time=1599582032.226007 sender=:1.66 -> destination=:1.96 serial=18241 path=/org/gnome/Shell; interface=org.gnome.Shell; member=AcceleratorActivated
uint32 140
array [
dict entry(
string "device-id"
variant uint32 12
)
dict entry(
string "timestamp"
variant uint32 504924437
)
dict entry(
string "action-mode"
variant uint32 1
)
dict entry(
string "device-node"
variant string "/dev/input/event7"
)
]
用于提高音量。我怎样才能把它翻译成一条dbus-send
消息?
我很久以前就发现了这个问题,但它似乎已经过时了。至少,它不适用于我的系统(Ubuntu 20.04):https ://stackoverflow.com/questions/2830858/controlling-gnome-volume-using-dbus
pulsemixer
最终做了我需要的。pactl
可以设置音量,但不会报告电平以供 OSD 显示。此脚本提高/降低音量或切换静音,并显示相应的 OSD: