 |
www.G15-Applets.de Das Logitech G15 Applet Forum
|
|
HOWTO: LOGITECH G15 UNTER LINUX v2 (UPDATE!)
Gehe zu Seite 1, 2, 3, 4, 5 Weiter
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Tags:
3a
applet
applets
configure
driver
error
fedora
found
g15
g15composer
g15daemon
gefunden
howto
linux
logitech
treiber
ubuntu
0
uinput
unter
|
| Autor |
Nachricht |
-=Freaky=-
Anmeldungsdatum: 17.02.2007 Beiträge: 1206
Punkte: 282
|
Verfasst am: So 24.Jun.2007 08:08 Titel: HOWTO: LOGITECH G15 UNTER LINUX v2 (UPDATE!) |
|
|
HOWTO: G15 UNTER LINUX --- g15daemon; g15composer
--------------------------------------------------------------------------------------------------------------
Moin, hier ist also endlich mal die 2. Version dieses uralten Howtos, z.T. erstellt und optisch aufgewertet mit dem wunderbaren BBEditor (ein tolles Programm das auch bald online released werden wird ).
Es wird hoffentlich dem einen oder anderen dabei helfen, die G15-Tools zu installieren und ihre Funktionsweise einigermassen zu verstehen, sodass am ende etliche derbste h4x0rs allerfetteste G15-Scripts hier releasen werden.
Das ganze Howto ist absolut distributionsunabhaengig (funktioniert mit Gentoo genauso wie mit Fedora, Suse, Ubuntu, Slackware, etc. pp. ...).
Eventuell distributionsspezifische Abschnitte sind entsprechend gekennzeichnet und fuer den Hauptteil des Howtos nicht von besonderer Bedeutung.
Inhalt:
1. Diverse Distributionen und Paketverwaltungen (teils Linkliste, teils Kurzbeschreibungen)
2. Manuelles Laden, Kompilieren, Installieren der G15-Tools
. a) Vorbereitung
. b) Laden/Entpacken der entspr. Software
. c) Kompilieren + Installieren
- libg15
- g15daemon
- libg15render
- g15composer
3. Funktionstest + Anwendungsbeispiele
4. Linkliste
Einige letzte Hinweise:
Zeilen in code-tags, z.B.
| Code: | | $ cd ~/videos/pornos |
sind auf dem Terminal (Konsole) auszufuehrende Befehle bzw. Programmaufrufe.
Ein Dollarzeichen vor einer Zeile
| Code: | | $ ./executeKillerScript |
impliziert, dass das ganze als User (d.h. mit "normalen" User-Rechten) ausgefuehrt werden soll (im Gegensatz zum root!).
Das Dollarzeichen wird dabei nicht mitgetippt (wenn ihr ein Terminal aufmacht, sollte da, sofern die Distributionsherren nicht einiges vergewaltigt haben, dort als User auch ein Dollarzeichen am Anfang jeder zeile stehen).
Analog gilt fuer eine Raute an Anfang einer Zeile
| Code: | | # ./executeStuffVeryCarefully |
dass die Zeile als root ausgefuehrt werden soll, d.h., es wird sich entweder als root auf dem Terminal angemeldet
| Code: | $ su
$ <root-Passwort blind eingeben>
# ./executeStuffVeryCarefully
# exit |
und das ganze wird bitte sofort mit einem exit abgeschlossen, damit ihr wieder mit User-Rechten unterwegs seid.
Das ist nur zu eurem eigenen Vorteil, da
1. ihr mit root-Rechten Vollzugriff auf Daten habt, die ihr sowieso meistens nicht anfassen solltet, und damit auch eine ganze Menge Kram kaputtmachen koennt,
2. ihr, falls auf irgendweinem Weg (und da gibt es auch unter Linux einige!) Schadsoftware ausgefuehrt wird, waehrend ihr als root angemeldet seid, diese Schadsoftware auch alle root-Rechte, d.h. hoechstwahrscheinlich Vollzugriff auf praktisch _alles_ an eurem System hat. Dagegen, falls ihr "nur" unter eurem User-Account angemeldet seid, kann diese Schadsoftware eure Userdaten verunstalten, was eventuell sehr unschoen ist, allerdings das System nicht gefaehrdet, und irgendwelche temporaeren Daten loeschen, was relativ Wurst ist ...
Eine alternative Methode, die unter einigen Distributionen (bspw. Ubuntu) Standard ist, ist, sudo zu benutzen.
Anstatt euch als root anzumelden, koennt ihr so als User gezielt Prozesse als root starten, sofern eurem User das erlaubt ist:
| Code: | $ sudo ./executeStuffVeryCarefully
$ <ggf. blind euer User-Passwort eingeben> |
hiernach ist ein exit natuerlich nicht noetig, weil ihr euch nicht komplett unter dem root-Account angemeldet habt.
Abschnitte, die mit '//' beginnen, sind Kommentare zu dem vorhergegangenen Befehl und lediglich zum besseren Verstaendnis da, werden also nicht mit im Terminal eingegeben. Alles vom doppelten Slash bis zum Zeilenende zaehlt zum Kommentar.
| Code: | | $ cd ~/videos/pornos // die wichtigen Dinge des Lebens warten ... |
Diese Zeile enthaelt einen Kommentar, entsprechend wird also nur
| Code: | | $ cd ~/videos/pornos |
auf dem Terminal ausgefuehrt, der Rest ist nur fuer den Leser da.
Dann wollen wir mal ...
1. Diverse Distributionen und Paketverwaltungen:
Gentoo:
Unter Gentoo kann man die einzelnen Komponenten G15-Tools relativ einfach aus dem Portage-Tree holen:
| Code: | | # emerge -avt libg15 g15daemon libg15render g15composer |
Anschliessend koennte man nach wunsch g15daemon und/oder g15composer noch beim Systemstart automatisch per runlevel starten lassen:
| Code: | # rc-update add g15daemon default
# rc-update add g15composer default |
Die entsprechenden runscripts werden mit den ebuilds via emerge automatisch installiert, darum muss man sich als User keine Gedanken machen.
Danach kann man sich bei Bedarf Abschnitt 3 (Funktionstest + Anwendungsbeispiele) dieses Howtos ansehen.
Ubuntu:
Ubuntu-User koennen meines Wissens mittlerweile schon via apt-get und/oder aptitude die entsprechenden packages installieren, ansonsten gibts HIER eine ordentliche Anleitung von wuuza.
Es werden evtl. mehr Distributionsspezifische Anleitungen
2. Manuelles Laden, Kompilieren, Installieren der G15-Tools
a) Vorbereitung
Damit die G15-Tools vernuenftig laufen, muss das System einige Anforderungen erfuellen, die man vr
Hierzu werde ich keine detailierten Beschreibungen geben, da dies den Rahmen dieses Howtos sprengen wuerde.
Libraries:
Zuerst installien wir libdaemon.
Sie wird sehr wahrscheinlich in den Repos der Paketverwaltung eurer Distribution zu finden sein, meist unter "libdaemon-dev" oder einfach "libdaemon".
Falls sie auf diesem Wege nicht zu bekommen sein sollte oder ihr eine Distribution ohne Paketverwaltung bzw. gar keine Distribution nutzt, koennt ihr sie auf http://0pointer.de/lennart/projects/libdaemon herunterladen. Auf der Seite gibt es ausserdem weitere Hilfe zur Installation von libdaemon.
Ausserdem benoetigen wir fuer libg15 libusb.
Auch diese ist wahrscheinlich in den Repos der Paketverwaltung eurer Distribution, ansonsten aber auch auf DIESER WEBSITE zu finden.
Kernel-Zeugs:
Als Naechstes brauchen wir einen Kernel mit uinput-Support (User Level Driver Input).
Falls euer Kernel auf eurem System aus den Kernelsourcen kompiliert wurde, koennt ihr mit
| Code: | | # grep UINPUT /usr/src/linux/.config |
checken, ob uinput-Support aktiviert ist.
Wird ausgegeben
CONFIG_INPUT_UINPUT=y,
bedeutet das, dass er aktiviert ist,
CONFIG_INPUT_UINPUT=n
bedeutet das Gegenteil.
Solltet ihr hierbei keine Ausgabe wie diese beiden bekommen (probieren sollte man es), und trotzdem checken wollen, ob uinput-Support in eurem Kernel aktiviert ist, koennt ihr einmal versuchen, das uinput-Kernelmodul zu laden.
Sollte das funktionieren (normalerweise gar keine Ausgabe beim modprobe-Aufruf, auf jeden Fall aber keine Fehlermeldung, dass das Modul nicht existiert), ist der uinput-support per externem Kernelmodul vorhanden. Ihr muesst nun entweder nach jedem Systemstart haendisch dieses Modul laden oder das von einem Startscript eurer Distribution erledigen lassen (siehe hierzu die Distributionsdokumentation und/oder GOOGLE).
Gibt es hierbei eine Meldung, dass das Modul nicht existiert, ist entweder der uinput-Support in eurem kernel nicht aktiviert, oder aber das Modul ist direkt im Kernel "eingebaut".
In diesem Fall muesst ihr einfach weitermachen und abwarten, ob beim
in Schritt 2 c) eine entsprechende Fehlermeldung ausgegeben wird.
Um einen Kernel mit uinput-Support zu bekommen, ladet euch die Kernelsourcen per Paketverwaltung eurer Distribution oder die offiziellen von www.kernel.org (die jeweiligen Distributionskernel sind meist modifiziert), am besten dieselbe Version wie euer gerade laufender Kernel, die ihr mit
bekommt.
Anschliessend konfiguriert und kompiliert den Kernel und kopiert ihn nach /boot (ggf. Eintraege im Bootmanager anpassen).
uinput-Support ist beim Konfigurieren des Kernels zu finden unter
| Code: | Device Drivers
---> Input device support
---> Miscellaneous devices
---> <*> User level driver support |
Hierbei ist wichtig, dass bei der Auswahl des "User level driver support" ein Sternchen in den eckigen Klammern steht, was bedeutet, dass der Kernel mit direktem, internen uinput-Support kompiliert werden soll.
Steht dort ein M, also
| Code: | | <M> User level driver support | bedeutet das, dass der Kernel ohne direkten uinput-Support kompiliert werden soll, aber ein externes, separat ladbares Kernelmodul zum "Nachruesten" dieser Funktionalitaet erstellt wird. Zum Umgang hiermit habe ich weiter oben schon etwas geschrieben.
Zum bauen eines eigenen Kernels sollte man aber unbedingt noch weitere, ausfuehrlichere Quellen hinzuziehen, weil ich hier eben nur auf die fuer das Howto wichtigen Punkte kurz zu sprechen gekommen bin.
Ihr muesst, wenn ein neuer Kernel installiert wurde, u.a. alle Kernelmodule neu kompilieren und ggf. auch noch andere Software nochmal bauen.
b) Laden/Entpacken der entspr. Software
Ladet euch die jeweils aktuellste Version der folgenden Pakete und zwar immer die source-Packages (am besten *.tar.bz2, sonst *.tar.gz) und speichert sie am besten in einem neuen Unterverzeichnis eures home-Verzeichnisses.
libg15 von HIER
g15daemon von HIER
libg15render von HIER
g15composer von HIER
Jetzt oeffnet ein Terminal (oder benutzt ein bereits offenes) und wechselt in das Verzeichnis, in dem ihr die Pakete gespeichert habt.
| Code: | | $ cd ~/pfad/zu/den/Paketen |
Anschliessend werden alle Pakete mit dem Programm tar entpackt.
kurze Erklaerung der Parameter (xjvf):
x -> eXtract, wir wollen entpacken.
j -> bzip2 Archive, wir wollen ein BZip2-komprimiertes Archiv (Standard-Endung *.tar.bz2) entpacken.
v -> Verbose, bewirkt eine besonders detailierte Ausgabe. Optional, aber zu empfehlen, da meist aufschlussreich bei Fehlern.
f -> File, indikiert, dass als naechster Parameter die zu bearbeitende (hier zu entpackende) Datei angegeben wird, muss deshalb an letzter Stelle vor dem Dateiname (bzw. ggf. Dateipfad) stehen.
| Code: | $ tar xjvf libg15-*.tar.bz2
$ tar xjvf g15daemon-*.tar.bz2
$ tar xjvf libg15render-*.tar.bz2
$ tar xjvf g15composer-*.tar.bz2 |
Anmerkung:
Fuer .tar.gz-Pakete wird das j durch ein z ersetzt.
c) Kompilieren + Installieren
Wir werden nun die eben entpackten Sourcecode-Pakete kompilieren (d.h. den Sourcecode in ausfuehrbaren Maschinencode uebersetzen, aber das solltet ihr als Linux-User ja wissen) und installieren (d.h. die kompilierten Bibliotheken und ausfuehrbaren Dateien in die richtigen Systempfade kopieren, aber auch das solltet ihr als Linux-User wissen).
Hierbei ist das Vorgehen immer nahezu dasselbe:
Zuerst wechseln wir in das gerade entpackte Verzeichnis des zu kompilierenden/installierenden Paketes.
Danach erstellen und konfigurieren wir, falls erforderlich, nach einem automatischen Check des Vorhandenseins einiger Abhaengigkeiten, das Makefile (dieses enthaelt fuer den Compiler wichtige Angaben zur Kompilierung).
Anschliessend wird der Sourcecode kompiliert.
Als letztes werden die kompilierten Dateien installiert.
Ausserdem koennen nach diesem Prozedere optional alle beim Konfigurieren und Kompilieren enstandenen, zusaetzlichen Daten wieder geloescht werden.
Bei auftretenden Fehlern (meist gekennzeichnet durch ERROR ... wer haette das gedacht) bitte erst genau die Fehlermeldung lesen, GOOGLE befragen und Forensuchen (z.B. www.linux-web.de) nutzen und erst dann, wenn ihr zu keiner Loesung gekommen seid, hier nachfragen.
All dies passiert im immernoch geoeffneten Terminal. Falls ihr einen Terminal-Emulator benutzt und ihn schon geschlossen habt, oeffnet ihn noch einmal und wechselt, wie oben beschrieben, wieder in das Verzeichnis mit den heruntergeladenen Paketen und entpackten Verzeichnissen.
libg15 ist eine Bibliothek, die fuer die Kommunikation mit der G15 zustaendig ist.
Sie wird bei uns erstmal vom g15daemon benutzt, aber prinzipiell koennte jeder sie in eigenen Programmen nutzen und irgendwelche unglaublich freshen Dinge mit dem Display seiner G15 anstellen.
| Code: | $ cd libg15* // wechseln in das richtige Verzeichnis
$ ./configure --prefix=/usr // Check der Abhaengigkeiten & Erstellen + Konfigurieren des Makefiles prefix /usr ist noetig, um das ganze spaeter nach /usr/lib zu installieren
$ make // Kompilieren des Sourcecodes |
Sollte bis hierhin kein Fehler aufgetreten sein, koennen wir nun die Bibliothek installieren. Da hierbei das kompilierte Binaerfile (Executable) in ein Systemverzeichnis kopiert wird, auf die der gemeine User (gluecklicher Weise) keinen Zugriff hat, muessen wir das als root tun (!!) (Infos dazu: siehe Anfang dieses Howtos).
Wenn ihr alle beim Konfigurieren und Kompilieren erstellten Dateien wieder loeschen wollt, z.B. um aufzuraeumen fuer den naechsten Versuch (noetig, wenn bereits einmal erfolgreich konfiguriert wurde), macht ihr das jetzt so:
| Code: | # make clean // kompilierte Binaerdateien loeschen
# make distclean // diverse andere, beim Konfigurieren erstellte Dateien loeschen |
Anmerkung: Allerdings wird damit auch das Makefile geloescht und eine automatische Deinstallation irgendwann spaeter einmal erstmal unmoeglich gemacht (man muesste den Kram neu konfigurieren, installieren, deinstallieren).
g15daemon ist, wie der Name schon sagt, ein Daemon, d.h. er laeuft dauerhaft im Hintergrund. Er kann Befehle (nette Bitten) von Programmen entgegennehmen und daraufhin gewuenschte Pixelkonstellationen auf dem Display darstellen.
| Code: | $ cd .. // aus dem letzten Verzeichnis von libg15 wieder eins zurueck gehen
$ cd g15daemon* // Wechseln in das Verzeichnis mit den g15daemon-Sourcen
$ ./configure --prefix=/usr // Abhaengigkeiten checken & Makefile erstellen + konfigurieren
$ make // Kompilieren |
Und wieder: ist bis hierhin noch kein Fehler aufgetreten, so koennen wir nun (als root) Installieren.
Nochmal: Wenn ihr alle beim Konfigurieren und Kompilieren erstellten Dateien wieder loeschen wollt, z.B. um aufzuraeumen fuer den naechsten Versuch (noetig, wenn bereits einmal erfolgreich konfiguriert wurde), macht ihr das jetzt so:
| Code: | # make clean // kompilierte Binaerdateien loeschen
# make distclean // diverse andere, beim Konfigurieren erstellte Dateien loeschen |
Kleiner Test:
Sollte alles glattgelaufen sein, sollte man jetzt als root g15daemon ausfuehren koennen.
Es gibt keine Ausgabe, auch keine Fehlermeldung. Wird nun eine Uhr auf dem Display eurer G15 angezeigt, ist der erste Teil schonmal geglueckt und ihr koennt mit
den g15daemon wieder beenden und zurueck zum User-Account.
Falls es eine Meldung gibt, dass g15daemon nicht gefunden wurde, habt ihr entweder make install nicht oder nicht als root ausgefuehrt, oder in der PATH-Variable eures root ist /usr/sbin nicht vorhanden (sehr, sehr unwahrscheinlich!). Um dies auszuschliessen, gebt ihr zum Starten den absoluten Pfad an:
| Code: | | # /usr/sbin/g15daemon | Funktioniert das hier unerwarteter Weise, macht euch Schlau, wie ihr die PATH-Variable entsprechend ergaenzt.
Sollte das auch nicht funktionieren, ist im oberen Teil irgendetwas schiefgelaufen. Fangt nochmal an und achtet genau auf jede Fehlermeldung. Erst wenn alle beseitigt sind, kann es funktionieren.
libg15render ist eine Bibliothek, die vom g15composer benutzt wird und Funktionen zum Zeichnen einfacher geometrischer Formen auf dem Display der G15 (mithilfe des g15daemon) enthaelt.
| Code: | $ cd .. // ein Verzeichnis zurueck
$ cd libg15render* // Wechseln ins LibG15Render-Verzeichnis |
Hier besonders auf das prefix /usr achten, in den oberen Faellen ist es wahrscheinlich auf den meisten Systemen nicht noetig, schadet aber sicher nicht.
In diesem Fall ist es so (zumindest als ich es das letzte mal getestet habe), dass die lib standardmaessig nach /usr/local/lib installiert wird, allerdings der g15composer ausschliesslich in /usr/lib danach sucht -> baem, fail!.
Daher prefix /usr, damit die lib auch nach /usr/lib kommt und alles ist gut.
| Code: | | $ ./configure --enable-ttf --prefix=/usr // Check der Abhaengigkeiten & Konfigurieren + Erstellen des Makefiles; beachte: --prefix=/usr (!) und --enable-ttf fuer TrueTypeFont-Support (!) |
Weiter wie immer:
| Code: | | $ make // Kompilieren |
Wie immer, wenn bis hier keine Fehler aufgetaucht sind, koennen wir die Bibliothek installieren:
Zum 3. Mal: Wenn ihr alle beim Konfigurieren und Kompilieren erstellten Dateien wieder loeschen wollt, z.B. um aufzuraeumen fuer den naechsten Versuch (noetig, wenn bereits einmal erfolgreich konfiguriert wurde), macht ihr das jetzt so:
| Code: | # make clean // kompilierte Binaerdateien loeschen
# make distclean // diverse andere, beim Konfigurieren erstellte Dateien loeschen |
g15composer ist ein Programm, das das Ausgeben von Texten und Formen auf dem Display via einfachem FIFO-Puffer ermoeglicht.
Was genau das heisst, dazu werde ich spaeter noch kommen, nur fuer die Interessierten (alle anderen sind Weicheier und keine derben Styler! ).
| Code: | $ cd .. // ein Verzeichnis zurueck
$ cd g15composer* // ein Verzeichnis zurueck
$ ./configure --enable-ttf --prefix=/usr // checken der Abhaengigkeiten & Konfigurieren des Makefiles; beachte: --enable-ttf fuer TrueTypeFont-Support (!)
$ make // Kompilieren |
Ihr koennt es euch denken: Falls bis hier keine Fehler aufgetaucht sind, koennen wir das Programm installieren:
Und natuerlich: Wenn ihr alle beim Konfigurieren und Kompilieren erstellten Dateien wieder loeschen wollt, z.B. um aufzuraeumen fuer den naechsten Versuch (noetig, wenn bereits einmal erfolgreich konfiguriert wurde), macht ihr das jetzt so:
Ja, wie macht ihr das jetzt? Ich werde es dieses Mal nicht vorsagen, weil ich einen gewissen Lernfaktor in meinem Howto gerne erhalten wuerde. Danke fuer euer Verstaendnis!
Weiter im Programm ...
3. Funktionstest + Anwendungsbeispiele
So, nun haben wir alles an benoetigter Software installiert.
g15daemon sollte schon funktionieren, und der Rest kommt jetzt.
Zuerst starten wir g15daemon (Daemons werden meistens als root gestartet, das muss hier auch sein).
Jetzt sollte wieder die Uhrzeit auf dem Display eurer G15 angezeigt werden.
Als naechstes kommt der g15composer, mit dem jeder ohne grossen Aufwand Ouput auf dem Display der G15 erzeugen kann.
Wie ich schon erwaehnte, arbeitet der g^5xomposer mit einem FIFO-Buffer, was fuer First-In-First-Out-Buffer ("erster rein, erster raus") steht.
Beim Start wird dem g15composer eine Datei, die als Buffer dienen soll, uebergeben. Diese wird jedes Mal wieder neu erstellt, oder, falls sie schon existiert, mit nichts (leer/0/NULL) ueberschrieben.
Da der g15composer als User (nicht als root) gestartet werden sollte, muss der User Schreibrechte fuer diese Datei besitzen, weshalb eigentlich auf einem vernuenftigen System nur das eigene home-Verzeichnis und /tmp in Frage kommen.
Da der Inhalt dieser Datei per Script/Programm geschrieben und sie bei jedem Start des g15composer geleert wird und ich nebenbei auch mein home-Verzeichnis gerne sauber halte, bevorzuge ich hierbei /tmp.
Wenn nun dem g15composer diese Datei als erster Parameter beim Start uebergeben wird, "lauscht" er auf dieser Datei.
Es wird ein Befehl (eine Zeile) in die Datei geschrieben, der g15composer registriert dies und holt sich diesen neuen Inhalt (diese Zeile ist nun aus der Datei verschwunden).
Ist dieser Inhalt ein String in einem fuer den g15composer verstaendlichen Format, fuehrt der die ihm uebergebenen Anweisungen aus. Falls er den Inhalt nicht interpretieren kann, gibt er eine Fehlermeldung (auf stdout, also dem Terminal) aus; es erfolgt keine Ausgabe auf dem Display der G15.
Dieses System sollte schon klarmachen, was der FIFO-Puffer da zu tun hat: Angenommen, man schreibt 20 Zeilen in den Puffer, so nimmt der g15composer sich immer sofort die 1. Zeile wieder raus, interpretiert sie und zeichnet ggf. etwas auf dem Display. Dann zur naechsten Zeile aus dem Puffer, usw. usf.
Stimmt das Format einer Zeile nicht, wird sie ignoriert und eine Meldung auf dem Terminal ausgegeben.
So kann man nacheinander, von oben nach unten, die gewuenschten Ausgaben in den Puffer schreiben und sie kommen in der richtigen Reihenfolge beim Display an.
Waere das nicht so, z.B. indem der g15composer einen FILO-Puffer (First-In-Last-Out-Puffer; "erster rein, letzter raus") benutzen wuerde, muesste man alles in umgekehrter Reihenfolge schreiben. Nichts fuer Herrn Otto Normaldenker.
Gut genug davon, das wollte ich nur einmal kurz erklaert haben, um das System, das dahintersteckt, ansatzweise verstaendlich zu machen.
Nun zum spannenden Teil: Ausgaben auf dem Display
Wir starten den g15composer, der g15daemon sollte schon laufen. Hierbei geben wir, wie eben besprochen, dem Programm den Pfad zu einem FIFO-Puffer in /tmp mit.
| Code: | | $ g15composer /tmp/g15fifo // Starten des G15Composer, Puffer: /tmp/g15fifo |
Nun sollte auf dem Display der G15 der Text "G15Composer" stehen. Es gibt im Normalfall keine Ausgabe auf dem Terminal.
Ist dies nicht der Fall, muss vorher etwas falschgelaufen sein. In diesem Fall wird man nochmal weiter oben ansetzen muessen. Zeigt der g15daemon schon die Zeit an, kann man bei libg15render anfangen, ansonsten bei Schritt 2.
Steht "G15Composer" auf dem Display eurer G15, ist das ein gutes Zeichen.
Zum Test wechseln wir auf ein zweites Terminal (oder oeffnen ein neues Terminalemulator-Fenster) und geben ein
| Code: | | $ echo TL \"Hello World\" \"I am fuckin genious\" > /tmp/g15fifo |
Ihr solltet jetzt eine nette Nachricht auf eurem G15-Display sehen.
Also was haben wir gemacht:
Wie ihr sicher wisst, macht man mit dem Befehl echo einfache Ausgaben, eigentlich auf der Konsole.
Diese Ausgabe leiten wir jetzt um, sodass sie in unserem Buffer ankommt, dafuer ist das ">" zustaendig. Links wird gelesen von stdout, der Standardausgabe, und das Gelesene wird in die rechts angegebene Datei geschrieben.
Zum eigentlichen Befehl, den der g15composer bekommt:
TL \"Hello World\" \"I am fuckin genious\"
Wie man es aus diversen Scriptsprachen und vom Terminal sowieso kennt, hat das "-Zeichen eine Sonderbedeutung, naemlich die Kennzeichnung und Trennung von Strings (Zeichenfolgen). Die Shell (meist bash) sieht jeden String in Anfuehrungszeichen als einzelnes Argument.
Deshalb werden Die einzelnen Strings aus den Anfuehrungszeichen genommen und echo als mehrere Argumente uebergeben. Echo nimmt sie sich und gibt sie einfach nacheinander aus, d.h. sie werden auch ohne Anfuehrungszeichen, einfach aneinandergehaengt, in den Puffer geschrieben.
Der g15composer erwartet aber durch das "-Zeichen getrennte Strings. Wuerden wir nur schreiben
TL "Hello World" "I am fuckin genious"
dann wuerde beim g15composer also nur folgendes ankommen
TL Hello World I am fucking genious
eben weil echo das ganze Zeugs schon zu einem String zusammnenfuegt.
Deshalb muessen wir der Shell explizit sagen, dass sie die Anfuehrungszeichen auch als Anfuehrungszeichen und nicht als String-Implikatoren/-Separatoren behandeln soll. Und eben das macht man, indem man vor jedes Anfuehrungszeichen ein Backslash stellt (das nennt man uebrigens Escapen).
Wieso veranstalten wir aber eigentlich das ganze Theater, extra 2 Strings zu senden?
Genau, dumme Frage, natuerlich, weil jeder separate String in einer eigenen Zeile ausgegeben wird und wir die Ausgabe gerne auf 2 Zeilen haben wollten (wollte ich, also wolltet ihr das auch, basta!).
Und schliesslich (die Letzten werden die Ersten sein ) das "TL":
Das 'T' ist eine Groessenangabe, naemlich die Schriftgroesse.
Das 'L' steht ganz einfach fuer "Large". Es gibt 3 Groessen, 'S', 'M', 'L', wie bei T-Shirts quasi, also sind die moeglichen Kombinationen, logischer Weise "TS", "TM" und "TL".
Das koennt ihr gerne selbst mal ausprobieren.
Einen vollstaendigen Ueberblick ueber die vielen Moeglichkeiten, welche der g15composer bietet, gibts in der entsprechenden man-page (die im Uebrigen mit 'q' beendet wird .... fuer die, die bisher zu faul waren, mal so etwas zu lesen ):
4. Linkliste
- zu den Media- und G-Keys hat AXTIMWALD HIER noch etwas schoenes geschrieben (eine xbindkeys-config, meine eigene sieht im Prinzip auch so aus)
- saLOUt hat HIER ein ziemlich cooles Script fuer Amarok 1.4x gepostet
- HIER gibts ein nettes "Tux-Zeit-Datum-CPU-Auslastung-RAM-Belegung"-Applet von morphiosie
- DIESES freshe script mit einigen Infos zu Dualcore-CPUs von Ator kann man sicherlich auch noch fuer andere Multicore-Prozessoren anpassen (bspw. irgendwelche Quad-/Hexa-/Octacores oder sowas), auch ein schoenes Ding
- g15macro ist ein Tool, um Makros aufzunehmen und auf die G-Keys zu legen. Getestet hab ich es selbst noch nicht, im README-File das Pakets steht, dass x11, libg15render und die XTEST extension headers benoetigt werden. Kann ja mal jemand versuchen zu kompilieren und Rueckmeldung erstatten.
-ENDE-
Ich hoffe, dem einen oder anderen hat das Ding hier zumindest ein Bisschen geholfen.
Danke noch einmal an Spommel hier aus dem Forum, der mir schon waehrend der Arbeit an der ersten Verison dieses Howtos mit all seinem Fachwissen zur Seite stand!
... Soviel dazu, ich hab endlich mal das Howto upgedated und freu michn Keks, vor allem, weil ich das Teil endlich als ersten Praxistest mit meinem UBERfreshen BBEditor bauen konnte, der bald mal zur public beta released wird.
so, gute nacht ... PEACE, ich bin raus wie das Hirn von Michael ...
mfg,
julian
Zuletzt bearbeitet von -=Freaky=- am So 26.Jul.2009 08:21, insgesamt 17-mal bearbeitet |
|
| Nach oben |
|
 |
TippiX
Anmeldungsdatum: 15.03.2007 Beiträge: 59
Punkte: 20
|
Verfasst am: Fr 13.Jul.2007 16:42 Titel: |
|
|
Hi.
Danke für dieses ausführliche Tutorial. Hat damit auch (mehr oder weniger) geklappt.
Größtes Problem war UINPUT. Hab versucht, meinen Kernel neu zu kompilieren (Ubuntu 7.04), aber wollte nicht. Bis ich halt irgendwo gelesen hab "sudo modprobe uinput", probiert, Modul geladen, passt. Ist zwar jetzt nicht fest im Kernel, aber damit kann ich leben
Aber mir ist etwas aufgefallen: Das erwähnte Skript (mit Tux) funktioniert bei mir nicht wirklich. Er druckt immer nur die letzte Zeile. Mal testweise alle Ausgaben direkt hintereinander gehängt mit ; dazwischen, dann funktioniert es (also in einer langen Zeile). Bin ich zu doof ??
Ansonsten, net schlecht!!
Gruß, Tippi |
|
| Nach oben |
|
 |
-=Freaky=-
Anmeldungsdatum: 17.02.2007 Beiträge: 1206
Punkte: 282
|
Verfasst am: Fr 13.Jul.2007 23:00 Titel: |
|
|
hi TippiX,
endlich mal jemand, der mein howto nutzt! DANKE! wahrscheinlich warst du auch dabei der erste, aber auf jeden fall der erste, der was konstruktives dazu geschrieben hat. DANKE! auch nochmal dafuer.
ich habe fuer den fall, dass der support von uinput per externem modul vorhanden ist noch etwas ergaenzt, vielleicht hilft das ja dem nexten mit demselben problem.
warum das script nicht funktioniert, kann ich leider nicht sagen. ich habe leider auch keine ubuntu-installation zum testen.
in der manpage vom g15composer (man g15composer) steht ausdruecklich, dass mit dem befehl PO nur der eine pixel neugezeichnet wird ... vllt. mal nen bugreport an die entwickler mit genauen angaben zu distribution und verwendeter software/verwendeten treibern.
sobald mein neues testsystem laeuft, werde ich mal sehen, ob ich dein problem unter ubuntu 7.04 rekonstruieren kann.
mfg,
julian |
|
| Nach oben |
|
 |
hofmar
Anmeldungsdatum: 26.07.2007 Beiträge: 1
Punkte: null
|
Verfasst am: Do 26.Jul.2007 13:31 Titel: |
|
|
Hallo ans Forum und vor allem an -=Freaky=-,
echt ein sehr gutes Howto haste da geschrieben. Hat mir sehr weiter geholfen.
Leider kann ich die Aussage von TippiX nur bestätigen, bei mir funktioniert der Tux unter Ubuntu 7.04 auch nicht. Wird leider auch nur die letzte Zeile ausgegeben.
Also nochmal danke für dieses super Howto und denke daran, es lesen mehr Personen als du denkst. Die meisten sind einfach nur schreibfaul.
Vielleicht kommst du ja mal zu dem G-Tasten-mit-xmodmap-Howto.
Würde mich freuen.
Gruß
hofmar |
|
| Nach oben |
|
 |
Final-Sora
Anmeldungsdatum: 02.08.2007 Beiträge: 8
Punkte: 3
|
Verfasst am: Do 02.Aug.2007 01:03 Titel: Hi |
|
|
Ich muss schon sagen dieses howto is sehr gut
so ne frage bei geht ab hier nicht´s mehr
[The-final-sora@noname ~]$ su -
Passwort:
[root@noname ~]# cd libg15*
-bash: cd: libg15*: Datei oder Verzeichnis nicht gefunden
[root@noname ~]# cd /home/The-final-sora/g15/
[root@noname g15]# cd libg15*
[root@noname libg15-1.2.2]# ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
[root@noname libg15-1.2.2]# |
|
| Nach oben |
|
 |
-=Freaky=-
Anmeldungsdatum: 17.02.2007 Beiträge: 1206
Punkte: 282
|
Verfasst am: Fr 03.Aug.2007 16:25 Titel: |
|
|
vielen vielen dank an alle fuer das positive feedback! haette nicht gedacht dass es so gut ankommt.
ich werde in den nexten 3 wochen mein testsystem aufsetzen, auch mal ubuntu installieren und sehen was sich da machen laesst mit dem script.
da ich gerade an einem groesseren softwareprojekt arbeite und moeglichst viel in den ferien schaffen will (evtl. sogar die erste beta fertigzustellen) weiss ich allerdings nicht, ob das xmodmap-howto noch was wird. kommt aber auf jeden fall noch, auch wenns noch ne weile dauern kann.
zu dem configure-problem:
du solltest gcc (am besten 3.4) und g++ installieren. sorry haette ich als voraussetzung dazuschreiben sollen.
ich benutze gentoo, da ist wegen portage und emerge, also dem sourcecode-basierten paketmanagement immer ein c-compiler installiert und ich hab nicht an distris gedacht bei denen das anders ist.
mfg,
julian |
|
| Nach oben |
|
 |
Final-Sora
Anmeldungsdatum: 02.08.2007 Beiträge: 8
Punkte: 3
|
Verfasst am: Fr 03.Aug.2007 16:26 Titel: Hallo ???? |
|
|
Ich denk mir schon es gibt niemanden
ich bitte um antwort !!!!!!!
mfg Final-Sora |
|
| Nach oben |
|
 |
Spommel
Anmeldungsdatum: 17.02.2007 Beiträge: 907
Punkte: 306
|
Verfasst am: Fr 03.Aug.2007 18:11 Titel: |
|
|
| häh, ich hatte doch schonmal auf den Post mit dem GCC geantwortet? wurde das gelöscht, weil das linux-forum überquillt? |
|
| Nach oben |
|
 |
Final-Sora
Anmeldungsdatum: 02.08.2007 Beiträge: 8
Punkte: 3
|
Verfasst am: Sa 04.Aug.2007 14:14 Titel: Danke !!!!!!! |
|
|
is wirklich net
aber leider geht es mit gcc und g++ auch nicht
so jetzt sagt der er bräuchte libusb
[The-final-sora@noname ~]$ su -
Passwort:
[root@noname ~]# cd /home/The-final-sora/
[root@noname The-final-sora]# cd libg15*
-bash: cd: libg15*: Datei oder Verzeichnis nicht gefunden
[root@noname The-final-sora]# cd /g15
-bash: cd: /g15: Datei oder Verzeichnis nicht gefunden
[root@noname The-final-sora]# cd g15/
[root@noname g15]# cd libg15*
[root@noname libg15-1.2.2]# ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for /usr/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm -B
checking whether ln -s works... yes
checking how to recognise dependent libraries... pass_all
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for g++... no
checking for c++... no
checking for gpp... no
checking for aCC... no
checking for CC... no
checking for cxx... no
checking for cc++... no
checking for cl.exe... no
checking for FCC... no
checking for KCC... no
checking for RCC... no
checking for xlC_r... no
checking for xlC... no
checking whether we are using the GNU C++ compiler... no
checking whether g++ accepts -g... no
checking dependency style of g++... none
checking for g77... no
checking for xlf... no
checking for f77... no
checking for frt... no
checking for pgf77... no
checking for cf77... no
checking for fort77... no
checking for fl32... no
checking for af77... no
checking for xlf90... no
checking for f90... no
checking for pgf90... no
checking for pghpf... no
checking for epcf90... no
checking for gfortran... no
checking for g95... no
checking for xlf95... no
checking for f95... no
checking for fort... no
checking for ifort... no
checking for ifc... no
checking for efc... no
checking for pgf95... no
checking for lf95... no
checking for ftn... no
checking whether we are using the GNU Fortran 77 compiler... no
checking whether accepts -g... no
checking the maximum length of command line arguments... 32768
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking if gcc static flag works... yes
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC
checking if gcc PIC flag -fPIC works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
configure: creating libtool
appending configuration tag "CXX" to libtool
appending configuration tag "F77" to libtool
checking for main in -lusb... no
configure: error: "libusb not found. please install it"
aber wenn ich installieren will findet er es nicht im i-net
kann mir jemand sagen wo ich des finde
Ich hab:
Fedora core 7 -> mit dem packetmananger yum |
|
| Nach oben |
|
 |
-=Freaky=-
Anmeldungsdatum: 17.02.2007 Beiträge: 1206
Punkte: 282
|
Verfasst am: Sa 04.Aug.2007 15:41 Titel: |
|
|
der link steht im howto. schritt 1 - vorbereitung.
wer lesen kann ...
mfg,
julian |
|
| Nach oben |
|
 |
Final-Sora
Anmeldungsdatum: 02.08.2007 Beiträge: 8
Punkte: 3
|
Verfasst am: So 05.Aug.2007 22:19 Titel: |
|
|
entweder ich bin zu unfahig oder fedora mag nich
[root@noname g15daemon-1.2.7]# g15daemon
bash: g15daemon: command not found
[root@noname g15daemon-1.2.7]# /usr/sbin/g15daemon
An Error Occurred - 3 : ( Unable to configure the linux kernel UINPUT driver ) received
Danke für die hilfe |
|
| Nach oben |
|
 |
Spommel
Anmeldungsdatum: 17.02.2007 Beiträge: 907
Punkte: 306
|
Verfasst am: So 05.Aug.2007 22:28 Titel: |
|
|
| modprobe uinput? |
|
| Nach oben |
|
 |
-=Freaky=-
Anmeldungsdatum: 17.02.2007 Beiträge: 1206
Punkte: 282
|
Verfasst am: So 05.Aug.2007 22:36 Titel: |
|
|
http://www.g15-applets.de/logitech-g15-lcd-unter-linux-t589-30.html
google, 1. treffer !!!
also jungs, ich helf gerne, beantworte fragen und erklaer es auch mehrmals wenns jemand nicht versteht.
aber ich unterstuetze keine faulheit, selbst mal zu suchen. sollte sogar irgendwo stehen dass ihr erst selbst suchen sollt.
mfg,
julian
Zuletzt bearbeitet von -=Freaky=- am So 05.Aug.2007 22:39, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
Final-Sora
Anmeldungsdatum: 02.08.2007 Beiträge: 8
Punkte: 3
|
Verfasst am: So 05.Aug.2007 22:36 Titel: Hi |
|
|
hab ich gemacht, aber da stand ja ich soll auf gut glück weter machen
-> und jetzt ?? |
|
| Nach oben |
|
 |
-=Freaky=-
Anmeldungsdatum: 17.02.2007 Beiträge: 1206
Punkte: 282
|
Verfasst am: So 05.Aug.2007 22:38 Titel: |
|
|
poste mal bitte die ausgaben von
und
alles ausgefuehrt als root.
mfg,
julian |
|
| Nach oben |
|
 |
|
|
|