문제

나는 글을 쓰고있다 (또 다른, C# 및 Visual Studio 2008을 사용하는 키보드 리퍼드를 알고 있습니다.

나는 따라 갔다 이 안내서 저수준 키 프레스를 스냅하는 방법을 배우려면 이것은 내 키보드의 일반 알파벳 문자를 재정의하는 데 적합하지만 만들기 위해 조금 더 필요한 것 같습니다. 캡 잠금 행동하십시오 Ctrl 키.

내 이해 (틀릴 수 있음)는 캡 잠금 그리고 Ctrl 키 그 이후로 서로 완전히 다르게 처리됩니다 캡 잠금 토글링 키입니다 Ctrl 키 단지 "정상적인"것입니다.

그래서 내가 여기서 이해하려고하는 것은 어떻게 만드는 방법입니다 캡 잠금 a처럼 행동하십시오 Ctrl 키 가장 낮은 수준의 키와 정상을 만드는 방법 Ctrl 키 a와 같은 핵심 행동 캡 잠금 열쇠.

감사

도움이 되었습니까?

해결책

예상되는 캡 잠금 상태를 나타내는 부울을 유지하십시오. Caps Lock 키가 히트되면 시스템을 설정합니다. 캡 잠금 부울의 가치로 돌아가십시오. 언제 Ctrl 키 히트, 캡 잠금의 예상 상태를 전환하고 시스템의 캡 잠금 값을 BOOL 값으로 설정하십시오.

다음을 사용하여 초기 예상 상태를 설정하십시오.

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

HookCallback (제공 한 링크에서)에 특별 논리를 추가하십시오. Ctrl 키 그리고 캡 잠금 타격을 받았습니다. 캡 잠금 장치는 LPARAM 일 때입니다 &H14. Ctrl은 lparam 일 때입니다 &H11.

시스템을 얻거나 설정합니다 캡 잠금 값:

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top