From 8d130781f23fa100c8724ce18b429d2ab90b6aae Mon Sep 17 00:00:00 2001 From: Marc Pannenbeckers Date: Thu, 1 Jan 2015 12:15:35 +0100 Subject: [PATCH] autorotate --- autorotate/autorotate.py | 90 ++++++++++++++++++++++++++++ autorotate/changeautorotatestatus.py | 32 ++++++++++ autorotate/status.txt | 1 + 3 files changed, 123 insertions(+) create mode 100755 autorotate/autorotate.py create mode 100644 autorotate/changeautorotatestatus.py create mode 100644 autorotate/status.txt diff --git a/autorotate/autorotate.py b/autorotate/autorotate.py new file mode 100755 index 0000000..425301b --- /dev/null +++ b/autorotate/autorotate.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python2 +import time +import os + +#FUNCTIONS +def readFile(path): #self.filename + myDatei = open(path, "r") + myList = [] + #Liste aus Datei erstellen + for Line in myDatei: + Line = Line.rstrip() + #Line = Line.decode('utf8') + myList.append(Line) + myDatei.close() + return(myList) + +def writeFile(path, myList): #self.filename + myDatei = open(path, "w") + #Liste aus Datei erstelle + myDatei.writelines(myList) + myDatei.close() + +def refreshtouch(): + os.system('xinput disable "NTRG0001:01 1B96:1B05"') + os.system('xinput enable "NTRG0001:01 1B96:1B05"') + +#PARAMETERS +count = 0 +path = os.path.abspath(os.path.dirname(os.path.abspath(__file__))) +print (path) + +devicename = "'NTRG0001:01 1B96:1B05'" +penname = "'NTRG0001:01 1B96:1B05 Pen'" +freq = 10.0 # frequency to read the accelerometer + +# Look for accelerometer +while count <= 9: + if os.path.exists('/sys/bus/iio/devices/iio:device' + str(count) + '/in_accel_scale') == True: + dpath = '/sys/bus/iio/devices/iio:device0/' # directory of accelerometer device (iio) + break + count = count + 1 +#print(dpath) + +#Commands for correct rotation +normal = 'xrandr -o normal; '+'xinput set-prop ' + devicename +" 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1;"+'xinput set-prop ' + penname +" 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1;" +inverted = 'xrandr -o inverted; '+'xinput set-prop ' + devicename +" 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1;"+'xinput set-prop ' + penname +" 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1;" +right = 'xrandr -o left; '+'xinput set-prop ' + devicename +" 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1;"+'xinput set-prop ' + penname +" 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1;" +left = 'xrandr -o right; '+'xinput set-prop ' + devicename +" 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1;"+'xinput set-prop ' + penname +" 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1;" + +current_state = 0 # 0 normal, 1 inverted, 2 right, 3 left +with open(dpath + 'in_accel_scale') as f: + scale = float(f.readline()) +while True: + previous_state = current_state + status = readFile(os.path.join(path, 'status.txt')) + print(status) + if str(status[0]) == "on": + with open(dpath + 'in_accel_x_raw', 'r') as fx: + with open(dpath + 'in_accel_y_raw', 'r') as fy: + with open(dpath + 'in_accel_z_raw', 'r') as fz: + time.sleep(1.0/freq) + thex = float(fx.readline()) + they = float(fy.readline()) + thez = float(fz.readline()) + print("x:" + str(thex)) + print("y:" + str(they)) + print("z:" + str(thez)) + if (thex >= 65000 or thex <=650): + if (they <= 65000 and they >= 64000): + print("normal!") + os.system(normal) + current_state = 0 + if (they >= 650 and they <= 1100): + print("inverted!") + os.system(inverted) + current_state = 1 + if (thex <= 64999 and thex >= 650): + if (thex >= 800 and thex <= 1000): + print ("right!") + os.system(right) + current_state = 2 + if (thex >= 64500 and thex <=64700): + print ("left!") + os.system(left) + current_state = 3 + if str(status[0]) == "off": + time.sleep(1.0) + if current_state != previous_state: + refreshtouch() + print "re" diff --git a/autorotate/changeautorotatestatus.py b/autorotate/changeautorotatestatus.py new file mode 100644 index 0000000..82cab4f --- /dev/null +++ b/autorotate/changeautorotatestatus.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +import os +from gi.repository import Notify + +def readFile(path): #self.filename + myDatei = open(path, "r") + myList = [] + #Liste aus Datei erstellen + for Line in myDatei: + Line = Line.rstrip() + #Line = Line.decode('utf8') + myList.append(Line) + myDatei.close() + return(myList) + +def writeFile(path, myList): #self.filename + myDatei = open(path, "w") + #Liste aus Datei erstelle + myDatei.writelines(myList) + myDatei.close() + +status = readFile('/home/marc/.scripts/status.txt') +if status[0] == "on": + writeFile('/home/marc/.scripts/status.txt', ["off"]) + Notify.init ("Rotation-ON") + RotationOFF=Notify.Notification.new ("Rotation","Screenrotation is now turned OFF","dialog-information") + RotationOFF.show () +if status[0] == "off": + writeFile('/home/marc/.scripts/status.txt', ["on"]) + Notify.init ("Rotation-OFF") + RotationON=Notify.Notification.new ("Rotation","Screenrotation is now turned ON","dialog-information") + RotationON.show () diff --git a/autorotate/status.txt b/autorotate/status.txt new file mode 100644 index 0000000..e8fd903 --- /dev/null +++ b/autorotate/status.txt @@ -0,0 +1 @@ +on \ No newline at end of file