What's make Kivy specific to NUI is we have an approach that combine every possible input into one event. That's unlikely because most of times, you have event for specific device (on_mouse_down/move.., on_object_down/move..., on_touch_... ) Here, we have uniq event dispatch, and extensible motion event that deliver all the data he can deliver (position, angle, acceleration, image...). It's called profile, and a motion event can deliver information according to one or more profile. For example, the mouse will fill properties of the "pos" profile, instead of Wacom tablet that will fill "pos", "pressure", or even TUIO with fiducials object that will fill "markerid" and "angle". Then you can do specific interaction or filter specific motion event according the profiles delivered in the current touch.
All the widgets are made using that approach, make it possible multiple interactions at the same time.
Not sure if it'm 100% clear, best is to read & try :)