summaryrefslogtreecommitdiff
path: root/scripts/tablet
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/tablet')
-rwxr-xr-xscripts/tablet61
1 files changed, 61 insertions, 0 deletions
diff --git a/scripts/tablet b/scripts/tablet
new file mode 100755
index 0000000..6702ace
--- /dev/null
+++ b/scripts/tablet
@@ -0,0 +1,61 @@
+#!/usr/bin/python
+import sys
+
+#Arguments
+dev = sys.argv[1]
+prop = sys.argv[2]
+scale = float(sys.argv[3])
+tablet_ratio = (lambda s: float(s[0]) / float(s[1]))(sys.argv[4].split(":")) if len(sys.argv) > 4 else 16/9
+
+#Layout of screens: (x, y, w, h)
+screens = [
+ (0,0, 1080, 1920),
+ (1080, 0, 2560, 1440),
+ (3640, 208, 1280, 1024),
+]
+
+#TODO find this with xrandr
+
+target = screens[1]
+
+#Physical offset of the selected screen
+offsetx = target[0]
+offsety = target[1]
+
+#Size of the full screen areas
+sh = 1920
+sw = 1280 + 2560 + 1080
+#TODO calculate using list of screens
+
+#Aspect ratio of the tablet, to avoid weird scaling problems
+
+#Size of the tablet
+#Prioritize the with when scaling between aspect ratios
+tw = target[2]
+th = tw / tablet_ratio
+print(tw, "x", th)
+
+#make a variable that will try to make the scale the same over diferent resoultions
+f = target[3] / target[3]
+print ("f value =", f)
+
+#calculate the new area size
+aw = tw * scale * f
+ah = th * scale * f
+
+ox = (target[2] - aw) / 2 + offsetx
+oy = (target[3] - ah) / 2 + offsety
+#ox = offsetx
+#oy = offsety
+
+
+c0 = aw / sw
+c2 = ah / sh
+c1 = ox / sw
+c3 = oy / sh
+
+print(str(c0), "0", str(c1), "0", str(c2), str(c3), "0 0 1")
+
+import os
+os.system(" ".join(["xinput set-prop", dev, prop, str(c0), "0", str(c1), "0", str(c2), str(c3), "0 0 1"]))
+#alias tablet2="xinput set-prop 18 156 2.45 0 -0.725 0 2.45 -0.725 0 0 1"