Domanda

sto scrivendo ( ancora un altro , lo so) Tastiera remapper utilizzando C # e Visual Studio 2008.

questa guida per imparare a scatto su presse chiave di basso livello. Questo funziona bene per superiori esempio normali caratteri alfabetici sulla mia tastiera, ma mi sembra di avere bisogno di un po 'di più per rendere Caps blocco agire come Ctrl .

La mia comprensione (che può essere corretto) è che Blocco maiuscole e Ctrl sono gestiti completamente diverso da un altro dato Blocco maiuscole è un chiave di commutazione che, Ctrl è solo una "normale".

Quindi quello che sto cercando di capire è come fare Caps Lock comportarsi come un Ctrl chiave a livello molto più basso e anche come fare il normale < kbd> Ctrl atto chiave come un Caps Lock chiave.

Grazie

È stato utile?

Soluzione

Mantenere un bool che rappresenta lo stato previsto del caps lock. Quando tasto Bloc Maiusc è colpito, impostare i sistemi di Caps valore di blocco torna al valore del bool. Quando Ctrl viene colpito, cambiare lo stato previsto dei tappi di bloccaggio e portare Cap Value di blocco del sistema al valore del bool.

Utilizzare i seguenti per impostare lo stato previsto iniziale:

[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;

Aggiungi logica speciale nel HookCallback (dal link che hai fornito) per quando Ctrl e Blocco maiuscole vengono colpiti. blocco maiuscole è quando lParam è &H14. Ctrl è quando lParam è &H11.

Per ottenere / set del sistema Caps Lock Valore:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top