2012-04-06 172 views
6

Il tasto destro del mouse su un mouse USB inserito in Android (ics) è sempre indicato come pulsante "indietro"? Ho una compressa dove non lo è.Mouse USB Android tasto destro del mouse comportamento corretto (ICS)

Desidero rimuovere la barra di stato e continuare a utilizzare il tablet con il mouse USB.

Qualcuno sa dove/come configurare il comportamento in Android?

+0

Specificare modello/marca del tablet. –

+0

Questa era una marca senza nome direttamente dalla fabbrica in Cina. Sembra che abbiano commesso un errore e, al momento, non sapevo quale fosse il comportamento standard. Dal momento che non lo hanno riconosciuto come un errore da subito. Grazie turbo. –

risposta

9

Risposta tardiva, ma la risposta è sì. Fornirò ulteriori dettagli su questo argomento poiché è lo solo argomento su Internet di questo tipo.

Comportamento predefinito: Android tratta questo come un pulsante indietro, senza eccezioni visibili.

Questa è una funzionalità piuttosto interessante per i telefoni e per le app normali. Tuttavia, due tipi di persone vorrebbero che questa funzione fosse implementata in modo diverso. Modders e sviluppatori di app. Fix

Modders': Su un dispositivo radicata (e potenzialmente senza radice per parecchi dispositivi perdente con adb sbloccato), osservare Generic.kl sotto /system/usr/keylayout. Cerca la bandiera KEY_BACK, potrebbero esserci più keycode su più linee collegate ad essa. Per me era key 158 con la bandiera WAKE_DROPPED. Per una generica funzione "tasto destro del mouse" vorrai scambiare i codici numerici per il tasto indietro e il tasto menu, così quando il mouse invia un comando di back-key il sistema in realtà attiva un comando di tasto menu, pur mantenendo alcuni chiave hardware (tasto menu etichettato) sul dispositivo per tornare indietro. Sì, questo invertirà i tasti hardware sul telefono, ma è la soluzione più semplice, senza ricostruire l'intera ROM. Se questo è per una causa aziendale o professionale, forse vedere questo articolo: Overriding Mouse Events Kernel-Level. In realtà vorrei consigliare la creazione di un modulo Xposed che sostituisca la procedura a cui fanno riferimento. Altrimenti, guarda come rimappare i keycode, mi spiace di non aver trovato un articolo diretto qui.

Correzione di sviluppatori di app: Non root: Ignora la chiave indietro nell'applicazione e restituisce true. Nell'override onBackPressed(), eseguire qualsiasi funzione di clic con il pulsante destro del mouse necessaria. Semplice! Poiché è molto probabile che tu desideri una funzionalità del menu contestuale simile al PC, dovrai anche tenere traccia di dove si trova il mouse, tramite un listener MotionEvent applicato alla vista principale con chiamate event.getRawX() e RawY() che memorizzano valori su un valore globale variabile. È quindi possibile posizionare il menu di scelta rapida (dimensione ListView o VerticalLinearLayout) sotto il cursore impostando i margini superiore e sinistro e impostandolo come visibile. Se si desidera eseguire una funzione secondaria su un oggetto stazionato nel layout tramite il tasto destro del mouse, ad esempio eliminare o copiare, sarà necessario determinare manualmente l'oggetto su cui sono posizionate le coordinate del mouse memorizzate. Probabilmente dovrai aggiungere MotionEvent.ACTION_HOVER_ENTER listener su ogni oggetto interessato e archiviare l'ID oggetto in una variabile globale da utilizzare quando viene chiamata la funzione onBackPressed(). (Fornirò il codice quando avrò tempo!)

Spero che questo aiuti chiunque a esplorare un argomento così specifico! :)

+0

È inoltre possibile eseguire l'override di 'boolean onKeyDown (int keyCode, final KeyEvent event)' e 'onKeyUp' nella classe di attività e controllare' if (keyCode == KeyEvent.KEYCODE_BACK && event.GetSource() == InputDevice.SOURCE_MOUSE). ..'per filtrare i tasti premuti generati dal mouse USB, ma per elaborare normalmente il tasto Indietro del telefono. – pelya

+0

Questo è un modo molto più specifico di farlo. Grazie per la condivisione! –