Como converter um código de chave virtual em um caractere de acordo com o layout atual do teclad
Procurei várias perguntas anteriores sobre isso, e a melhor resposta que encontrei até agora é algo como isto:
(char) WinAPI.MapVirtualKey((uint) Keys.A, 2)
No entanto, isso não funciona de duas maneiras:
Sempre retorna letras maiúsculas. ParaKeys.A
Espero conseguir o personagema
enquanto que paraKeys.A | Keys.ShiftKey
Espero conseguirA
; no entanto, parece que receboA
para ambos
Parece não levar em consideração os layouts de teclado. Por exemplo, paraKeys.OemMinus
Parece que sempre entendo o personagem-
, mesmo que o layout atual do teclado seja alemão, onde espero que essa tecla retorneß
.
Qual é a solução correta para isso?