sabato 19 giugno 2010

Come ruotare lo schermo del server X adattando il touchscreen: a script in python

Ok, stabilito che con Fedora 13 il touchscreen dell'Eee funziona alla grande, mi sono posto il seguente obiettivo: scrivere uno script che ruotasse di 90 gradi lo schermo (e viceversa) aggiornando contemporaneamente la calibrazione del touchscreen.

Chiaramente non ho avuto dubbi sul linguaggio da utilizzare, visto che ci fo tutto... il python!

Lo script che vedete qui di seguito non è proprio kosher, visto che lo utilizzo per lanciare comandi bash, ma... l'importante è che funzioni! Altra cosa che serve oltre che python è xrandr per ruotare e controllare se lo schermo sia ruotato, e xinput per il settaggio dei parametri del touchscreen, mentre non fa male avere lo xinput_calibrator per ricavare in maniera semplice i parametri da passare a xinput, in particolare sulla inversione degli assi.

Lo script di per se è banale, una sorta di "se lo schermo è ruotato, lo raddrizzo e regolo conseguentemente il touchscreen; se è dritto, lo ruoto e regolo il touchscreen di conseguenza"!

#!/usr/bin/env python
# -*- coding: utf-8 -*-import os, sys

monitor = "LVDS1"
coord   = [1931, 72, 290, 1875] #[260, 1861, 49, 1925]

command="xrandr --current|grep "+monitor
c_return=os.popen(command)

if "left (" in  c_return.readline():
    #rimetto lo schermo in posizione normale
command = "xrandr -o normal"
os.popen(command)
command = 'xinput set-int-prop "eGalax Inc. USB TouchController" "Evdev Axes Swap" 8 1 && '+\
    'xinput set-int-prop "eGalax Inc. USB TouchController" "Evdev Axis Calibration" 32 ' + ' '.join(str(n) for n in coord)
os.popen(command)
else:
    #giro lo schermo
command = "xrandr -o left"
os.popen(command)
command = 'xinput set-int-prop "eGalax Inc. USB TouchController" "Evdev Axes Swap" 8 0 && '+\
'xinput set-int-prop "eGalax Inc. USB TouchController" "Evdev Axis Calibration" 32 ' + ' '.join(str(coord[i]) for i in [3,2,0,1]) #2,3,1,0])  os.popen(command)

Nessun commento:

Posta un commento