X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput%2Fhub.cpp;h=e45cd6576b3bd02b890f2ab96606fc125fee63dc;hb=3b0d63f09b6bfc5de215e27eef8a5934eb4d3851;hp=b83d10d22431b6b89b7126c9f5fb7a61f38c97fe;hpb=51d4984883ae44002fd33665b6ce3c3249210a90;p=libs%2Fgui.git diff --git a/source/input/hub.cpp b/source/input/hub.cpp index b83d10d..e45cd65 100644 --- a/source/input/hub.cpp +++ b/source/input/hub.cpp @@ -25,6 +25,28 @@ void Hub::attach(Device &dev) dev.signal_axis_motion.connect(sigc::bind_return(sigc::bind(sigc::mem_fun(this, &Hub::axis_motion), index), false)); } +Device *Hub::find_subdevice(DeviceType t, unsigned n) +{ + for(vector::const_iterator i=devices.begin(); i!=devices.end(); ++i) + if(Device *dev = (*i)->find_subdevice(t, 0)) + { + if(!n) + return dev; + --n; + } + return 0; +} + +Device *Hub::find_subdevice(const string &n) +{ + if(n==name) + return this; + for(vector::const_iterator i=devices.begin(); i!=devices.end(); ++i) + if(Device *dev = (*i)->find_subdevice(n)) + return dev; + return 0; +} + std::string Hub::get_button_name(unsigned btn) const { unsigned dev_index = btn>>8;