HHKB with Linux: Delete and Backspace

There are three keys on a HHKB for Delete and Backspace:

  • Delete
  • BS, by pressing Fn + Delete
  • Del, by pressing Fn + `(Backtick)

Getting the keycodes using ‚xev‘

Depending on the settings of the HHKB (the DIP-switches on the back of the keyboard), they produce different keycodes:

HHKB and Win-ModeHHKB and Win-Mode, Delete-key=’BS‘Mac-Mode
Delete119 (Delete)22 (Backspace)22
BS22 (Backspace)2277 (NumLock)
Del119119119

The keycodes were determined using a HHKB Professional Classic, but I assume that other HHKBs will give the same results.

Setting BS as Delete

Which keycode does not fit? The 77 for BS in Mac-Mode does not make any sense. And the Mac-mode is the most useful under Linux, because this is the only way to use the volume keys.

Luckily it’s easy in Linux to redefine these codes in Linux (if you are using X-windows, will not work for Wayland).

Just create a file .Xmodmap in your home directory:

! HHKB in Mac-Mode: Set Fn+Delete as Delete
keycode 77 = Delete NoSymbol Delete

With the next restart of X, or with the command xmodmap ~/.Xmodmap, the key is redefined, and Fn + Delete will work as Delete.

If Fn + Delete should work as Backspace, the line in .Xmodmap would be

keycode 77 = BackSpace BackSpace BackSpace BackSpace

USM Haller: Regalbrett verbinden

Eine kleine Heimwerkeraufgabe: Ein bestehendes Regalbrett, das unter der Zimmerdecke angebracht war, sollte mit dem neuen Regal des Herstellers USM Haller verbunden werden.

Kein Problem, wenn man die richtigen Schrauben hat. USM Haller verwendet ein Feingewinde, die Schrauben heißen Μ8×1. Im Baumarkt nicht zu finden, aber bei eBay problemlos bestellbar.

Die Unterlegscheiben wiederum gibt es auch im Baumarkt.

Auch wenn ich ein minderwertiges Sperrholz verwendet habe, trägt das zu-gesägte Brettchen jetzt das Regalbrett, und wird mit den Schrauben am USM Haller befestigt:

Durch die Perspektive sieht das jetzt schiefer aus als es ist

Running a Typescript program in IntelliJ

The following is an alternative way to run a Typescript program in IntelliJ. In my eyes this is easier than described here: https://www.jetbrains.com/help/idea/running-and-debugging-typescript.html#ws_ts_run_directly_launch

What to install

Install typescript (node.js also required, of course):

sudo npm install -g typescript
sudo npm install -g node-ts

whereis ts-node

How to setup IntelliJ

Now edit a configuration in IntelliJ like this:

If we now take a very simple Typescript-program, it can be easily run:

And, before you ask, also debugging works with this setup.

Das HHKB am iPad Air 5

Das iPad Air 5 hat eine USB-C Schnittstelle, genauso wie mein Happy Hacking Keyboard Classic. Da liegt es nahe, beide Geräte mal mit einem USB-C Kabel zu verbinden und diese Kombination zu testen.

Grundsätzlich funktionieren die beiden Geräte zusammen, die Tasten produzieren die erwartete Ausgabe auf dem iPad.
Übrigens gilt das nicht für jede Tastatur, ein Gegenbeispiel ist die „Ducky One 2 SF“.

Dabei habe ich folgende Einstellungen verwendet: An der HHKB haben die sechs Dip-Schalter die Positionen OFF-ON-ON-ON-OFF-OFF. Sie ist also im Mac-Modus.
Auf der iPad-Seite habe ich in den Einstellungen bei den ’Tastaturen‘ unter ‚Hardwaretastatur‘ die „US International PC“ ausgewählt, und die Autokorrektur angeschaltet.

  • Alle Zeichen und Sonderzeichen kommen wie erwartet, auch { } [ ] @ \ ~
  • Umlaute lassen sich durch zwei Tastendrücke produzieren: Alt-u plus Taste oder “plus Taste. Also z.B. Alt-u und u für ein ü.
    Das „scharfe s“ ß braucht nur einen Tastendruck: Alt-s
  • Pfeiltasten funktionieren, auch mit Shift, um Text zu markieren. ‘Home‘ und ‘End‘ allerdings nicht.
  • Cut, Copy und Paste funktionieren mit der rechten Raute-Taste ◊ , die auch als Apple-Command beschriftet ist mit dem Schleifenquadrat ⌘. Mit anderen Positionen der Dip-Schalter wird wohl auch die linke Raute-Taste funktionieren.
  • ⌘-W schließt Fenster. ⌘-A markiert alles. Und genauso klappt es mit den anderen Kombinationen auf https://support.apple.com/de-de/HT211096 mit ⌘ als ‚Command‘, die auf Deutsch ’Befehlstaste‘ heißt.
  • Die Lautstärke-Tasten haben die erwartete Funktion

Insgesamt: Mit dieser Kombination aus iPad und HHKB lässt sich arbeiten, zumindest nach einer gewissen Eingewöhnungszeit.

[Dieser Artikel wurde natürlich auf dem iPad mit der HHKB geschrieben.]

Mit der Straßenbahn durchs Ruhrgebiet

Einmal quer durchs Ruhrgebiet mit der Straßenbahn – von Krefeld bis Dortmund? Geht das? Schließlich liegt hier Stadt neben Stadt, und jede dieser Städte hat auch eine Straßenbahn.

Antwort: Nicht ganz. Es gibt keine Verbindung in die Dortmunder Innenstadt, die nur Straßenbahnen verwendet. Das hat auch schon vor Jahren das „Straßenbahn Magazin“ in seinem Artikel „Tour de Ruhr“ festgestellt.

Da ich aber auf Dortmund als Endpunkt nicht verzichten wollte, habe ich hier auf andere Verkehrsmittel zurückgegriffen, siehe unten.

In den letzten August-Tagen 2022, das 9-Euro Ticket war noch gültig, ging es dann los – quasi von der eigenen Haustüre bis Dortmund Hbf.

Die 042 in Krefeld

Mit der 042 der SWK (Stadtwerke Krefeld) ging es zur Rheinstraße in Krefeld-Stadtmitte

Krefeld-Rheinstr.

Mit der U76 der Rheinbahn, von vielen Krefeldern immer noch K-Bahn genannt, ins schöne Düsseldorf.

Nach 44 Minuten erreicht man Düsseldorf Hbf:

In Düsseldorf muss ich das Kellergeschoss (zumindest theoretisch) nicht verlassen, um in die nächste Bahn nach Duisburg zu steigen, die U79.

Fast eine Stunde ist man unterwegs bis Duisburg Hbf. In Duisburg angekommen Umstieg in die 901 der DVG (Duisburger Verkehrsgesellschaft) nach Mülheim/Ruhr.

Das Foto der 901 entstand erst in Mülheim, daher wird die ‚falsche‘ Endhaltestelle angezeigt.

Weiter geht’s mit der U18 nach Essen:

Nach 20 Minuten ist man am Essener Hauptbahnhof, wir bleiben unter der Erde.

Jetzt bringt die 107 uns nach Gelsenkirchen

Keine Frage, auch im Gelsenkirchener Hbf bleiben wir unterirdisch

Weiter geht’s. Mit der Linie 302 der Bogestra (Bochum-Gelsenkirchener Straßenbahnen AG) fahre ich nach Bochum.

Nach einer halben Stunde bin ich im Bochumer Hauptbahnhof:

Mit der 310 der Bogestra geht’s Richtung Witten

Wie gesagt, weiter als Witten kommt man mit der Straßenbahn nicht. Also Ausstieg in „Witten Bahnhofstraße“, und die paar Meter zum Hauptbahnhof gelaufen.

Im Wittener Bahnhof

Hier fährt die S5 Richtung Dortmund

Ich fahre nur zwei Stationen, und steige in Dortmund-Barop wieder aus.

Ein paar Meter zu laufen tut gut nach vielen Stunden auf ungemütlichen Straßenbahnsitzen. Es geht nach Norden zur Stockumer Straße, und dort zur nächsten Bushaltestelle.

Bus 440 bringt mich weiter zum nächsten Ziel.

Ein ganz spezielles Verkehrsmittel , die H-Bahn der Universität Dortmund wartet:

Mit der H-Bahn einmal von Eichlinghofen quer über das Gelände der Uni, zur S-Bahn Haltestelle im nördlichen Campus.

Die Mensa der Uni

Von dort geht es mit der S1 zum Dortmunder Hauptbahnhof, damit ist das Ziel der Reise erreicht.

Zurück geht es dann mit RB und RE zum Ausgangspunkt in Krefeld.

Fazit: Ein ganz besonderes Abenteuer. Man lernt das Ruhrgebiet besser kennen, sieht Industriebrachen und Neubauprojekte, schöne und weniger schöne Innenstädte, Menschen aus allen Gesellschaftsschichten.

Ich bin froh, diese Fahrt gemacht zu haben – als „Once in a lifetime“.

In Gradle: Python liest Excel-Sheet

Die Aufgabe war: Ein Python-Script soll Daten aus einer Excel-Tabelle, also einer xlsx-Datei lesen. Dieses Python-Script wird als Task in Gradle aufgerufen.

Python und pip (pip ist sowas wie der npm für Python) kann als installiert vorausgesetzt werden, spezielle Libraries aber nicht.

Verwendete Tools

Alles kein Problem, wenn man die richtigen Werkzeuge einsetzt:

  • Um die richtigen Module zu laden und Python zu starten, lässt sich in gradle das gradle-use-python-plugin verwenden.
  • Unter den zahlreichen Bibliotheken, die Excel-Sheets in Python lesen, habe ich mich für openpyxl entschieden.

Die build.gradle

Zunächst muss gradle natürlich das plugin kennen:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'ru.vyarus:gradle-use-python-plugin:2.3.0'
    }
}
apply plugin: 'ru.vyarus.use-python'

Dann muss mit Hilfe von pip das openpyxl geladen werden:

python {
    pip 'openpyxl:3.0.10'
}

Und schließlich muss das Python-script in der richtigen Weise aufgerufen werden, beispielsweise so:

task callSomePythonScript(type: PythonTask) {
    group 'other'
    description 'call a python script'

    File script = file "scripts/doWhatHasToBeDone.py"
    command = [script, "argument1", "argument2" ]
}

Das python-Script

Jetzt kann in python problemlos auf die Daten im xslx-File zugriffen werden. Erst der Import:

import openpyxl

und dann der Zugriff (in diesem Beispiel ist nur die dritte Spalte relevant):

def read_excel_file(excel_file):
    # Check if file exists
    if excel_file is not None and exists(excel_file):
        workbook = openpyxl.load_workbook(excel_file)
        worksheet = workbook.active

        # Iterate the loop to read the cell values
        for row in worksheet.iter_rows():
            doc = row[2].value
            if doc is not None:
                print(doc)
    else:
        print("File not found")

HHKB und Linux – mit Umlauten

Eigentlich eine Selbstverständlichkeit, aber das HHKB lässt sich auch unter Linux ohne Probleme verwenden. Alle Tasten funktionieren, auch die auf der Vorderseite der Tasten aufgedruckte Funktion, die über ‚Fn‘ abgerufen wird – z.B. ‚Fn-5‘ für F5 und ‚Fn-K‘ für ‚Home‘.

Beispielswiese kann ‚Fn-Esc‘ wie aufgedruckt als „Power“-Taste dienen — und ruft bei mir den „Herunterfahren?“-Dialog auf.

Das Verhalten der Tastatur lässt sich über kleine Schalter (DIP-Schalter) auf der Unterseite beeinflussen. Ich selber verwende dabei die Einstellung ‚011100‘. Das heißt:

  • (Schalter 1 und 2) Mac-Modus: Dadurch sind die ‚Multimedia‘-Tasten verwendbar, z.B. für die Lautstärke. Das funktioniert mit meinem „Mint“-Linux ohne weitere Konfiguration.
  • (Schalter 3): Die „Delete“-Taste wird zum ‚Backspace‘ — auf Deutsch ‚Rückschritttaste‘. Dafür wandert das Delete auf Fn-Backtick. Das ist die Taste rechts oben auf dem HHKB.
  • (Schalter 4): Die linke Raute-Taste — auf dem Mac wäre das ‚Command‘ — wird zur zweiten Fn-Taste. Recht praktisch, dadurch gibt es mehrere Möglichkeiten, Fn-Kombinationen einzugeben. Die rechte Raute-Taste ist und bleibt Menu-Taste, öffnet also z.B. das System-Menu.

Eine weitere Folge des Mac-Modus: Auch die „Eject“-Taste liefïert einen Keycode (das lässt sich mit ‚xev‘ leicht überprüfen), und da „Eject“ für mich keine sinnvolle Verwendung hat, habe ich eine andere Funktion mit dieser Taste verknüpft: Das Öffnen eines Editors (GVim natürlich) für schnelle Notizen.

Genauso habe ich auch ‚PSc‘ und ‚Pus‘ für meine Zwecke angepasst – für Screenshots (ich verwende dafür ‚Flameshot‚) und Taschenrechner. Beide Zuweisungen lassen sich in Linux (bei mir Mint Cinnamon) über die Oberfläche setzen.

Die richtige Tastaturbelegung

Um mit dem HHKB auch Umlaute und andere Sonderzeichen wie €, ß und § schreiben zu können, kann ich diese Tastaturbelegung nur empfehlen: EurKEY, die für Linux, aber auch Windows und OSX verwendet werden kann.

Sonderzeichen lassen sich zusammen mit der rechten ‚Alt‘-Taste (auf deutschen Tastaturen mit ‚AltGr‘ beschriftet) eingeben. Also ‚Alt-u‘ für ‚ü‘, ‚Alt-Shift-a‘ für ‚Ä‘, ‚Alt-s‘ für ‚ß‘, etc. Auch andere in europäischen Sprachen verwendete Zeichen wie æ, è und «» sind vorgesehen:

Das tatsächliche Layout des HHKB weicht von dieser Grafik etwas ab: Die Taste unten links (mit ‚<‚) gibt es nicht, die Taste oben links (‚`‘) ist oben rechts, links daneben ist die Taste aus der dritten Reihe rechts (‚\‘).

Das Happy Hacking Keyboard HHKB

Zugegeben, das HHKB (oder sollte man die HHKB sagen?) ist eine ungewöhnliche Tastatur. Kein Ziffernblock, keine Umlaute, keine separaten Pfeiltasten!

Auf der anderen Seite ist sie dadurch recht klein – keine 30 cm breit – und lässt auf dem Schreibtisch Platz für Maus und Notizblock. Bedingt durch die Größe müssen beim Schreiben die Hände kaum hin- und herbewegt werden – alle Tasten lassen sich schnell erreichen.

mein HHKB: ‚Professional Classic‘ in weiss

Die Pfeiltasten

Meine größte Befürchtung vor dem Erwerb des HHKB war, die Pfeiltasten zur Steuerung des Cursors nicht mehr schnell erreichen zu können. Aber das ist nach einer gewissen Eingewöhnung eigentlich kein Problem. Den kleinen Finger auf die ‚Fn‘-Taste, und dann lässt sich der Cursor fast intuitiv mit Zeige- und Mittelfinger bewegen.

Auch die Tasten zum Seitenblättern (PageUp und PageDown) sowie zum Anfang und Ende einer Zeile lassen sich so gut erreichen.

Zugegeben, mit separaten Tasten für diese Funktionen ist man vielleicht doch ein klein wenig schneller. Das ist natürlich kein Problem, solange man Vim verwendet, aber in anderen Programmen kann es einen Unterschied machen.

Weitere Unterschiede zur ’normalen‘ Tastatur

Die ‚Control‘-Taste ist an die Stelle gerutscht, an der sich sonst die CapsLock-Taste befindet. Die ‚Feststelltaste‘ habe ich nie gebraucht, das ist für mich kein Verlust. Und an die neue Position von ‚Strg‘ gewöhnt man sich schnell, ich finde es sogar einfacher als bisher, beispielsweise Ctrl-C und Ctrl-V zu drücken.

Die Funktionstasten liegen auf den Ziffern – man muss eben Fn-F5 statt F5 eingeben. Kein größeres Problem. Kombinationen erhalten auch eine Taste mehr: Fn-Ctrl-Alt-F7 statt Ctrl-Alt-F7.

Das Verhalten der Tastatur lässt sich in einem gewissen Rahmen über Dip-Schalter auf der Rückseite der Tastatur beeinflussen. Es gibt eine Delete-Taste, die zusammen mit Fn zur Backspace-Taste wird. Über einen solchen Schalter kann aber Delete zu Backspace werden. (Details: hier)

Das Schreibgefühl

Das HHKB ist mit Topre-Schaltern aus japanischer Produktion ausgestattet. Topre-Schalter lassen sich weder den RubberDome- noch den mechanischen Tastaturen zuordnen, sie stehen irgendwo dazwischen. Entscheidend ist das angenehme Tippgefühl, wenn man auf die Tastatur schreibt, zum Beispiel diesen Text. Das ist sicher individuell, aber ich kann auf dieser Tastatur schnell und mit vielleicht weniger Tippfehlern schreiben. Die Lautstärke ist okay, superleise ist das HHKB aber nicht.

Auf einer Topre-Tastatur zu schreiben, lässt sich nur schwer mit mechanischen Tastaturen vergleichen. Am ehesten entspricht sie vielleicht einer Cherry-Brown Tastatur.

Jetzt mit WordPress

Gut 20 Jahre nach der ersten Version dieser Homepage habe ich umgestellt auf WordPress. Frühere Versionen wurden noch mit Apache Forrest erstellt, einem Tool zur Generierung statischer Webseiten. Apache Forrest ist inzwischen offiziell „retired“. Leicht zu warten waren die damit erzeugten Seiten nie, das geht mit WordPress deutlich einfacher. Ein wenig Erfahrung mit diesem CMS konnte ich bei der Wartung der Homepage des www.uerdingerrc.de sammeln.

Jetzt kommt nur die Aufgabe auf mich zu, diejenigen Seiten, die immer noch relevant sein könnten, auf WordPress zu übertragen.