2009-08-28 9 views
5

Ich schreibe (noch eine weitere, ich weiß) Tastatur Remapper mit C# und Visual Studio 2008.Aufschalten Caps Lock mit Ctrl C#

ich this guide gefolgt zu lernen, wie Low-Level-Taste drückt aufzuschnappen . Dies funktioniert gut, um z.B. normale alphabetische Zeichen auf meiner Tastatur, aber ich brauche ein bisschen mehr zu machen Caps Lock handeln wie Ctrl.

Mein Verständnis (was falsch sein kann) ist, dass Caps Lock und Ctrl voneinander da Caps völlig anders behandelt sperren ein Hin- und Herschalten Schlüssel ist, während Ctrl nur eine „normale“ ist.

Also, was ich versuche, hier zu verstehen, wie Caps Lock verhalten sich wie eine Ctrl Taste auf der untersten Ebene zu machen und wie auch den normalen Ctrl Taste Akt machen wie ein Caps Lock Schlüssel.

Dank

+0

ich sagen würde, warum wollen Sie das? Wenn Sie nicht möchten, dass die Daten in Großbuchstaben eingegeben werden, haben Sie einen Post-Input-Schritt, der die Groß-/Kleinschreibung ändert. – cjb110

Antwort

2

einen Bool pflegen, die sperren erwarteten Zustand der Kappen darstellt. Wenn die Feststelltaste gedrückt wird, setzen Sie den Caps Lock Wert des Systems auf den Bool-Wert zurück. Wenn Strg angeklickt wird, schalten Sie den erwarteten Zustand der Feststelltaste um und stellen Sie den Wert für die Feststelltaste des Systems auf den bool-Wert ein.

Verwenden Sie die nach dem ersten erwarteten Zustand zu setzen:

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

hinzufügen spezielle Logik in HookCallback (aus dem Link, den Sie zur Verfügung gestellt) für wenn Ctrl und Caps Lock getroffen werden. Feststelltaste ist, wenn LParam &H14 ist. Strg ist, wenn LParam &H11 ist.

erhalten/stellen Sie den Wert sperren Caps System:

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