2013-11-21 2 views
2

java에서 눌려진 키보드 키에 대해 KeyEvent를 만드는 것과 관련된 저수준 프로세스를 이해하려고합니다.JVM은 어떻게 그리고 어디에서 키보드 스트로크를 처리합니까?

  1. Java는 어떻게 그리고 어디서 실제 키 입력을 처리합니까?
  2. 키 입력은 어디에서 JVM을 입력합니까?
  3. 키 입력은 어떻게 KeyEvent가됩니까?

내 의도는 순수하게 자바의 내부 동작을 이해하는 것입니다. 보너스 : MouseEvents의 프로세스가 동일하거나 유사하거나 완전히 다른가요?


나는 이미 소스 코드를 파고 들었다. 그래서이 질문은 소스와 문서에 'awt'(awt 자체가 거대하기 때문에)가 아닌 몇 가지 진입 점을 제공하는 것을 부분적으로 목표로합니다.

JNI 레이어를 구성하는 클래스를 포함하는 이국적인 패키지가있을 수 있습니까?

+0

저는 이것이 실제로 JVM의 일부라고 생각하지 않지만 사용하는 Win32 라이브러리를 둘러싼 모든 래퍼를 생각합니다. –

+0

입력 해 주셔서 감사합니다. @Jonathon. 그 생각을 반영하기 위해 질문의 일부를 다시 말하게 될 것입니다. –

+2

* "내 의도는 자바의 내부 동작을 이해하는 것입니다."* - ** 소스 루크 읽기 ** OpenJDK 사이트로 이동하여 Java 6 또는 7 또는 8 용 소스 코드 번들을 다운로드하고 압축을 풉니 다. 그리고 독서를 시작하십시오. (이와 같은 질문을 할 시간이 있다면 자신의 연구를 할 시간이 있습니다 .-)) –

답변

1

Java는 어떻게 그리고 어디에서 실제 키 입력을 처리합니까? 키 입력은 어디에서 JVM을 입력합니까?

이것은 JVM이 실행되는 운영 체제/데스크탑 환경에 따라 다릅니다. 모든 최신 OS는 하드웨어와의 통신을 처리하며, 일반적으로 프로그램에 직접 하드웨어 액세스 (MS-DOS와 같은 구형 시스템에서는 사용되지 않음)를 허용하지 않습니다.

그래서 OS는 키보드 입력을 받아들이고 포커스가있는 프로그램으로 보냅니다. 그 프로그램이 JVM이면 JVM은 일반적인 OS 고유의 메커니즘을 통해 키보드 입력을 수신 한 다음 내부적으로 처리합니다.

어떻게 키 입력이 KeyEvent가됩니까?

JVM이 키 입력을 받으면이를 처리하고 일어날 일을 결정합니다. 예를 들어 GUI 구성 요소에 현재 입력 포커스가있는 경우 JVM은 KeyEvent를 만들어이 구성 요소로 보냅니다.


Stephen C가 지적했듯이, 더 깊이 파고 싶다면 JDK 소스 코드를 읽어야합니다. 이것은 크고 복잡한 소프트웨어이므로 우선 먼저 검색을 수행하십시오.

Swing 이전의 AWT (Java의 "오래된"GUI 프레임 워크)가 여전히 GUI 코드에 대한 많은 하위 레벨 세부 사항을 처리하므로 좋은 시작 지점은 page for the The Abstract Windowing Toolkit Group 일 수 있습니다.

+0

이 질문은 실제로 '연구' 당신이 언급 한 '일'.나는 원래 KeyEvents로 시작하여 정상으로 내려 가고자했지만 실패했다. 이 질문에 추가됩니다. –

관련 문제