Pregunta

Estoy escribiendo (aún otra, Lo sé) TECHARSE RETRAPPER usando C# y Visual Studio 2008.

Seguí esta guía Para aprender a tomar las presiones de teclas de bajo nivel. Esto funciona bien para anular, por ejemplo, caracteres alfabéticos normales en mi teclado, pero parece que necesito un poco más para hacer Bloq Mayús actuar como Control.

Mi comprensión (que puede ser incorrecta) es que Bloq Mayús y Control se manejan completamente diferentes entre sí desde Bloq Mayús es una llave de alternativa mientras que Control es solo uno "normal".

Entonces, lo que estoy tratando de entender aquí es cómo hacer Bloq Mayús comportarse como un Control clave en el nivel más bajo y también cómo hacer lo normal Control CLAVE ACT como un Bloq Mayús llave.

Gracias

¿Fue útil?

Solución

Mantenga un bool que representa el estado de bloqueo esperado del bloqueo. Cuando se presiona la tecla de bloqueo de CAPS, configure los sistemas Bloq Mayús Value de nuevo al valor de la bool. Cuando Control se ve afectado, altere el estado esperado del bloqueo de las tapas y establezca el valor de bloqueo de tapa del sistema en el valor del bool.

Use lo siguiente para establecer el estado esperado inicial:

[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true, CallingConvention=CallingConvention.Winapi)] 
public static extern short GetKeyState(int keyCode); 
bool CapsLock = (((ushort)GetKeyState(0x14)) & 0xffff) != 0;

Agregue la lógica especial en HookCallback (desde el enlace que proporcionó) para cuando Control y Bloq Mayús son golpeados. El bloqueo de las tapas es cuando Lparam es &H14. CTRL es cuando LPARAM es &H11.

Para obtener/establecer el sistema Bloq Mayús valor:

http://social.msdn.microsoft.com/forums/en-us/csharpgeneral/thread/fb8308e5-7620-43cc-8ad8-be67d94708fa/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top