2012-09-03 21 views
6

Quiero que mi aplicación sea compatible con los métodos abreviados de teclado. Muchos dispositivos, como Asus Transformer tienen un teclado externo que tiene tecla Ctrl (disponible en API nivel 11). He hecho algo de código, para comprobar si Ctrl obras clave en emulador:Métodos abreviados de teclado personalizados

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

Por desgracia, no funciona en el emulador y no puedo comprobar que el hardware real.

Tengo dos preguntas:
1. ¿Funcionaría en el dispositivo como Asus Transformer?
2. ¿Por qué Ctrl tecla no funciona en el emulador?

EDIT: He intentado encontrar una respuesta o solución a mi problema, pero ni Google ni SO me han ayudado.

+0

no hay tecla CTRL en la mayoría de los dispositivos (al menos no en la mayoría de los teclados suaves) – njzk2

+0

Pero, ¿qué pasa con los teclados de hardware con la tecla CTRL? – RedScorpio

Respuesta

1

1. ¿Funcionaría en dispositivos como Asus Transformer?

he comprobado en mi Asus Transformer TF101 con teclado físico (estación de acoplamiento estándar de Asus ) y su código funciona bien. Creo que puedes usarlo sin problemas.

2. ¿Por qué la tecla CTRL no funciona en el emulador?

Mirando el list of buttons that can be mapped (por ejemplo, usando emulator -keyset) No creo que la versión actual del emulador apoya directa Ctrl asignación de teclas, por lo que está fuera de suerte aquí.

+0

¡Gracias por la respuesta! Esas son buenas noticias. Creo que es una buena idea agregar una opción para cambiar la tecla modificadora a fin de proporcionar soporte para todos los que tengan teclado para dispositivos Android. – RedScorpio

Cuestiones relacionadas