2013-08-22 5 views
1

나는 실제로 나에게 이해가되지 않는 재현성있는 버그가 발생했습니다. 바라건대 누군가 Windows에서 키보드 입력의 내부에 대해 더 많이 알고 있기 때문에 (Windows 7을 사용하고 있습니다) 해결 방법에 대한 올바른 방향을 제시 할 수 있습니다. 지금 서서 나는 어디에서 봐야할지 모르겠다.언어 막대 (입력 언어)는 키보드 후크에 어떤 영향을 줍니까?

내 응용 프로그램은 MouseKeyboardActivityMonitor 라이브러리를 사용하여, 글로벌 키보드 후크를 작성합니다. 이것은 나에게 잘 작동했지만 다른 키보드 입력 언어를 사용하는 사람들로부터 버그 보고서를 신속하게 받았습니다. 그들이 악센트로 편지를 쓸 때, . ë 및 ê이면 각각 ¨¨e 및 ^^ e로 표시됩니다.. This bug is also reported on the library's website이지만 아직 해결되지 않았습니다.

내가 다른 입력 언어 '네덜란드 (벨기에)'다음 기존에 '영어 (미국)'설정 버그를 재현하려고합니다. 후크를 설치하는 응용 프로그램에 포커스가, 언어는 '영어 (미국)'로 설정되어있는 경우

버그가 발생하지 않습니다 일부 주위 놀겠 후 나는 다음과 같은 발견했다. 다른 응용 프로그램 (예 : 메모장)에 쓰고 'Dutch (Belgium)'를 사용하여 특수 문자 작업을 작성하십시오. 후크를 설치하는 응용 프로그램에 포커스가 있고 언어가 'Dutch (Belgium)'로 설정되면 버그가 발생합니다.

나는 두 가지가 관련이 있는지 등의 단서를 찾고 있어요. 아마도 키보드 후크 라이브러리에 몇 가지 추가 검사를해야할까요? source code of the keyboard hook is available on line.

답변

0

은 입력 언어 응용 프로그램에서 업데이트되지 않는 것 같습니다. 이 방법은 그러나 강조의

internal static extern uint GetKeyboardLayout(int dwLayout); 

documentation :

입력은 사용하는 라이브러리의 소스 코드를 보면, 그들이 올바른 키보드 레이아웃을 얻기 위해이 호출을 사용하는 것 또한 음성 - 텍스트 변환기 입력기 (IME) 입력 또는 임의의 다른 형태를 포함 할 수 있기 때문에 로케일 식별자는 키보드 레이아웃 보다 넓은 개념이다. 자판 배열을 동적으로 변경할 수 있으므로 현재 키보드 레이아웃에 대한 정보를 캐시하는 응용 프로그램은 언어의 변경 내용을 알리기 위해 WM_INPUTLANGCHANGE 메시지를 처리해야합니다.

그러나 코드에 잠깐 한눈을 기반으로, 도서관이 동작 또한

가 발생할 수 있습니다,이 WM_INPUTLANGCHANGE 메시지에 응답하지 않는 것, 여기 an explanation 방법 키보드에 유용한 링크입니다 Windows에서 처리합니다