2012-09-03 12 views
6

Desidero che la mia app supporti le scorciatoie da tastiera. Molti dispositivi, come ad esempio Asus Transformer, dispongono di una tastiera esterna con la chiave Ctrl (disponibile su livello API 11). Ho fatto un po 'di codice, per verificare se Ctrl opere chiave in emulatore:Scelte rapide da tastiera personalizzate

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    if(Build.VERSION.SDK_INT>10 && 
     event.getAction()==KeyEvent.ACTION_DOWN && 
     event.isCtrlPressed()){ 
    String actionType="NONE"; 
    final int keyCode = event.getKeyCode(); 
    switch(keyCode){ 
    case KeyEvent.KEYCODE_C: 
     actionType = "COPY"; 
     break; 
    case KeyEvent.KEYCODE_V: 
     actionType = "PASTE"; 
     break; 
    case KeyEvent.KEYCODE_X: 
     actionType = "CUT"; 
     break; 
    case KeyEvent.KEYCODE_R: 
     actionType = "REFRESH"; 
     break; 
    case KeyEvent.KEYCODE_A: 
     actionType = "SELECT ALL"; 
     break; 
    } 
    Toast.makeText(ctx, actionType, Toast.LENGTH_SHORT).show(); 
    return true; 
    } 
    return super.dispatchKeyEvent(event); 
} 

Purtroppo non funziona in emulatore e non posso controllare su hardware reale.

Ho due domande:
1. Funzionerebbe su dispositivo come Asus Transformer?
2. Perché la chiave Ctrl non funziona nell'emulatore?

EDIT: Ho cercato di trovare una risposta o una soluzione al mio problema, ma né Google né SO hanno aiutato.

+0

non c'è alcun tasto CTRL sulla maggior parte dei dispositivi (almeno non sulla maggior parte delle tastiere software) – njzk2

+0

Ma che dire delle tastiere hardware con tasto CTRL? – RedScorpio

risposta

1

1. Funzionerebbe su dispositivo come Asus Transformer?

Ho controllato sul mio Asus Transformer TF101 con tastiera fisica (docking station standard dal Asus) e il codice funziona benissimo. Penso che tu possa usarlo senza problemi.

2. Perché il tasto CTRL non funziona nell'emulatore?

Guardando il list of buttons that can be mapped (ad esempio utilizzando emulator -keyset) Non credo che la versione corrente di emulatore supporta diretta Ctrl mappatura dei tasti, quindi sei fuori di fortuna qui.

+0

Grazie per la risposta! Questa è una buona notizia. Penso che sia una buona idea aggiungere un'opzione per cambiare il tasto modificatore al fine di fornire supporto a chiunque abbia una tastiera per dispositivo Android. – RedScorpio

Problemi correlati