문제

여러 개의 키보드가 있는 시스템이 있는데 어떤 키보드에서 키 입력이 나오는지 알아야 합니다.설정을 설명하려면 다음을 수행하세요.

  1. 일반 PC와 USB 키보드가 있습니다
  2. 일부 하드 키가 있는 외부 VGA 화면이 있습니다.
  3. 하드 키는 표준 USB 키보드로 매핑되어 제한된 수의 키 코드(F1, F2, Return, + 및 -)를 전송합니다.

내 응용 프로그램에 포커스가 없을 때에도 입력을 처리할 수 있는 낮은 수준의 후크(C#에서는 실제로 Win32 기능을 호출)가 있습니다.

문제는 일반 키보드를 사용할 때 매핑된 키 코드 중 일부가 외부 화면에서 구동되는 애플리케이션에 의해 선택된다는 것입니다.외부 화면에서 전송되고 확인에 사용되는 키 누르기 중 하나는 VK_RETURN입니다."장치"를 식별하고 이를 필터링할 수 없다면 사용자는 보지 않고도 화면에서 작업을 수행하고 이를 확인할 수 있습니다.

키 누름을 담당하는 키보드가 무엇인지 어떻게 알 수 있습니까?

도움이 되었습니까?

해결책

예, 저는 교정을 받았고, 나쁘고 매일 새로운 것을 배우고 있습니다.

이를 보완하려는 나의 시도는 다음과 같습니다 :) :

  • ::RegisterRawInputDevices()를 사용하여 원시 입력(2개의 키보드)에 사용하려는 장치를 등록합니다.

  • GetRawInputDeviceList()에서 이러한 장치를 가져올 수 있습니다.

  • 장치를 등록하고 나면 WM_INPUT 메시지를 받기 시작합니다.

  • WM_INPUT 메시지의 lParam에는 입력이 발생한 키보드와 가상 키코드 및 메시지 유형(WM_KEYDOWN, WM_KEYUP, ...)을 결정하는 데 사용할 수 있는 RAWKEYBOARD 구조가 포함되어 있습니다.

  • 따라서 마지막 메시지가 어디서 왔는지에 대한 플래그를 설정한 다음 이를 일반 키보드 입력 핸들러에 전달할 수 있습니다.

다른 팁

이렇게 할 방법이 없습니다.Windows에서는 이를 추상화합니다.언급한 대로 장치 드라이버를 작성/수정해야 합니다.

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