I certainly agree that software development for a keyboard is probably very expensive.
Because it an embedded system, the languages selected are either C++, C or Assembly or a combination of the above.
However, until they find a way to program in either Java or C#...
Software development will continue to be very very expensive.
Unless of course a brave manufacturer can experiment with Windows CE, compact .net framework, and C#!