Hier ist ein Satz flows, der mir gute Dienste tut, aber in der Form nicht einfach nur eingespielt und gestartet werden kann, da ein paar Anpassungen für die jeweilige Zielumgebung nötig sein werden. Diese Anpassungen werde ich in Folge beschreiben.
Außerdem wurde nicht getestet, ob die flows auf einem nicht-gerooteten Gerät lauffähig sind.
Note to English speaking readers: I deliberately wrote this post in German, because the flows, as published, will only function on a system with Automagic configured with German localisation. This is due to string comparison of trigger names.
Ziel und Zweck der flows ist es, neben einem einfachen Umschalten der Tastatur diese auch abhängig von Ereignissen zu verändern, und diese mittels einer Anzeige im Blick zu haben.
Mindestens drei Eingabemethoden sollten anwesend sein: keine (wenn externe Tastatur verbunden), eine für Terminal/coden geeignete, und eine, benutzt für Korrespondenz. Mehr als drei Tastaturen sind möglich.
Übersicht über die flows in dieser Sammlung:
Detailbeschreibung:
"Add current keyboard to available keyboards"
Ein flow ohne trigger. Könnte ein shortcut sein, manuell aufrufen reicht aber meistens, da nicht häufig benötigt. Er hat lediglich eine administrative Aufgabe, und hilft, die Liste der verfügbaren Tastaturen zu bevölkern.
Dazu fügt er die momentan aktive Tastatur an eine Datei zu. Zweckmäßiges Vorgehen:
- Sicherstellen, daß der vorgebene Dateiname "/storage/emulated/0/keyboards" verwendbar ist. Anpassen falls nicht (Datei wird außerdem noch im flow "Read available keyboards" verwendet)
- Als erste Tastatur eine Inputmethode auswählen, welche nichts ausklappt. Z.B. Null keyboard (play store, gratis), dann diesen flow einmal ausführen.
- Danach die Korrespondenz-Tastatur aktivieren, und den flow erneut abarbeiten. Ich benutze dafür Swype.
- Schließlich die Tastatur für nicht-Korrespondenz wählen, und wieder den flow abarbeiten. Hacker's keyboard ist dafür meine Wahl.
- Weitere Tastaturen sind optional, können aber auch später zugefügt werden.
Die Datei /storage/emulated/0/keyboards sollte jetzt über drei Einträge verfügen, jeder auf einer Zeile. Falls nicht, Datei löschen und Prozess wiederholen, oder Datei (vorsichtig) editieren.
"Read available keyboards"
Dieser flow bewacht Veränderung der Datei /storage/emulated/0/keyboards, und aktualisiert die Variable global_keyboards mit deren Inhalt. Anschauen dieser Variablen ist demnach eine weitere Möglichkeit, das Gelingen der vorigen Schritte zu überprüfen.
Zusätzlich führe ich diesen flow auch noch beim Start von Automagic aus. Dieser Trigger ist im flow nicht eingetragen, da oft ein entsprechender flow bereits besteht, von dem aus dieser flow dann aufgerufen werden kann. Nachrüsten falls nötig. Achtung, Datei /storage/emulated/0/keyboards wird in diesem flow zwei mal referenziert - wichtig falls Pfad geändert wurde.
"Change keyboard"
Zwei Shortcuts als trigger, zum Schalten zur nächsten oder vorigen Tastatur. Außerdem noch der "Assist"-Trigger, mit dem auf die nächste Tastatur gewechselt werden kann.
Die Shortcuts habe ich als "Wischen runter" und "Wischen rauf"-Gesten auf ein Desktop-Objekt gelegt, welches den Namen der aktuell gewählten Tastatur anzeigt. Dazu mehr in der Beschreibung von ""Keyboard change detected"".
"Bluetooth keyboard connected/disconnected
Wählt beim Verbinden der externen Bluetooth-Tastatur die nicht aufklappende Tastatur (Null keyboard) aus, und schaltet zurück zur vorher benutzten Tastatur beim Unterbrechen der Verbindung. Dafür muß die Geräteadresse in den Triggern verändert werden.
Da ich die jeweils vorige Tastatur nicht stacke (also nicht in eine LIFO-Struktur schiebe), sondern nur in einer globalen Variable bewahre, läßt sich dies austricksen mittels Terminal starten, dann Tastatur verbinden, Tastatur unterbrechen, und schließlich Terminal wieder beenden, womit dann auf eine falsche Tastatur zurückgestellt wird. Da das Problem beherrschbar ist, behalte ich mir Veränderungen daran vor bis ich das als störend genug empfinde.
"Terminal start/stop"
Ebenfalls anzupassen:
Trigger: Liste der Anwendungen, wofür auf die nicht-Korrespondenz-Tastatur umgeschaltet werden soll. Außerdem die Condition, worin erneut die Geräteadresse der Bluetooth-Tastatur angegeben ist.
Der flow schaltet auf die nicht-Korrespondenz-Tastatur um, sobald eine der im trigger verzeichneten Anwendungen gestartet wurde, und zurück auf die vorige Tastatur beim Pausieren/Verlassen der Anwendung.
Schaue in einem der trigger, ob Automagic als device administrator zugelassen ist, sonst wird dieser flow nicht getriggert.
"Keyboard change detected"
Bestimmt den Namen der gerade aktivieren Tastatur, und verzeichnet diesen entsprechend Anwenderwahl. Im vorliegenden Fall wird eine Variable vom Lightning Launcher beschrieben, welcher den Namen eines Desktop-objektes darüber vorgibt. Viele Alternativen sind denkbar, so z.B. ein Automagic "Eigenes Widget", oder sonstige widget-Ersteller wie zooper, simpletext etc. Ein mit dem Namen versehbares Desktop-objekt, welches Gesten zum Umschalten der Tastatur erlaubt und Automagic Shortcuts an diese binden läßt, ist alles, was dafür benötigt wird.
Angedachte Verbesserungen:
- Entfernen von doppelten Einträgen in der Liste der Tastaturen
- Beim Lesen der Liste von Tastaturen für jede sicherstellen, daß diese auch eine im System vorhandene und aktive Tastatur ist.
Screenshot: "normaler" Betrieb mit Korrespondenz-Tastatur, Mitte oben der Knopf zum Wechseln, welcher auch die aktuelle Tastatur anzeigt.
Darunter: Kurz nach dem Einschalten der externen Bluetooth-Tastatur, Wechsel der Tastatur wird vom Knopf reflektiert.
Und schließlich noch die flows:
http://automagic4android.com/flow.php?i ... 952d627d71
Mäuseklavierwechsler
Moderator: Martin