Allow custom xkb keyboards to be displayed

Advanced users can define custom Xkb keyboard layouts for otherwise
unsupported languages/scripts.  Without this change, only the standard
system keyboards could be seen in our programs even though the system
could choose the custom keyboards through its standard setup software
and input language applets.
This if block gets repeated several times. What about refactoring it into a method 
`List<LayoutDescription> GetLayouts(string desription)`?