본문 바로가기

Language/Android

키보드 이벤트


키보드의 이벤트 받는 방법 2가지를 소개한다.

이상하게 가상 키보드에서는 (del,enter)만 작동하고 일반키는 이벤트가 발생하지 않는다.

아시는 분이 있으면 댓글 부탁드립니다.

방법1
protected void onCreate(Bundle savedInstanceState) {
    wordInputTV = (EditText)findViewById(R.id.wordInputTV);

    wordInputTV.setOnKeyListener(new OnKeyListener() {
       
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            Log.d(TAG, "<<<<<   setOnKeyListener. keyCode : "+keyCode+",   event :"+event);
            return false;
        }
    });
}
결과1 (완료를 눌렀을 경우)
<<<<<<   setOnKeyListener. onKey : 66,   event :KeyEvent{action=0 code=66 repeat=0 meta=0 scancode=0 mFlags=22}
<<<<<<   setOnKeyListener. onKey : 66,   event :KeyEvent{action=1 code=66 repeat=0 meta=0 scancode=0 mFlags=22}


방법2
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    // TODO Auto-generated method stub
    Log.d(TAG, "<<<<<   dispatchKeyEvent. event : "+event);
    return super.dispatchKeyEvent(event);
}
결과2 (완료를 눌렀을 경우)
 <<<<<<   dispatchKeyEvent. event : KeyEvent{action=0 code=66 repeat=0 meta=0 scancode=0 mFlags=22}
<<<<<<<   dispatchKeyEvent. event : KeyEvent{action=1 code=66 repeat=0 meta=0 scancode=0 mFlags=22}