你如何使用python在gnome 3下听Mediakey事件?

你如何使用python在gnome 3下听Mediakey事件?,第1张

概述我正在尝试在Gnome 3(Gnome Shell)下监听MediaKey事件.我找到的所有示例都指的是使用DBus连接到org.gnome.SettingsDaemon.MediaKeys.我的平台上似乎不存在此服务.我试图通过GObject-Introspection使用Python来做到这一点.例子说做这样的事情from gi.reposiotry i

我正在尝试在Gnome 3(Gnome Shell)下监听MediaKey事件.我找到的所有示例都指的是使用DBus连接到org.gnome.SettingsDaemon.MediaKeys.我的平台上似乎不存在此服务.

我试图通过GObject-Introspection使用Python来做到这一点.例子说做这样的事情

from gi.reposiotry import Gioconnection = Gio.bus_get_sync(Gio.BusType.SESSION,None)proxy = Gio.DBusProxy.new_sync(connection,None,'org.gnome.SettingsDaemon','/org/gnome/SettingsDaemon/MediaKeys','org.gnome.SettingsDaemon.MediaKeys',None)

毫不奇怪,这失败了.我错过了提供此服务的安装,还是我必须以另一种方式执行此 *** 作?

UPDATE

这适用于媒体键侦听器,无论哪个窗口具有焦点,它都会侦听键事件.它适用于甚至没有自己的GUI的应用程序,并且是桌面范围的.这就是我尝试使用Mediakeys DBus服务的原因,但却发现我的桌面缺少它.

更新2

我应该清楚,MediaKeys服务不存在.我不能事件连接到服务并创建代理,因为它不存在.我想知道的是,我是否错过了安装,或者是否在Gnome 3更新中删除了此服务?如果删除了,那么我如何在这个新环境中监听媒体密钥?我正在运行Gnome 3.8.2.

更新3

对不起应该首先提到这一点.有一天,我会完善我的问题: – }.我正在运行Gentoo.

最佳答案你真的看到过这个问题吗? can’t get dbus signal listener to work in C with gnome multimedia keys

提问者说这段代码有效:

#!/usr/bin/env python"""Printing out gnome multi media keys via dbus-python."""import gobjectimport dbusimport dbus.serviceimport dbus.mainloop.glibdef on_mediakey(comes_from,what):    """ gets called when multimedia keys are pressed down.    """    print ('comes from:%s  what:%s') % (comes_from,what)    if what in ['Stop','Play','Next','PrevIoUs']:        print ('Got a multimedia key!')    else:        print ('Got a multimedia key...')# set up the glib main loop.dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)bus = dbus.Bus(dbus.Bus.TYPE_SESSION)bus_object = bus.get_object('org.gnome.SettingsDaemon','/org/gnome/SettingsDaemon/MediaKeys')# this is what gives us the multi media keys.dbus_interface='org.gnome.SettingsDaemon.MediaKeys'bus_object.GrabMediaPlayerKeys("MyMultimediaThingy",dbus_interface=dbus_interface)# connect_to_signal registers our callback function.bus_object.connect_to_signal('MediaPlayerKeypressed',on_mediakey)# and we start the main loop.mainloop = gobject.MainLoop()mainloop.run()

更新:

看来你的问题与你的Gnome发行版一样,正如其他人之前在this bug report年遇到的那样.所以你可能应该升级你的发行版. 总结

以上是内存溢出为你收集整理的你如何使用python在gnome 3下听Mediakey事件?全部内容,希望文章能够帮你解决你如何使用python在gnome 3下听Mediakey事件?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1205256.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存