Add upperValue to alternate keys

String.toUpperCase() don't work for some unicode chars,
e.g. styled latin letters. To fix this we need to provide the
upper case value of the char using upperValue.

@lodr Could you take a look on this one?