Dieses Projekt war 2008 noch nicht im Blog, ich habe es 2015 aus dem alten CMS kopiert.

Das fertige Hackbrett -- äußerlich original, bis auf das Kabel

Das fertige Hackbrett — äußerlich original, bis auf das Kabel

Die Version, die sich in Frankreich aus dem Psalterium entwickelte, wurde auf französisch ‚doulcemér‘ genannt, dieser Name stammt vermutlich vom lateinischen ‚dulce melos‘, ’süßes Lied‘ oder ‚lieblicher Klang‘. In England heißt das Hackbrett heute noch ‚hammered dulcimer‘.

Wikipedia — ‚Hackbrett

Eine Tastatur kann eine sehr persönliche Sache sein. Insbesondere wenn es sich dabei um ein sehr gut gebautes Modell handelt, wie zum Beispiel eine IBM Model M. Das Design der Model M stammt von 1984, sie hat aber auch Heute noch eine grosse Fangemeinde. Sie hatte die üblichen Anschlüsse für alte Tastaturen: erst den 5poligen DIN-Stecker, später einen PS/2-Stecker. Zumindest meines Wissens nach wurde dieses Modell nie in einer USB-Variante herausgebracht.

Ein Bekannter wusste dass ich schon öfter Geräte mit USB-Anschluss gebastelt habe, und eines davon verhält sich sogar wie eine Tastatur (Es ist nicht wirklich eine Tastatur… aber das ist eine andere Geschichte… ;-) ). Er ist ein grosser Freund der Model M, also fragte er ob ich einer Tastatur mit kaputter Elektronik neues Leben einhauchen könnte. Dies ist das Ergebnis…

Hard- und Software

Ein erster Prototyp

Ein erster Prototyp

Der grösste Teil der Elektronik in einer Tastatur ist die Tastenmatrix. Man kann sich das so vorstellen dass die Tasten auf einem Raster aus horizontalen (Reihen) und vertikalen (Spalten) Leiterbahnen verteilt sind. Im Fall einer Model M haben wir es mit einer 8×16-Matrix zu tun. Acht Spalten in 16 Reihen, oder anders rum, je nachdem wie man sich das vorstellt. Jede Taste ist mit einer Reihe und einer Spalte verbunden. Wenn man drauf drückt wird die Verbindung an dieser Kreuzung hergestellt.

An dieser Matrix hängt ein Tastaturcontroller. Das ist ein Chip mit einer Reihe von I/O-Pins die den Zustand der Matrix überwachen. Am anderen Ende ist ein Interface mit dem der Chip dem Computer seine Befunde mitteilt. Ach ja, und nicht zu vergessen: der Chip hat auch drei Ausgänge zur Ansteuerung der LEDs für Num-, Caps- und Scroll-Lock.

In diesem Projekt habe ich den Tastaturcontroller und seine Schaltung durch einen ATmega32 und eine eigene Schaltung ersetzt. Der ATmega scannt die Matrix, steuert die LEDs und spricht mit dem Computer.

Für die angenehme Weiterentwicklung habe ich einen Boot-Loader in dem Chip untergebracht. Damit ist es möglich, der Tastatur eine neue Firmware zu verpassen ohne sie auseinander nehmen zu müssen. Und ohne einen speziellen Programmer zu brauchen.

Andere Hardware?

Original alt

Original alt

Wie geschrieben hängt der Controller in diesem Projekt nur an einer Tastaturmatrix. Diese Art von Matrix findet man in allen möglichen Tastaturen, von Tastentelefonen über klassische Computer wie den C=64 oder den Schneider CPC, Tastaturen wie die von Sun, mit Anschlüssen die nicht an PC passen, bis hin zu modernen Tastaturen die ein paar zusätzliche Features brauchen könnten.

Ein Layout habe ich zwar bislang nur für die IBM Model M gemacht, aber ich will zumindest noch eine Sun-Tastatur umbauen. Ich schätze dass ich dazu den Scan-Algorithmus umbauen muss, weil die Matrix bei Sun nicht in 16×8-Form angeordnet ist. Die Positionen der Tasten auf der Matrix werden wahrscheinlich auch anders sein, die werde ich rausfinden müssen. Und natürlich wird dann eine Platine mit anderem Layout fällig.

Features

Powered by Kicad

Powered by Kicad

Im Moment macht die Tastatur alles was man von einer Standard-Tastatur erwarten kann die man irgendwo aus dem Regal zieht. Aber da sich der ATmega32 in der Tastatur die meiste Zeit einfach nur langweilt sind einige zusätzliche Features denkbar. Man denke an ‚magische Tastendrücke‘ die einige versteckte Funktionen an- oder ausschalten können, so etwas wie:

  • komplette Sätze oder Phrasen auf einzelne Tastendrücke abschicken
  • ‚Autofeuer‘-Funktion auf Tasten die sowas normalerweise nicht haben, beispielsweise Alt+F4
  • Tastaturlayout umstellen ohne den Computer umzukonfigurieren
  • prellende Tasten ein- oder ausschalten, um Leute zu verwirren die den Computer benutzen wollen
  • zufälliges Auslösen von Caps-Lock
  • Die Pfeiltasten zu einem Mausersatz machen, ohne dafür spezielle Software zu brauchen

Mit ein paar Änderungen an der Hardware würden sogar noch deutlich mehr Möglichkeiten offen stehen:

  • die Oldtimer-Tastatur in eine supermoderne kabellose Bluetooth-Tastatur umbauen
  • Keylogger-Funktionen einbauen, zum Beispiel auf SD-Karte
  • einen USB-Hub in die Tastatur einbauen

Wer nur ein wenig so darüber denkt wie ich wird nicht lange brauchen um selbst auf nützliche — oder besser: unnütze — Ideen zu kommen. ;-)

Benutzung

Die fertige Tastatur wird einfach an USB angeschlossen. Alle LEDs blinken kurz auf um zu zeigen dass das Gerät initialisiert ist.

Dann kann die Tastatur wie immer benutzt werden. Wenn zusätzliche Features eingebaut werden wird es zusätzliche Bedienungsanleitungen geben.

Nachteile

Ich weiss nicht wie die Hersteller von Tastaturen mit dem Problem der Geister-Tasten umgehen. Ich habe keine speziellen Massnahmen zu deren Verhinderung getroffen. Ich hoffe einfach mal, dass die Ingenieure bei IBM die Tasten in einer Weise auf der Matrix verteilt haben die das Problem minimiert. Aufgetreten sind solche Probleme bei mir bislang zwar nicht, aber ich wollte darauf hinweisen dass ich keine Gegenmassnahmen getroffen habe.

Danke!

Moderner Oldtimer

Moderner Oldtimer

Ich danke wieder mal Objective Development für die Möglichkeit, den USB-Treiber in meinem Projekt benutzen zu können.

Ich habe mich sehr stark von Spaceman Spiff’s c64key inspirieren lassen. Diese Software basiert auf seinen Ideen.

Dann geht Dank an xleave, der mir die Platine geätzt hat (von den vielen blöden Elektronikfragen mal ganz abgesehen die er schon von mir vor den Latz gekriegt hat…).

Und ich danke natürlich FaUl vom Chaostreff Dortmund für die Idee zu dem Projekt.

Lizenz

Meine Arbeit, also alles außer dem USB-Treiber, fällt unter die GNU General Public License (GPL). Eine Kopie der GPL liegt dem Projekt bei. Der USB-Treiber untersteht einer gesonderten Lizenz von Objective Development. In firmware/usbdrv/License.txt befinden sich weitere Informationen dazu.

Download

Siehe auch…

  • clickykeyboards.com – eine Seite zur IBM Model M
  • RUMP – praktisch das gleiche Projekt, eine parallele Entwicklung
  • Geekhack – Lochraster-Version, basiert auf Dulcimer

DulcimerDas Autoquarium ist zwar mittlerweile auch fast fertig (in der ersten Ausbaustufe), aber zwischenzeitlich habe ich mich noch einem weiteren Projekt gewidmet. Das ist seit gerade eben online. Ebenfalls in der ersten Ausbaustufe: Dulcimer.

Der Name klingt erstmal nichtssagend, aber wer sich den grünen Kasten auf der Seite durchliest kann sich vielleicht denken warum ich ihn gewählt habe (Hint: wenn das nicht reicht kann man auch in der englischen Version spicken). :-)

Um das auch hier nochmal kurz zusammenzufassen: es geht um eine ziemlich alte klassische Tastatur: die IBM Model M. Ich wurde gefragt ob ich die zu einer USB-Tastatur umbauen kann, und hier ist das Ergebnis. Wer mit dem Namen nichts anfangen kann möge sich vielleicht mal bei eBay die Preise ansehen für die diese ‚alten Dinger‘ gehandelt werden…

Wie auch immer: diese eine spricht jetzt schon fließend USB. Und wenn ich Zeit dazu habe werde ich da noch ein paar Nettigkeiten einbauen. Ideen stehen ja schon auf der Seite, für neue bin ich immer offen. Eines meiner Ziele ist zum Beispiel — ohne mich über die Krankheit lustig machen zu wollen — eine (ein- und ausschaltbare) Tourette-Tastatur… :-D

Gerade wollte ich wissen wie lang 250 Fuß in einem gebräuchlichen Längenmaß sind. Dass Google mir das umrechnen kann wusste ich. Dass es aber schon reicht, im Suchfeld des Firefox (bei mir immer noch ein zweier) ‚250 feet in meters‚ einzugeben war mir neu. In den Suchvorschlägen erscheint dann direkt ‚=76.2 meters‚, ohne dass ich die Seite laden muss. Sehr praktisch.

Leider scheint das nur mit Masseinheiten zu funktionieren. Google kann eigentlich auch Waehrungen umrechnen, aber das geht wohl an dieser Stelle nicht.

Eine Mail von Bill Gates, der vergeblich versucht ein Microsoft-Produkt auf einem Microsoft-Betriebssystem zu installieren:

Someone decided to trash the one part of Windows that was usable? The file system is no longer usable. The registry is not usable. This program listing was one sane place but now it is all crapped up.

Herrlich. Oder dieser Absatz:

Then it told me to reboot my machine. Why should I do that? I reboot every night — why should I reboot at that time?

Täglicher Reboot? Sicher nur weil er umweltbewusst Abends den Rechner abschaltet, oder? Der Mann hat auf jeden Fall Humor:

So they told me that using the download page to download something was not something they anticipated.

Die Mail ist fünf Jahre alt und bezieht sich auf XP. Keine Ahnung ob das heutzutage besser ist. Warum hat er nicht einfach etwas in der Form ‚apt-get install moviemaker‚, oder noch besser ‚pacman -S moviemaker‚ ausprobiert? :-D

So zumindest nicht. Wenn ich bei Alternate was bestelle berechnen die mir 6,95 Euro Versandkosten. Wenn ich aber ein Buch mitbestelle (ja, ich wusste auch nicht dass die da tote Bäume haben) erlassen sie mir die Versandkosten.

Schlaumeier der ich bin, habe ich natürlich nach einem Buch unter 6,95 Euro gesucht. Und ich habe eins gefunden. Nur eins. Es kostet 5,95 Euro und trägt den etwas sperrigen Titel 50 einfache Dinge, die Sie tun können um die Welt zu retten und wie Sie dabei Geld sparen. Wenn ich die Beschreibung richtig deute, geht es unter anderem um die Vermeidung von Müll…

Grotesk, oder?

frey:~# grep "model name" /proc/cpuinfo
model name : Intel(R) Atom(TM) CPU 230 @ 1.60GHz

Atom-BoardDas ist ein brandneues Intel D945GCLF Board, darin stecken 2GB RAM und ein PICO-PSU 120 Spannungswandler. Gekauft habe ich das als Ersatz für mein Epia, das ist vor einer Weile durchgebrannt. Auf dem Ding wird also wieder ein VDR laufen, und ein Debian.

Den alten Kernel konnte ich natürlich nicht benutzen. Abgesehen davon dass der für die C3-CPU von VIA gebaut war, war da auch der falsche Netztreiber drin. Und booten soll das Ding wieder per PXE, also ohne Festplatte. Anderen Treiber reincompilieren hat nicht gereicht um den alten 2.6.18 zum Netzboot zu bewegen. Mit einem frischen 2.6.25.7 sieht jetzt alles besser aus. Mal sehen wie es weiter geht…

Ich bin auf ein merkwürdiges Phänomen in C gestoßen, vielleicht kann mir das jemand erklären. Extrem eingedampft sieht das Problem so aus:

int main(int argc, char* arg[]) {
    int i = 0;
    switch (i) {
        case 0:
            int j = 7;
            break;
    }
}

Der Compiler (aufgerufen mit ‚gcc test.c‘) sagt dazu „t.c:5: error: expected expression before ‚int‘„. Mit geschweiften Klammern funktioniert der case-Block dagegen prima:

case 0: {
    int j = 7;
    break;
}

Zu meinem grössten Erstaunen klappt auch folgender Block:

case 0:
    i = 3;
    int j = 7;
    break;

Es geht halt nur nicht wenn direkt nach dem case eine Variablendeklaration kommt.

Wenn man schon innerhalb eines case eine Variable deklarieren kann… warum dann nicht ganz am Anfang? Ich meine: ich habe ja Lösungen für das Problem. Mir fehlt halt nur das ‚Problembewusstsein‘. Kann mir das jemand vermitteln?

Ich habe ein wenig in einem Vorbereitungsbuch für die LPI-Zertifizierung geblättert. Dokumentation und insbesondere das Lesen selbiger wird da ziemlich ernst genommen:

Achtung:Als Linux-Einsteiger neigt man leicht dazu, diesen Abschnitt auf die leichte Schulter zu nehmen. Für die Praxis ist die Verwendung der Online-Dokumentation aber absolut unentbehrlich, wenn man sich nicht ganz verloren vorkommen will. Der geübte Umgang mit der Dokumentation ist sehr, sehr wichtig! (Wirklich!)

Recht hat das Buch, und ich finde die Schreibweise sehr gelungen (das ist ein 1:1-Zitat). :-)

Das ist ein Scherz, oder? Sagt oder schreibt mir bitte, dass das ein Scherz ist. Es ist nicht so dass Denon es tatsächlich fertig bringt, anderthalb Meter Netzwerkkabel für 499 Dollar anzubieten, oder? ‚blahblah… designed for the audio enthusiast… blahblah… will bring out all the nuances in digital audio reproduction…‚ Ja, die Nuancen bei der digitalen Datenübertragung sind fein… sehr fein…

Ich weiß auch nicht warum ich den Feed von ladyada noch nicht im Reader hatte. Dass es da interessante Projekte gibt weiß ich schon seit Jahren. Mit diesem Satz hat sie mich jetzt doch überzeugt:

I remember a few years ago I went to a party and ended up talking to Mar about how much I hated Chapter 9 of the USB standard. USB is pretty much a perfect example of what happens when committees design protocols: its bad enough that it will ruin a party.

Kein Wunder, nachdem ich wieder das ganze Wochenende mit Controllern verbracht habe. Unter anderem auch, um die USB sprechen zu lassen…