D
darth_mickrig
Dauer-User
- 617
Der Siyah Kernel ab Version 4.1 Beta 5 sowie der Dorimanx Kernel aber Version 5.65 vom 14.8 erlauben es Gesten zu definieren, die eingestellte Aktionen auslöst. Der Original-Thread bei XDA ist zu finden unter
[Ref][Kernel][Siyah]Triggering actions with touch gestures - xda-developers
Um das Feature zu nutzen, muss man die zwei folgenden Dinge tun:
Erstellen einer Geste: Hier wird ein Pfad angegeben, den die Finger abschreiten müssen, um eine Funktion auszulösen.
Angabe einer Funktion: Bei erfolgreicher Erkennung der Geste wird die angegebene Funktion ausglöst wird.
Erstellen von Gesten:
Der sysfs-Eintrag /sys/devices/virtual/misc/touch_gestures/gesture_patterns erlaubt es, auf die definierten Gesten zuzugreifen und die zur Auslösung notwendige Bewegung zu definieren.
Über den Befehl "cat /sys/devices/virtual/misc/touch_gestures/gesture_patterns" kann man auf die bereits erstellten Gesten einzusehen. Auch ein die Struktur einer Geste wird dort angegeben.
Die Koordinaten des Bildschirms:
Der Bildschirm hat, wie bekannt, eine Höhe von 800 Pixel und eine Breite von 480 Pixel. Dementsprechend wird er so eingeteilt:
Jeder Hotspot wird durch zwei X- (X1 X2) und zwei Y-Koordinaten (Y1 Y2) bestimmt. Diese ergeben ein Rechteck, welches einen Bereich angibt, in dem die Finger für eine Geste zum Starten und Beenden bewegt werden müssen.
Es können bis zu 10 Gesten definiert werden, jeder davon mit Benutzung von mindestens einem und bis zu 10 Fingern (in der Praxis ist der Wert 10 eher schwer zu bewerkstelligen). Eine Geste kann durch bis zu 10 Hotspots definiert werden.
Erstellt man die Gesten, so werden die vorherigen überschrieben. Es ist also zwingend ratsam, diese in einem Rutsch zu erstellen. Dazu müssen sie in /sys/devices/virtual/misc/touch_gestures/gesture_patterns eingetragen werden. Die Form soll wie gefolgt sein:
Beispiele:
Hier einige Beispiele zur Definition einer Geste.
1. Mit einem Finger oben und einem Finger unten von links nach rechts wischen.
Das Bewegungsmuster wäre ja folgendes:
Die Definition wäre wie folgt (wir benutzen Geste 1 und zwei Finger):
2. Bewegen von 3 Fingern von oben nach unten:
Die Geste -
Diese wird als 2. Geste definiert, bei der 3 Finger benutzt werden.
3. Mit einem Finger ein Z auf den Bildschirm zeichnen, während ein anderer auf der Mitte, links gehalten wird:
Die Definition:
Die Gesten werden bei jedem Neustart gelöscht, weswegen es ratsam ist, ein init.d Script zu erstellen, welches die Gesten bei jedem Gerätestart neu erstellt. Aus den Beispielen ergibt sich folgendes Script.
Auslösen von Funktionen:
Wie man sich denken kann, reicht das Definieren einer Geste bei weitem noch nicht aus. Man muss zu den Gesten noch passende Aktionen/Funktionen definieren. Um vorhandene Gesten einzusehen und zu ändern, muss man /sys/devices/virtual/misc/touch_gestures/wait_for_gesture abrufen:
Folgend ein Beispiel, das als init.d Script gespeichert werden soll.
Die Beispiele lösen aus:
1. Geste - invertieren oder normalisierender Farben des Displays2. Geste - sofortiges starten der Kamera
3. Geste - Anruf der angegebenen Nummer
Dieses Script wird in einer Schleife gestartet, sodass es auf die Erkennung einer Geste wartet.
Dies hat jedoch keine Auswirkungen auf Deepsleep oder die CPU-Auslastung.
Wenn kein Script ausgeführt wird, kann eine Pufferung der Gesten erfolgen. In diesem Fall sollte man mit "echo reset > ..../wait_for_gesture" den Puffer leeren.
Um eine App zu starten, muss der Befehl "am start" verwendet werden. Es folgt dann der Package name sowie die Activity die man ausführen möchte.
Im allgemeinen
Will man den Browser starten, so hat man folgenden Befehl:
Soll die Anwendung nicht in den kürzlich verwendeten Apps auftauchen so folgt nach "am start" noch --activity-exclude-from-recents .
Das init.d Script mit den Beispielen kann hier xda-developers geladen werden. Dazu:
1. Datei nach /system/etc/init.d/ verschieben
2. Ändern des Benutzers und der Gruppe zu "root"
3. Berechtigung auf 755 setzen
4. Neustarten
Diese Anleitung basiert auf der von tungstwenty geposteten im XDA-Forum.
Dank geht an:
tungstwenty für die Erstellung und Erklärung dieses Features
ghokanmoral für den Siyah-Kernel
An die Community im XDA-Forum für die Ansammlung des Wissens
Der S2-Bereich auf Android-Hilfe, der es mir erlaubt, mein erstes Smartphone zu genießen
Weitere Informationen zur Einrichtung der Touch Gestures hier: https://www.android-hilfe.de/forum/...-1-basierende-kernel.287305.html#post-3878440
@Mods: Bitte diesen Thread in den richtigen Bereich verschieben und eventuell pinnen.
[Ref][Kernel][Siyah]Triggering actions with touch gestures - xda-developers
Um das Feature zu nutzen, muss man die zwei folgenden Dinge tun:
Erstellen einer Geste: Hier wird ein Pfad angegeben, den die Finger abschreiten müssen, um eine Funktion auszulösen.
Angabe einer Funktion: Bei erfolgreicher Erkennung der Geste wird die angegebene Funktion ausglöst wird.
Erstellen von Gesten:
Der sysfs-Eintrag /sys/devices/virtual/misc/touch_gestures/gesture_patterns erlaubt es, auf die definierten Gesten zuzugreifen und die zur Auslösung notwendige Bewegung zu definieren.
Über den Befehl "cat /sys/devices/virtual/misc/touch_gestures/gesture_patterns" kann man auf die bereits erstellten Gesten einzusehen. Auch ein die Struktur einer Geste wird dort angegeben.
Code:
# Touch gestures
#
# Syntax
# <gesture_no>:<finger_no>:(x_min|x_max,y_min|y_max)
# ...
# gesture_no: 1 bis 10 (seit Siyah 4.1 rc1 30 Gesten)
# finger_no : 1 bis 10 (seit Siyah 4.1 rc1 max. 5? Finger)
# Maximale Schritte pro Geste und Finger: 10
# Gesture 1: ...
Der Bildschirm hat, wie bekannt, eine Höhe von 800 Pixel und eine Breite von 480 Pixel. Dementsprechend wird er so eingeteilt:
Code:
+---------------+
|0,0 479,0|
| |
| |
| |
| |
| |
| |
|0,799 479,799|
+---------------+
Es können bis zu 10 Gesten definiert werden, jeder davon mit Benutzung von mindestens einem und bis zu 10 Fingern (in der Praxis ist der Wert 10 eher schwer zu bewerkstelligen). Eine Geste kann durch bis zu 10 Hotspots definiert werden.
Erstellt man die Gesten, so werden die vorherigen überschrieben. Es ist also zwingend ratsam, diese in einem Rutsch zu erstellen. Dazu müssen sie in /sys/devices/virtual/misc/touch_gestures/gesture_patterns eingetragen werden. Die Form soll wie gefolgt sein:
Code:
gesture_no:finger_no:(min_x|max_x,min_y|max_y) gesture_no:finger_no:(min_x|max_x,min_y|max_y)
Auf Wunsch können mehr Hotspots, Gesten und Finger eingetragen werden.
Hier einige Beispiele zur Definition einer Geste.
1. Mit einem Finger oben und einem Finger unten von links nach rechts wischen.
Das Bewegungsmuster wäre ja folgendes:
Code:
+----+-----------+----+
| | | |
| +-|-----------|-> |
| | | |
+----+ +----+
| |
| |
| |
| |
| |
+----+ +----+
| | | |
| +-|-----------|-> |
| | | |
+----+-----------+----+
Code:
1:1:(0|150,0|150)
1:1:(330|480,0|150)
1:2:(0|150,650|800)
1:2:(330|480,650|800)
Die Geste -
Code:
+---------------------+
| |
| + + + |
| | | | |
+---------------------+
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
+---------------------+
| | | | |
| v v v |
| |
+---------------------+
Code:
2:1:(0|480,0|200)2:1:(0|480,600|800)
2:2:(0|480,0|200)2:2:(0|480,600|800)
2:3:(0|480,0|200)2:3:(0|480,600|800)
Code:
+----+-----------+----+
| | | |
| +--|-----------|-> |
+----+ +----+
| +--+ |
+----+ | |
| | +--+ |
| + | | |
| | +--+ |
+----+ | |
| +--+ |
+----+-+ +----+
| <-| | |
| +-|-----------|-> |
+----+-----------+----+
Code:
3:1:(0|150,0|150)
3:1:(330|480,0|150)
3:1:(0|150,650|800)
3:1:(330|480,650|800)
3:2:(0|150,300|500)
Code:
echo "
[COLOR=SeaGreen]# Gesture 1 - swipe 1 finger near the top and one near the bottom from left to right
1:1:(0|150,0|150)
1:1:(330|480,0|150)
1:2:(0|150,650|800)
1:2:(330|480,650|800)
# Gesture 2 - swipe 3 fingers from near the top to near the bottom
2:1:(0|480,0|200)2:1:(0|480,600|800)
2:2:(0|480,0|200)2:2:(0|480,600|800)
2:3:(0|480,0|200)2:3:(0|480,600|800)
# Gesture 3 - draw a Z with one finger while another is pressed on the middle left
3:1:(0|150,0|150)
3:1:(330|480,0|150)
3:1:(0|150,650|800)
3:1:(330|480,650|800)
3:2:(0|150,300|500)
[/COLOR]" > [COLOR=Blue]/sys/devices/virtual/misc/touch_gestures/gesture_patterns
[/COLOR]
Wie man sich denken kann, reicht das Definieren einer Geste bei weitem noch nicht aus. Man muss zu den Gesten noch passende Aktionen/Funktionen definieren. Um vorhandene Gesten einzusehen und zu ändern, muss man /sys/devices/virtual/misc/touch_gestures/wait_for_gesture abrufen:
Folgend ein Beispiel, das als init.d Script gespeichert werden soll.
Code:
(while [ 1 ];
do
GESTURE=`cat /sys/devices/virtual/misc/touch_gestures/wait_for_gesture`
if [ "$GESTURE" -eq "1" ]; then
mdnie_status=`cat /sys/class/mdnie/mdnie/negative`
if [ "$mdnie_status" -eq "0" ]; then
echo 1 > /sys/class/mdnie/mdnie/negative
else
echo 0 > /sys/class/mdnie/mdnie/negative
fi
elif [ "$GESTURE" -eq "2" ]; then
# Starten der Kamera-App
am start --activity-exclude-from-recents com.sec.android.app.camera
elif [ "$GESTURE" -eq "3" ]; then
# Editieren und entkommentieren der nächsten Zeile um einen Anruf zu einer eingetragenen Rufnummer zu starten.
# Warnung / Bonus: Die Sicherung des Lockscreens durch Pin, Muster oder ähnlich wird ignoriert
# Deswegen darauf achten, dass man den Anruf beenden kann,
# denn sonst muss vorher der Bildschirm entsperrt werden.
### EDIT ### service call phone 2 s16 "133"
elif [ "$GESTURE" -eq "0" ]; then
sleep 2
fi
done &);
1. Geste - invertieren oder normalisierender Farben des Displays2. Geste - sofortiges starten der Kamera
3. Geste - Anruf der angegebenen Nummer
Dieses Script wird in einer Schleife gestartet, sodass es auf die Erkennung einer Geste wartet.
Dies hat jedoch keine Auswirkungen auf Deepsleep oder die CPU-Auslastung.
Wenn kein Script ausgeführt wird, kann eine Pufferung der Gesten erfolgen. In diesem Fall sollte man mit "echo reset > ..../wait_for_gesture" den Puffer leeren.
Um eine App zu starten, muss der Befehl "am start" verwendet werden. Es folgt dann der Package name sowie die Activity die man ausführen möchte.
Im allgemeinen
Code:
am start [COLOR=Red]'Package Name'[/COLOR]/[COLOR=Blue].Activity[/COLOR]
Code:
am start [COLOR=Red]com.android.browser[/COLOR]/[COLOR=Blue].BrowserActivity[/COLOR]
Das init.d Script mit den Beispielen kann hier xda-developers geladen werden. Dazu:
1. Datei nach /system/etc/init.d/ verschieben
2. Ändern des Benutzers und der Gruppe zu "root"
3. Berechtigung auf 755 setzen
4. Neustarten
Diese Anleitung basiert auf der von tungstwenty geposteten im XDA-Forum.
Dank geht an:
tungstwenty für die Erstellung und Erklärung dieses Features
ghokanmoral für den Siyah-Kernel
An die Community im XDA-Forum für die Ansammlung des Wissens
Der S2-Bereich auf Android-Hilfe, der es mir erlaubt, mein erstes Smartphone zu genießen
Weitere Informationen zur Einrichtung der Touch Gestures hier: https://www.android-hilfe.de/forum/...-1-basierende-kernel.287305.html#post-3878440
@Mods: Bitte diesen Thread in den richtigen Bereich verschieben und eventuell pinnen.
Zuletzt bearbeitet: