2012-03-27 4 views
2

Samsung Galaxy Note에는 스타일러스가 있으며 스타일러스가 화면에 닿거나 화면을 떠날 때 이상한 동작을 관찰하고 있습니다.Samsung Galaxy 참고 - 스타일러스가 화면을 터치/릴리스 할 때 KeyEvent.KEYCODE_FORWARD_DEL 이벤트가 생성되는 이유는 무엇입니까?

예상되는 일련의 SessionView.onTouchEvent 호출 외에도 스타일러스 펜이 화면에 닿거나 이탈 할 때 SessionView.onKeyDown/SessionView.onKeyUp 호출이 수신됩니다. 인 SessionView.onKeyDown/SessionView.onKeyUp 대한 부호의 KeyEvent 호출 (112 KeyEvent.KEYCODE_FORWARD_DEL), 스캔 코드 또한 555

가 SessionView.onKeyDown/SessionView.onKeyUp 스타일러스 결과에 butoon 해제/가압 호출의 KeyEvent 코드 (114) (스타일러스 터치 예기치 않은 DEL 키를 생성하기 때문에, 키보드 이벤트에서이 구별을하고 우리의 응용 프로그램에서 키보드 기능을 엉망 KeyEvent.KEYCODE_CTRL_RIGHT) KeyEvent에 대한 이벤트 소스가 257 (InputDevice.SOURCE_KEYBOARD로보고됩니다 (544)

, 스캔 코드) 프레스.

누구든지이 동작에 대해 더 많은 것을 밝힐 수 있는지 궁금합니다. Android 2.3에서 스타일러스 기능을 구현하는 삼성 개발자의 독점적 인 해킹입니까? 이것을 처리하는 강력한 방법은 무엇입니까?

장치 세부 정보 :

Device model: GT-N7000 
Firmware version: 2.3.6 
Kernel version: 2.6.35.7-N7000XXLA4-CL886827 
[email protected]) 
#2 SMP PREEMPT Thu Jan 12 21:15:11 KST 2012 
Build number: GINGERBREAD.XXLA4 

답변

0

당신은 KEYCODE_FORWARD_DEL 그래서 키 코드 (112)는 삼성에 의해 정의 된 코드를해야 API 레벨 11에 새로운 필드 볼 수 있었다.

다음 코드에 따라 onKeyDown() 메서드에서 Java 리플렉션을 사용합니다. 시스템에서 112가 KEYCODE_PEN이 될 수 있습니다.

Field[] fields = event.getClass().getDeclaredFields(); 
for (Field f : fields) { 
    if (f.getType().equals(int.class)) { 
     try { 
      TLog.i(TAG, f.getName() + ": " + f.getInt(event)); 
     } catch (IllegalArgumentException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IllegalAccessException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
}