Ver Mensaje Individual
  #5 (permalink)  
Antiguo 10/11/2015, 02:42
vistaero
 
Fecha de Ingreso: noviembre-2009
Mensajes: 67
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Convertir código de tecla a nombre de tecla

Gracias, pero me temo que no va a poder ser tan fácil.

Prueba este código:

Código Visual Basic .NET:
Ver original
  1. Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
  2. MsgBox("Has pulsado la tecla " & e.KeyCode.ToString & " con KeyCode " & e.KeyCode & ".")
  3. 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.

Última edición por vistaero; 10/11/2015 a las 02:48