Fixing Touchpad of the T540p for Ubuntu 14.04

Ubuntu 14.04 scheint einige Probleme mit dem T540p zu haben. Das Touchpad ist im Fabrikneuen System quasi nicht zu gebrauchen.
Glücklicherweise reichen ein paar einfache Knigge um es korrekt zu konfigurieren.

Micht stören zwei Dinge:

  • Die obere Fläche ist für die Linke/Mittlere/Rechte Maustaste konfiguriert. Bei einem Klick werden aber auch die Bewegungen als Mausbewegungen interpretiert, was zu unerwünschten Klickverhalten führt
  • Die mittlere und rechte Maustaste funktionieren gar nicht. Rechtsklick wird mit Mausgesten realisiert, die Mittlere Maustaste gibt's gar nicht
Touchpad vom Lenovo T540p
Touchpad vom Lenovo T540p

Das Ziel ist gesteckt:
Die obere Fläche soll den Funktionstasten (Linke/Mittlere/Rechte Maustaste) zugeordnet werden. Klicken und gleichzeitiges Herumfahren mit der Maus ist störend und unerwünscht.

Abhilfe mit synclient

Der Freund in der Not heißt in diesem Fall synclient. Damit lässt sich das Touchpad so konfigurieren wie es der Benutzer haben will.
Synclient ist unter Ubuntu im Paket xserver-org-input-synaptics drinnen und sollte bereits installiert sein. Andernfalls hilft ein einfaches

Konfiguration auslesen

Ein Aufruf von synclient ohne Parameter liefert die aktuelle Konfiguration

synclient liefert die aktuelle Konfiguration
synclient liefert die aktuelle Konfiguration

Sensitive Fläche reduzieren

Das Touchpad wird in ein Rechteck eingeteilt, dessen Dimensionen mit folgenden Parametern eingestellt werden

  • LeftEdge
  • RightEdge
  • TopEdge
  • BottomEdge

Die Fläche auf dem Touchpad, welche die sensitive Fläche bestimmt sind

  • AreaLeftEdge
  • AreaRightEdge
  • AreaTopEdge
  • AreaBottomEdge

Der folgende Aufruf von synclient und ein grep darauf liefen die aktuellen Einstellungen

In meinem Fall möchte ich, dass die obere Fläche in der sich die Maustasten befinden nicht sensitiv sind. Dazu setze ich den Wert AreaTopEdge auf 1800. Der Werte wurde deterministisch ermittelt, sprich es werden Werte so lange durchprobiert bis das gewünschte Ergebnis erzielt wurde.

Fertig! 🙂

Mausklicks einstellen

Die nächsten Parameter die uns interessieren sind die Mausklick-Regionen. Der folgende Aufruf liefert die passenden Daten, welche selbsterklärend sein sollten

Ich habe die Parameter schon so eingestellt, dass sie meiner Wunschkonfiguration entsprechen. In der Basiskonfiguration waren MiddleButtonAreaLeft, MiddleButtonAreaRight, RightButtonAreaLeft und RightButtonAreaRight jeweils auf 0 eingestellt.

Auch hier wiederum führt ein gezieltes erraten der Werte zum gewünschten Resultat. Die Werte werden sich sicherlich noch etwas verändern, die grobe Richtung passt jedoch schon.

Wichtig: Es muss zuerst die AreaLeft eingestellt werden. Denn wenn beim setzen von AreaRight diese kleiner ist als AreaLeft (AreaRight < AreaLeft) schluckt synclient den neuen Wert nicht!

Summary in a Box

Die gesamte Konfiguration kann mit folgendem Shell-Skript eingestellt werden:

Die Werte können bei dem einen oder anderen eventuell etwas variieren.

[UPDATE]

Das Shell-Skript wurde von mir angepasst und erweitert.

Repaircafe | IT-Syndikat

logo_repaircafe_largeReparieren statt wegwerfen

Unter diesem Motto haben wir als IT-Syndikat (der Hackerspace Innsbruck) am 31. Jänner unsere Räumlichkeiten geöffnet. Am Nachmittag sind um die 60 Personen im Space eingtroffen um dort ihre lieb gewonnenen Tools und Haushaltsgeräte zu reparieren.

Als Hackerspace ist unser Hauptaugenmerk natürlich auf Elektronikgeräte gelegt. Der freundlichen Unterstützung der offenen Radlwerkstatt bikerei ist es zu verdanken, dass auch professionelle Fahrradflicker vor Ort war. Daneben ist es einer Vielzahl an weiterer freiwilligen Helfern zu verdanken, dass auch noch Staubsauger, Wäschetrockner, stumpfe Messer und diverse Kuriositäten erfolgreich wieder zum Laufen gebracht werden konnten.

IMG_20150131_170851
Computerdoktor mit Stethoskop

Prinzipiell geht es darum, kaputte Geräte nicht einfach wegzuwerfen sondern sie nach alter Manier zu flicken. Sekundäres Ziel ist es, den Menschen die Angst vor der Technik und dem "komplizierten Dingsbus da drinnen" zu nehmen und Freude am Herumbasteln an den eigenen Geräten zu vermitteln - und ein freudiges Lächeln wenn am Ende die kaputte, aber liebgewonnene Eieruhr, ein Geschenk von Tante Helga, wieder läuft 🙂

IMG_20150131_160505
Die Eieruhr funktioniert jetzt wieder

Oftmals reichen ein paar einfache Handgriffe um Alltagsgegenständen wieder Leben einzuhauchen - Entfernen vor Verschmutzungen, welche feine Mechanikteile blockieren, ein frisch geöltes Kugellager oder ein nicht mehr sauber funktionierender Kontakt. Man muss sich nur trauen, auch mal wieder einen Schraubenzieher in die Hand zu nehmen.

Das nächste Repaircafe in Innsbruck findet Ende Februar statt. Weitere Informationen sind auf der Homepage repaircafe-tirol.at zu entnehmen.

[UPDATE]

RepairCafe in Tirol Heute (leider nur zeitlich begrenzt verfügbar)

Sockets v1.2

Meine C++ Socket-Library für Linux geht in Version 1.2

Neben einem umfassenden Code-Refactoring, bei dem nun alles in eine Header- und Sourcefile gewandert ist sind ein paar coole Methoden und ein asynchrones Tcp Server Socket mit dabei!

Asynchrones TCP Server Socket

Der Vorteil ist, dass ein einzelner Thread nun auf Reaktionen diverser Sockets wartet. Es muss dadurch nicht ein Thread pro Socket gestartet werden, was unter Umständen eine massive Verschwendung von Ressourcen darstellt.

Um das Socket verwenden zu können, müssen lediglich drei virtuelle Methoden überladen werden. Details zur Verwendung finden sich im beiliegenden Example echoServerAsync.cpp (Gekürzt)

 

Bluetooth Kassette - Verbindung zwischen zwei Generationen

In meinem Auto habe ich noch einen alten Radio mit Kassetten. Meine Generation wird vermutlich die letzte sein, die noch mit solchen Dingern aufgewachsen ist - Und vermutlich auch die letzte Generation, die den kausalen Zusammenhang zwischen Bleistift und Kassettenmusik noch kennt

cassette-age-test
Na? 😉

Nun, im Zeitalter von Spotify und Smartphones braucht ein Autoradio natürlich Bluetooth. Völlig klar, ein neues Autoradio mit Bluetooth muss her! Kostenpunkt um die 150 Euro. Doch eigentlich läuft das alte Ding noch problemlos. Warum verwerfen, es läuft doch noch! Kann man da nix machen?

ThinkGeek macht's möglich! Genauer gesagt deren Bluetooth Cassette Adapter. Quasi eine pipe von Bluetooth Audio/Telephon nach alter analog Kassette. Eine Brücke zwischen zwei Zeitaltern 🙂

ThinkGeek Bluetooth Kassetten Adapter
ThinkGeek Bluetooth Kassetten Adapter

Das Ding verfügt über ein internes Mikrophon und ist damit auch als Freisprechanlage zu gebrauchen. Schon nur deshalb lohnt sich der Kauf, nachdem das Bußgeld für Telefonieren am Steuer den Kauf schon rentabel macht (Kassette: 19.99 $, Bußgeld Italien: 155-600* €, Bußgeld Österreich: 50 €, Bußgeld Deutschland: 60 €).

Betrieben wird die Kassette mit einen internen Akku, der sich über einen Micro-USB Kabel laden lässt. Eine volle Ladung reicht locker für einige Stunden Dauerbeschallung.

Kein Magnetband, funktioniert trotzdem!
Kein Magnetband, funktioniert trotzdem

* Die spinnen die Römer!

Warum ist es mir wert über eine Technologie vom letzten Jahrtausend einen Blogpost zu schreiben?

Einfach nur weil ich die Meinung vertrete, dass alte Technologie genau dieselbe Wertschätzung genießen sollte, wie ein neues Smartphone, eine neue Musikanlage oder was auch immer. Mit ein bisschen Pflege, Phantasie und den Willen auch alte Dinge am Laufen zu halten lässt sich unglaublich viel machen.

Das Radio in meinem Auto ist etwa 10 Jahre alt, hat kein Navi, kann kein Bluetooth und kein CD-Laufwerk. Funktioniert aber noch einwandfrei und wird locker die Lebensdauer des Autos überstehen. Mit dem einfachen Hack der Bluetooth-Kassette habe ich mir nicht 130 Euro gespart, zugleich auch die Umwelt nicht unnötig mit einem Autoradio mehr verschmutzt.

Ganz nebenbei habe ich eine Freude, dem alten Ding neues Leben eingehaucht zu haben 🙂

... Und das Gesicht meiner Freunde wenn ich ihnen die Kassette zeige ... o_O

Patch erzeugen (diff, patch)

Dev corner | Patch, diff | Eine kurze Einführung

"Einen Patch einspielen". "Eine Datei patchen". Diese Phrasen hört man häufig wenn es um Software geht, vor allem bei solcher, an der mehrere Personen beteiligt sind.
Ein Patch in diesem Kontext ist nichts anderes als eine Datei, welche die Änderungen einer anderen Datei beschreibt. Also soetwas wie "Ersetze Zeile 3 mit einer leeren Zeile".
Beispiel:
Ich arbeite an einem sehr großen Code (sagen wir mal so um die 10 MB) und entdecke einen Bug, den ich beheben kann. Die Änderung ist ein Einzeiler. Ich möchte die Änderung an den Programm-Entwickler schicken.
Nun kann ich entweder die rießige Code-Datei (10 MB) an den Maintainer schicken, oder ich erstelle eine Datei, welche genau sagt, an welcher Stelle welche Änderungen zu erledigen sind (< 1 kByte).
Nun, Computerentwickler sind faul. Es wäre doch schön, wenn es ein Programm gibt, das eine solche Datei automatisch generiert und anwenden kann.
Hanau hier kommen diff und patch ins Spiel.

Anleitung

Beispielannahmen:

Originaldatei: original.c
Geänderte Datei: original_new.c

Patch erstellen

Die Datei original.c.patch beinhaltet nun alle Änderungen relativ zu original.c.

Patch einspielen

Der Maintainer hat sich den Patch angeschaut und ist mit den Änderungen einverstanden. Nun kann er seine Datei original.c mit der Datei original.c.patch patchen:

Patch und Diff im Einsatz in der Konsole
Patch und Diff im Einsatz in der Konsole

Nützliche Optionen

Notiz für Eclipse

In Eclipse ist es bei GIT oder SVN-Projekten sehr einfach Patches zu erstellen oder einzuspielen:

Rechtsklick auf die Datei -> Team -> Create / Apply patch

Patchen und Patches anwenden in Eclipse
Patchen und Patches anwenden in Eclipse

Fork daemon template

Snippet um in Linux einen Daemon zu Forken

Der Prozess muss zweimal forken, damit
a) Kein Elternprozess existiert (init wird Elternprozess)
b) Der neue Dämonprozess von Terminal detached wird

nanoHttp Binary

Für nanoHttp steht ab sofort ein Binary zur Verfügung (ARMv7). Die Installation muss per Hand erledigt werden und richtet sich eher an fortgeschrittene Benutzer. Kentnisse mit ADB, einer Shell und root sind erforderlich.
Eine Installationsanleitung in Englisch findet sich im Paket.

[Paket downloaden]

Mit der aktuellen Version ist auch das Problem, dass das Program bei einem abgebrochenen Transfer abschmiert behoben worden.

nanoHttp

nanoHttp - Ein extrem einfacher Web-Server, geschrieben in C.

Primärer Einsatzzweck ist es einen einfachen Webserver auf meinem Android-Tablet zu haben, ohne einen Riesen wie kWS oder ähnliche zu installieren.

Cross-Compile für Android (arm-linux-androideabi-gcc)

Erforderliche Pakete:

  • gcc-arm-linux-androideabi

Standartmäßig wird gcc zum kompilieren verwendet. Das entstehende Binary ist dadurch für dein System geschaffen.
Um nanoHttp für Android zu kompilieren muss nun ein anderer Compiler gewählt werden. Dazu kann einfach das Makefile editiert werden: Kommentar der folgenden Zeile entfernen und die CC=gcc-Zeile auskommentieren:

Nun ein einfaches make ausführen

Und fertig 🙂

Installationspacket

Mitlerweile steht ein fertig kompiliertes Binary zum Download bereit. Die Installation muss per Hand erledigt werden, Anleitungen liegen jedoch im Packet.

Die Installation richtet sich eher an fortgeschrittene Benutzer, die sich mit ADB auskennen.