2012-04-06 6 views
6

Ist Rechtsklick auf eine USB-Maus eingesteckt in Android (ics) immer als "Zurück" -Taste bezeichnet? Ich habe eine Tablette, wo es nicht ist.Android USB-Maus Rechtsklick richtiges Verhalten (ICS)

Ich möchte die Statusleiste entfernen und trotzdem das Tablet mit USB-Maus verwenden können.

Weiß jemand, wo/wie das Verhalten in Android zu konfigurieren?

+0

Bitte geben Sie Modell/Marke des Tablets an. –

+0

Dies war eine No-Name-Marke direkt von der Fabrik in China. Scheint, dass sie einen Fehler gemacht haben, und zu der Zeit wusste ich nicht, was das Standardverhalten sein sollte. Da sie es nicht sofort als Fehler anerkannt haben. Danke Turbo. –

Antwort

9

Späte Antwort, aber die Antwort ist ja. Ich werde einige weitere Details zu diesem Thema zur Verfügung stellen, wie es im Internet dieses Typs ist das nur Thema.

Standardverhalten: Android behandelt dies als Zurück-Schaltfläche, ohne sichtbare Ausnahmen.

Dies ist eine ziemlich nette Funktion für Telefone und normale Anwendungen. Zwei Arten von Personen möchten jedoch, dass dieses Feature anders implementiert wird. Modder und App-Entwickler.

Modder Fix: Auf einem verwurzelten Gerät (und möglicherweise unbewurzelten für ganz wenige Underdog Geräte mit entsperrten adb), beobachten Generic.kl unter /system/usr/keylayout. Suchen Sie nach der Flagge KEY_BACK, kann es mehrere Schlüsselcodes auf mehreren Linien geben, die damit verbunden sind. Für mich war es key 158 mit der WAKE_DROPPED Flagge. Für eine allgemeine "Rechtsklick" -Funktion sollten Sie die Nummerncodes für die Zurück-Taste und die Menütaste tauschen. Wenn die Maus also einen Rückschlüsselbefehl sendet, wird das System tatsächlich einen Menütastenbefehl auslösen, während einige beibehalten werden Hardwareschlüssel (beschriftete Menütaste) am Gerät zum Zurückgehen. Ja, dies wird die Hardware-Tasten auf Ihrem Telefon umkehren, aber es ist die einfachste Lösung, ohne das gesamte ROM neu zu erstellen. Wenn dies für eine geschäftliche oder berufliche Angelegenheit ist, sehen Sie sich bitte diesen Artikel an: Overriding Mouse Events Kernel-Level. Ich würde tatsächlich empfehlen, ein Xposed-Modul zu erstellen, das die von ihnen referenzierte Prozedur überschreibt. Ansonsten schauen Sie nach, wie Sie Keycodes neu zuordnen können. Leider konnte ich hier keinen geradlinigen Artikel finden.

App-Entwickler Fix: Nicht-root: Überschreiben Sie zurück Schlüssel in Ihrer Anwendung und True zurück. Führen Sie in Ihrem onBackPressed() Override eine beliebige Rechtsklick-Funktion aus. Einfach! Da Sie höchstwahrscheinlich eine PC-ähnliche Kontextmenüfunktionalität benötigen, müssen Sie auch verfolgen, wo sich die Maus befindet, indem ein MotionEvent-Listener auf die Stammansicht mit einem event.getRawX() und RawY() -Aufruf angewendet wird, der Werte in einem globalen Speicher speichert Variable. Sie können dann Ihr Kontextmenü (Größe ListView oder VerticalLinearLayout) unter dem Cursor platzieren, indem Sie den oberen und linken Rand festlegen und es sichtbar machen. Wenn Sie mit einem Rechtsklick eine sekundäre Funktion auf einem überfahrenen Objekt in Ihrem Layout ausführen möchten, z. B. Löschen oder Kopieren, müssen Sie manuell herausfinden, über welches Objekt die gespeicherten Mauskoordinaten liegen. Sie müssen wahrscheinlich MotionEvent.ACTION_HOVER_ENTER Listener für jedes betroffene Objekt hinzufügen und die Objekt-ID in einer globalen Variablen speichern, die beim Aufruf der onBackPressed() - Funktion verwendet wird. (Ich werde Code zur Verfügung stellen, wenn ich Zeit habe!)

Hoffe das hilft jedem, der solch ein spezifisches Thema erforscht! :)

+0

Sie können 'boolean onKeyDown (int keyCode, final KeyEvent event)' und 'onKeyUp' in Ihrer Aktivitätsklasse außer Kraft setzen und' if (keyCode == KeyEvent.KEYCODE_BACK && event.GetSource() == InputDevice.SOURCE_MOUSE) überprüfen. ..'um die von der USB-Maus erzeugten Tastendrücke zu filtern, aber um Ihr Telefon zu bearbeiten. – pelya

+0

Das ist eine viel spezifischere Vorgehensweise. Danke für das Teilen! –