Sí, utilicé el método MapVirtualKey
. Pero esperaba más detalles sobre cómo usarlo: qué directiva DllImport
usar, qué enum
es específico para mapear caracteres, etc.
No me gustan estas respuestas en las que hace google como 5 segundos y luego solo sugiera una solución: el verdadero desafío es juntar todas las piezas y no perder el tiempo con toneladas de páginas MSDN sin muestra u otros foros de codificación para obtener su respuesta. Sin fundamento ofensivo, pero tu respuesta (incluso buena) no tuvo problemas ya que tenía esta respuesta incluso antes de publicar mi pregunta en el foro.
Y esto es todo, voy a publicar lo que estaba buscando - una solución out-of-the-box C#:
1- Coloque esta directiva dentro de su clase:
[DllImport("user32.dll")]
static extern int MapVirtualKey(uint uCode, uint uMapType);
2- Recuperar a tu personaje como este:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
if (msg.Msg == WM_KEYDOWN)
{
// 2 is used to translate into an unshifted character value
int nonVirtualKey = MapVirtualKey((uint)keyData, 2);
char mappedChar = Convert.ToChar(nonVirtualKey);
}
return base.ProcessCmdKey(ref msg, keyData);
}
Gracias por cuidar ... y disfrutar!
[MapVirtualKey] (http://msdn.microsoft .com/en-us/library/ms646306 (VS.85) .aspx)()? – plinth