C#을 사용하여 Ctrl을 사용하여 캡 잠금을 재정의합니다.
문제
나는 글을 쓰고있다 (또 다른, 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
.
시스템을 얻거나 설정합니다 캡 잠금 값:
제휴하지 않습니다 StackOverflow