我试图获得Ubuntu10.10中当前插入USB设备的列表,并监视发生的更改,比如使用udev和D总线插入或退出设备。
我对用D总线编程相当陌生。我看到了一个例子:"Linux:如何检测usb键盘是否已插入和拔出“。问题是它使用HAL,我知道HAL被废弃了。
我找到了一些工作代码,但它只适用于存储设备,如USB棒、媒体播放器或CD-ROM驱动器。我想要所有的东西:鼠标,键盘,USB摄像头,充电器,任何连接到USB上的东西。
这基本上就是我现在拥有的(也是):
import dbus
import gobject
from dbus.mainloop.glib import DBusGMainLoop
def device_added_callback(device):
print 'Device %s was added' % (device)
def device_changed_callback(device):
print 'Device %s was changed' % (device)
#must be done before connecting to DBus
DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
proxy = bus.get_object("org.freedesktop.UDisks",
"/org/freedesktop/UDisks")
iface = dbus.Interface(proxy, "org.freedesktop.UDisks.Device")
devices = iface.get_dbus_method('EnumerateDevices')()
print '%s' % (devices)
#addes two signal listeners
iface.connect_to_signal('DeviceAdded', device_added_callback)
iface.connect_to_signal('DeviceChanged', device_changed_callback)
#start the main loop
mainloop = gobject.MainLoop()
mainloop.run()
发布于 2011-02-24 14:42:20
我对DBus或udev没有太多的经验,但是比德夫看起来很有希望。
https://askubuntu.com/questions/27948
复制相似问题