Projektvorstellung - TP Tablet Control

MrGroover

Member
Themenstarter
Registriert
26 Juni 2010
Beiträge
170
TP Tablet Control

Einleitung
Einige von euch Tablet-Besitzern kennen sicherlich das Programm (Tablet Menu) unter Windows, welches startet, wenn man die vorletzte Tablet-Taste (X20xt-Serie) drückt, in dem man dann u.a. Display-Helligkeit oder Lautstärke einstellen kann. Ich hab mich gefragt, ob es sowas auch für Linux gibt, was aber irgendwie nicht der Fall war. So musste ich mir selbst was bauen, und das Ergebnis möchte ich euch vorstellen. Es nennt sich TP Tablet Control (TP sollte klar sein, dass es für ThinkPad steht ;)).

Anhang anzeigen 36735

Das eigentlich ärgerliche ist, dass es sich nicht mit Zenity umsetzen ließ, wodurch ich gezwungen wurde, mir was anderes für die GUI zu suchen. Da ich Fedora-Nutzer bin und da den Standard-Desktop Gnome nutze, fiel die Wahl auf Gtk. Mal sehen, evtl. kommt irgendwann mal noch eine Qt-GUI für die KDE-Nutzer, so dass es bei denen auch einheitlich ausschaut...


Funktionalität
  • (v0.1) Display-Orientierung per Knopfdruck ändern, inkl. Wacom-Digitizer
  • (v0.1) Display-Helligkeit per Schieberegler einstellbar
  • (v0.1) Systemlautstärke per Schieberegler einstellbar (damit ist Musik o.ä. gemeint, nicht Lüfter oder Festplatte ;))
  • (v0.1) Drahtlosverbindungen per Knopfdruck ein-/ausschaltbar. Dies klappt aber nur, wenn sie im BIOS nicht deaktiviert wurden

Was ich bisher nicht vernünftig hin bekommen habe, ist die Lüftersteuerung. Das Problem ist, dass dafür root-Rechte nötig sind. Für ein Konsolenprogramm ist das kein Problem, da funktioniert sudo problemlos, aber Gtk und root-Rechte ist so eine Sache, wahrscheinlich zu recht. gksudo und Co. gibt es für Fedora nicht, womit ich auf der Suche nach anderen Lösungen bin. Ich dachte da an PolicyKit, aber die Doku ist nicht wirklich für Neulinge zugänglich (frei verfügbar ist sie, aber ich werde nicht schlau daraus). Und Tutorials oder How-Tos habe ich auch nicht gefunden.


Installation

Man sollte in der Lage sein, auf seinem System Programme zu kompilieren. Dazu wird ein Kompiler (gcc) und diverse Entwicklungspakete benötigt. Ich denke, die werden bei den meisten Distributionen mit installiert, wenn man den gcc installiert. Zusätzlich wird noch das Entwickler-Paket von Gtk2 benötigt, sowie zur Laufzeit dann natürlich ein funktionierendes Gtk2. Unter Fedora nennt sich das Entwicklerpaket gtk2-devel. Für die volle Funktionalität werden weiterhin folgende Pakete benötigt (Fedora-Namen, was benötigt wird, ist mit angegeben, somit sollten die entsprechenden Pakete bei anderen Distributionen zu finden sein)
  • xorg-x11-server-utils (Kommando xrandr)
  • xorg-x11-drv-wacom package (Kommando xsetwacom)
  • pulseaudio-utils (Kommando pacmd, könnte auch pactl heißen, dann muss aber der Quellcode angepasst werden)
  • rfkill (Kommando rfkill)

Die eigentliche Installation geht dann mit entpacken und folgenden Befehlen von statten:
Code:
./configure
make
su -c 'make install'
Installiert werden die Binärdatei des Programms nach [PREFIX]/bin sowie die Programmoberfläche (glade-Datei) nach [PREFIX]/share/TP_Tablet_Control. Sonst werden keine Dateien im System verteilt. [PREFIX] ist standardmäßig /usr/local, kann aber bei ./configure durch die bekannte Option --prefix geändert werden.

Um TP Tablet Control auf die entsprechende Tablet-Taste zu legen, geht man wie folgt vor:
http://www.thinkwiki.org/wiki/Tablet_Hardware_Buttons
Den Befehl zum setzen der Tastencodes habe ich bei mir in /etc/rc.d/rc.local eingetragen:
Code:
setkeycodes 66 180 67 181 68 182 69 183

Somit werden die Tastencodes bei jedem Systemstart eingestellt und stehen dann zur Verfügung. Wenn dies der Fall ist, kann man unter System->Einstellungen->Tastenkombinationen noch eine Aktion für die Taste anlegen. Dazu einfach auf Hinzufügen klicken, einen Namen vergeben und als Befehl TP_Tablet_Control. Zum Vergeben der Tastenkombination klickt man in der Rechten Spalte noch bei TP_Tablet_Control und drückt die entsprechende Tablet-Taste. Hier lässt sich natürlich auch jede andere Taste/Tastenkombination verwenden. Ab sofort sollte TP Tablet Control starten, wenn man die gewählte Taste/Tastenkombination drückt.

Nicht wundern, wenn gconftool-2 vorhanden ist, dann werden die Panels verändert (auto_hide_size). Im Porträtmodus bin ich nicht in der Lage, den Mauszeiger mit den Stift nah genug an den Rand zu bekommen, um die Panels auszuklappen. Bei mir sind die so eingestellt, dass die automatisch verborgen werden.


Todo
  • Fan Control hinbekommen
  • Qt GUI
  • Installation portabler machen, so dass geprüft wird, welche Kommandos vorhanden sind und Hinweise erscheinen oder die Funktionalität deaktiviert wird
  • Programm Konfigurierbar machen, evtl. auch mit Profilen
  • Icons ersetzen, dass ist aber mehr eine Lizenzfrage

Quellcode
So, und zum Abschluss noch das wichtigste: der Quellcode. Diesen habe ich bei Sourceforge hochgeladen: https://sourceforge.net/projects/tptabletcontrol/.


Disclaimer
Verwendung geschieht auf eigene Gefahr, jeder muss selber wissen, ob er die gebotenen Funktionen benötigt und/oder nutzen möchte. Getestet wurde bei mir mit Fedora 13 und 14, jeweils in der 64-Bit Version. Hardware ist bei mir ein X201-Tablet ohne Multitouch.
 

Anhänge

  • TP_Tablet_Control.png
    TP_Tablet_Control.png
    25,2 KB · Aufrufe: 351
Hi,

Erstmal Danke an MrGroover für das Prog, ich find die Idee echt Klasse. Gerade die Funktionalität mit der Display Helligkeit hab ich sehr vermisst, da das gnome brightness applet (bei mir) nicht funktioniert. Nur das mit der Lautstärke ändern hat bei mir nicht funktioniert, ich hab jetzt nicht so genau geschaut, aber ich glaube es liegt daran, dass ich kein pulse bei mir installiert habe.

Jedenfalls hatte ich keine Lust mir pulse einzurichten (alsa <> pulse <> mpd ... hatte da schonmal stress das einzurichten) und hatte gestern irgendwie Langeweile, oder besser gesagt keine Lust auf andere wichtige Dinge und hab das ganze mal nach python3 + Qt4 umgeschrieben.
Die Oberfläche hab ich halt schnell mitem QtDesigner zusammengeklickt und der restliche Code sind vlt 200Zeilen, also noch recht übersichtlich (aber nicht der schönste z.Z. ^^).

Falls das ding mal jemand testen will oder vlt sogar mal refaktorisieren und verbessern/erweitern möchte, dann kann ich das gerne mal die Tage irgendwo zur Verfügung stellen.

Ist halt sehr an das von MrGroover angelehnt, nur eben mit python3 geschrieben, vlt animiert das ja den ein oder anderen an dem Prog was zu machen. Python ist denk ich für viele doch einfacher als C. Es fehlt glaube nur die Fan Kontrolle (nutz die bei meinem x200t nicht). Die slider für helligkeit, lautstärke hab ich etwas vergrößert, damit man die besser "trifft" :)

Anhang anzeigen 41809

mfG
 

Anhänge

  • Screenshot.png
    Screenshot.png
    28,2 KB · Aufrufe: 62
So, nach langer Zeit mal wieder ein kleines Update. Ich habe bei SourceForge Version 0.2 hoch geladen. Grund dafür war, dass sich die Namen der Wacom-Geräte geändert haben. Ich habe dafür jetzt eine Erkennung eingebaut. Außerdem ist die Lüftersteuerung raus geflogen und die Bezeichner für die Rotationsknöpfe habe ich auch geändert, so wie damals von Mr. Natural vorgeschlagen. Ansonsten ist jetzt nur die GTK v2.24 nötig, sonst hat sich nix verändert. Ach ja, ich habe noch eine Option eingebaut, die den Digitizer beim drehen an LVDS1 bindet
Code:
xsetwacom set NAME_VOM_GERÄT MapToOutput LVDS1
. Ich habe die Hoffnung, dass dann bei Anschluss eines externen Displays der Digitizer nur auf dem Tablet-Panel den Cursor bewegt und nicht über alle Displays. Letzteres ist für mein Empfinden unbrauchbar. Die Option ist aber ungetestet...

Getestet und für voll funktionstüchtig befunden ist es auf meinem Fedora 16 x86_64. Andere Distris habe ich nicht auf meinem TP Tablet drauf. Hardware ist nach wie vor ein X201 Tablet gewesen. Ich denke, so lange es sich um Wacom Digitizer handelt, sollte auch andere Modelle gehen, aber mangels entsprechender Geräte nicht getestet.
 
hi,

das mit der Lüftersteuerung kannst du auf 2 Wege realisieren.

Entweder bekommt die Lüftersteuerungs-Application das Stickybit. So hat es root-Rechte beim ausführen.

Alternativ wäre sudo ne Möglichkeit:

Code:
password=password
echo $password | sudo -S 'befehl'

Das Passwort kannst du via zenity abfragen.

Ein richtiges Password
Code:
echo $?
0

ein falsches Passwort gibt entweder 1 oder 125 aus (habs nur bei su getestet, hab kein Sudo drauf)

Sudo ist vorab eh soweit eingerichtet das afair die Wheel-Gruppe sudo benutzten darf. Ergo muss der User nur in die Gruppe wheel hinzugefügt werden und darf dann via sudo rootrechte mit Password abfrage benutzten.

Grüße
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben