2012-10-23 10 views
5

Sto lavorando a un dispositivo di input che ha un pulsante che mi piacerebbe agire sia come pulsante di home se premuto da solo, ma anche come modificatore per gli altri pulsanti sul dispositivo.È possibile che un tasto modificatore Android fallback su un'azione?

So che si può fare questo nel file KCM con altri tasti, e avere qualcosa di simile:

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

E 'possibile avere qualcosa di simile:

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

modo che io possa premere quel pulsante con un altro pulsante e non farlo fallback su HOME?

Grazie in anticipo! : D

risposta

1

Questa funzionalità non è possibile a livello di sistema: vedere http://source.android.com/tech/input/key-character-map-files.html per un elenco di tutte le opzioni possibili.

Tuttavia, se si desidera avere sul livello di applicazione, è possibile programmarlo in modo seguente:

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); 
} 

Quindi, fintanto che questa applicazione è impostato per ricevere le sequenze di tasti (di solito un problema di privacy a meno che non lo stiate codificando da soli), può elaborare le sequenze di tasti e inviare il pulsante HOME quando necessario.

se dovessi decidere di procedere in tal modo, che avrebbe dovuto rimuovere il

base:        fallback HOME 

dal codice.

Problemi correlati