none
Letra (Ñ) en Hexadecimal. RRS feed

  • Pregunta

  • saludos. 

    Estoy intentando finalizar la programacion de un teclado virtual y no he podido encontrar la forma de definir la letra Ñ en hexadecimal.

    ahora, hay una referencia creada en codeplex http://inputsimulator.codeplex.com/ que es muy buena, sin embargo esta no tiene implementada la letra Ñ, en el fuente que se puede descargar no aparece la implementacion del metodo SimulateKeyPress, es decir no se pueden agregar  nuevas funciones de teclas.

    se puede enviar la simulacion de la tecla Ñ  con algo diferente al SendKeys.

    saludos.

    sábado, 25 de febrero de 2012 1:35

Respuestas

  • Voy a responderte a lo que creo entender que preguntas.

    Para saber cuál es el key value (el virtual key code) de la tecla para el caracter "Ñ"c, puedes usar la función de win32 VkKeyScan.

    VkKeyScan("Ñ"c)  AND &HFF

    devuelve el virtual key code 192 (&HC0), para el teclado de la pc en la que escribo esto (ps/2 español 108 teclas).

    --

    Pensé que estaba en el foro de Visual Basic... igual se entiende.


    using System.Runtime.InteropServices;
    ...
    [DllImport("user32.dll")]
    static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
    
    [DllImport("user32.dll")]
    static extern short VkKeyScan(char ch);
    ...
    short vk = VkKeyScan('Ñ');  // byte bajo del short: virtual key code, byte alto: modificadores
    
    if (((vk >> 8) & 1) == 1)  // presionamos la mayúscula
    {
    	keybd_event((byte)Keys.ShiftKey, 0, 0, UIntPtr.Zero);
    }
    
    keybd_event((byte)(vk & 0xFF), 0, 0, UIntPtr.Zero);
    keybd_event((byte)(vk & 0xFF), 0, 2, UIntPtr.Zero);
    
    if (((vk >> 8) & 1) == 1)  // soltamos
    {
    	keybd_event((byte)Keys.ShiftKey, 0, 2, UIntPtr.Zero);
    }
    

    sábado, 25 de febrero de 2012 2:57