2010-05-09 4 views
3

C++의 vkCode가 제공하는 키 코드와 Java의 KeyEvent가 제공하는 키 코드의 차이점을 발견했습니다. (Ofcourse 정상적인 문자는 동일한 코드 (0 => 48 ASCII처럼)하지만 그들은 다른 키가 다릅니다.) 하나의 스위치에서 다른 스위치로 로직을 변환하는 방법이 있습니까? 아니면 스위치 및 IF의 부하를 사용해야합니다. C++이 제공하는 네이티브 후크 때문에 내 앱이 C++의 절반이고 Java의 절반이기 때문에 사용자가 누른 키 코드의 키 코드를 가져 와서 자바에서 사용하게됩니다.C++ 키보드 키 코드와 JAVA KeyEvent 키 코드의 차이점

미리 감사드립니다. 당신은 단지 필요하므로

+0

표준 C++에는 "vkCode"라는 개념이 없습니다. 플랫폼 특정 라이브러리를 고려하고 있습니까? 그렇다면 어느 것을 말하십시오. –

+0

잘예요 종류의. 나는 windows.h를 사용하고 있고 여기에 vkCode가 있습니다 : ((KBDLLHOOKSTRUCT *) lparam) -> vkCode // lparam은 후크에 필요한 LPARAM 매개 변수라고 가정합니다. – Auxiliary

답변

3

이상이 나는, 당신은 아마 그 큰 배열의 자바 키 코드를 넣어하는 lookup table에 넣어 수있는 스위치의 부하와 IF를

을 사용 하죠 do javaKeyCode = keyLut[cppScanCode].

here의 목록과 VK_KEYCODES은 물론 the API docs for KeyEvent에서 찾을 수 있습니다.

Java는 플랫폼에 독립적이므로 예를 들어 왼쪽 키를 누르면 스캔 코드와 상관없이 항상 VK_LEFT이됩니다. 전적으로 확신 할 수는 없지만, C++의 스캔 코드는 하드웨어에 의존한다고 생각합니다.

+0

감사합니다. 나는 이것이 나의 유일한 희망이라고 생각한다. 나는 전에 실제로 Lut을 사용하지 않았고 Netbeans IDE는 자바에서 온다고 말하고 있습니다. 이미지. 이미지. 그게 맞습니까? – Auxiliary

+0

아니요, 조회 테이블은 API와 아무 관련이 없습니다. 단순한 함수를 배열로 인코딩하는 단순한 방법입니다. – aioobe