]> git.tdb.fi Git - libs/gui.git/blobdiff - source/input/hub.cpp
Add functions to look up subdevices of composite input devices
[libs/gui.git] / source / input / hub.cpp
index b83d10d22431b6b89b7126c9f5fb7a61f38c97fe..e45cd6576b3bd02b890f2ab96606fc125fee63dc 100644 (file)
@@ -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<Device *>::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<Device *>::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;