Hi Liam and alsa-devel,
My understanding is that a UCM device can represent a thing that has both input and output (I don't particularly like that, but it's too late to complain). How likely do you think that there are or there will be some drivers that expose separate input and output jack kcontrols for a headset jack, to differentiate between headphones/headset/microphone? My understanding is that jack kcontrols store only booleans, so there's no way to distinguish between headphones and a headset with just one kcontrol.
The current UCM "spec" doesn't support specifying multiple kcontrols, since there's only one "JackControl" value. (Perhaps the "JackDev" value suffers from this problem too, but I don't know if jack input devices already support reporting the state separately for input and output.)