Gracias, pero me temo que no va a poder ser tan fácil.
Prueba este código:
Código Visual Basic .NET:
Ver originalPrivate Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
MsgBox("Has pulsado la tecla " & e.KeyCode.ToString & " con KeyCode " & e.KeyCode & ".")
End Sub
La tecla ç por ejemplo, que según Windows se llama OemQuestion, es la tecla con KeyCode 191, y esa lista de la página de Microsoft tan sólo llega al 127. ¡Y a saber cuántos más existen!
¿Y qué pasará con las demás distribuciones de teclado? ¿cada KeyCode será una tecla diferente según el idioma del teclado? ¿o habrá cientos de KeyCode en total para los cientos de teclas diferentes que deben haber sumando las teclas de todos los tipos de teclado que existan?
Ya que el nombre de la tecla que ha sido pulsada en un evento KeyDown se obtiene con e.KeyCode.ToString, he pensado que cuando el usuario pulse una nueva tecla para el atajo de teclado, se guarde en My.Settings el nombre de tecla junto con el KeyCode. Y así utilizar internamente el KeyCode, pero mostrar en la interfaz el nombre de tecla. Pero tampoco es una solución perfecta, ya que requiere que yo guarde de antemano el nombre de cada tecla, y a saber cuántos problemas más.
Lo idóneo sería una conversión real por parte de Windows.
¿Tal vez un código para simular una pulsación del teclado utilizando un KeyCode, y así obtener el nombre de esa tecla con el e.KeyCode.ToString? sería otra solución poco elegante pero podría funcionar. Investigaré a ver qué tal.