What you want to do is called Case Mapping. Unicode provides a text file
you could use as input to a method that handles the conversion.
http://unicode.org/faq/casemap_charprop.html
However, this capability is built into Java and I would assume other modern
languages. That is, there is a library function that turns an uppercase
letter into its lowercase counterpart and vice versa.
UK English braille used to have a rule similar to what you describe, caps
only used when essential. If there was an algorithm to automate this,
perhaps you could find info on that.
FYI, this a funny article about UK braille readers' reaction to the change.
http://www.independent.co.uk/news/braille-change-angers-blind-readers-1174086.html
Best wishes,
SusanJ
For a description of the software, to download it and links to
project pages go to http://liblouis.org