USB-устройство меняется с помощью Udev и D-Bus

Я пытаюсь получить список подключенных в настоящее время USB-устройств в Ubuntu 10.10 и отслеживать изменения, которые происходят, например, устройства, подключаемые или отключаемые с помощью udev и D-Bus.

Я довольно новичок в программировании с использованием D-Bus. Я видел один пример: « Linux: Как определить, подключена ли USB-клавиатура и отключена ли она ». Проблема в том, что он использует HAL, и я знаю, что HAL устарела.

Я нашел какой-то рабочий код, но он работает только с такими устройствами хранения, как USB-накопители, медиаплееры или приводы CD-ROM. Я хочу всего этого: мыши, клавиатуры, USB-камеры, зарядные устройства; все, что подключено к USB.

Как я могу прослушивать события D-Bus для любого 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()
5
задан 23 May 2017 в 15:39

1 ответ

У меня нет большого опыта работы с DBus или udev, но pyudev выглядит очень перспективным.

0
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: