2012-10-23 2 views
5

입력 버튼이있는 입력 장치에서 작업하고 있는데, 버튼 하나만 누르면 홈 버튼으로 작동하지만 기기의 다른 버튼에 대해서는 수정 자로 작동합니다.조치에서 Android 수정 자 키 대체를 대체 할 수 있습니까?

나는 다른 버튼으로 KCM 파일에서이 작업을 수행 할 수 있습니다 알고,이 같은 뭔가 :

key ESCAPE { 
    base:        fallback BACK 
    alt, meta:       fallback HOME 
    ctrl:        fallback MENU 
} 

이 같은 것을 가질 수 있습니다 : 그래서 누를 수

key CTRL_LEFT { 
    base:        fallback HOME 
    {SOMETHING HERE}:     CTRL_LEFT 
} 

을 그 버튼을 다른 버튼과 함께 놓고 홈으로 돌아 가지 않습니까?

미리 감사드립니다. : D

답변

1

이 기능은 시스템 수준에서 불가능합니다. 가능한 모든 옵션 목록은 http://source.android.com/tech/input/key-character-map-files.html을 참조하십시오. 당신은 응용 프로그램 수준에서 그것을하고 싶은 경우 다음과 같이

그러나, 당신은 그것을에서 프로그램 수 : 다음

import android.view.KeyEvent; 

private boolean home = false; 

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (event.getScanCode() == 29)  //29 == CTRL_LEFT 
    home = true;  //if we release this button, HOME needs to be invoked 
    else home = false; //so CTRL_LEFT was used as a modifier: no need to invoke HOME 

    //allow the system to pass key handling to the next listener 
    return super.onKeyUp(keyCode, event); 
} 

public boolean onKeyUp(int keyCode, KeyEvent event) 
{ 
    if (event.getScanCode() == 29 && home == true) 
    { 
    super.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HOME)); 
    return true;  //so we absorb the event 
    } 
    return super.onKeyUp(keyCode, event); 
} 

을 한이 응용 프로그램은 일반적으로 (키 입력을 수신하도록 설정되어 개인 정보 문제를 직접 코딩하지 않는 한) 키 입력을 처리하고 필요할 때 HOME 버튼을 보낼 수 있습니다.

당신이 이렇게 진행하기로 결정해야, 당신은 당신의 코드에서

base:        fallback HOME 

을 제거해야 할 것입니다.

관련 문제