Wiki:Treiber-Know-How

Version 21 (geändert von nora, vor 10 Jahren) (Diff)

Windows-Teil umstrukturiert, KeyTweak aufgenommen (auch wenn's eigentlich unnötig ist, DDK ist viel besser...)

Treiber-Know-How

Auf dieser Seite sollen Interna der Treiberentwicklung festgehalten werden. Mit welchen Programmen lassen sich die Treiber bearbeiten, welche Möglichkeiten sind schon getestet worden, was kann in der Zukunft noch probiert werden?

Auch Sackgassen sollten dokumentiert werden, damit nicht die nächsten wieder reinlaufen!

Natürlich kann diese Seite auch denjenigen helfen, die sich ihre Treiber individuell anpassen wollen. Dafür gibt es wohl vor allem zwei Gründe:

  • spezielle Bedürfnisse, die in der allgemeinen Referenz nicht berücksichtigt werden können
  • spezielle Hardware, die Anpassungen nötig macht

Siehe zu beidem auch Varianten.

Windows

Für Windows gibt es momentan zwei Neo-Treiber. Infos zur Einrichtung der Treiber gibt es auf einer Extraseite.

kbdneo

kbdneo ist ein „richtiger“ Treiber, der direkt die Tastendrucke der Tastatur empfängt. Leider kann er bislang noch nicht alle Funktionen der Referenz umsetzen. Diese können mit einem AHK-Skript nachgerüstet werden.

Für die Entwicklung des kbdneo-Treibers wird momentan das Driver Development Kit verwendet. Als M3 wurde intern die Kombination Alt+Ctrl verwendet, für M4 der japanische Kana-Modifier.

Im »DDK-Programmordner«\src\input\layout\ gibt es einige Beispiele. Ein guter Texteditor reicht für die Bearbeitung der Dateien. Kompiliert wird der Treiber durch Eingabe von ‚build‘ im Ordner der Quellcodedateien in dem ‚Build Environment‘. (Für weitere Infos: Florian Janßen fragen.)

Neovars

Neovars ist in der Skriptsprache Autohotkey geschrieben. Dies ermöglicht die komplette Umsetzung der Referenz (und noch mehr). Die Skripte sowie die fertig kompilierte exe-Dateien lassen sich ohne Administratorrechte ausführen. Allerdings kann mit dieser Herangehensweise kein echtes Tastaturlayout realisiert werden, da die Tastendrucke lediglich abgefangen und umgewandelt werden, was zu ganz eigenen Problemen führt.

Der aktuelle AHK-Treiber ist Neovars, der auch aktiv weiterentwickelt wird. Es gibt ausführliche Hinweise für Nutzer wie Entwickler.

Die letzte Version vor der Neuimplementierung steht im SVN für Entwickler zu Testzwecken zur Verfügung. Dieser Treiber sollte aber nicht mehr verwendet werden.

Weitere Programme

Es gibt noch einige andere Programme, mit denen ebenfalls die Änderung des Windows-Tastaturlayouts möglich ist. Sie sind jedoch den oben beschriebenen aus verschiedenen Gründen unterlegen:

  • MSKLC: Dieser ergibt wie der DDK ein „echtes“ Tastaturlayout, ermöglicht jedoch nur die ersten drei Ebenen. Wurde für Neo1 verwendet, inzwischen jedoch vom DDK (siehe dort) abgelöst.
  • KbdEdit: Ein vielversprechendes Programm zur Erstellung von Tastaturlayouts. Doch da nicht nur die Entwicklerversion Geld kostet, sondern auch das fertige Layout nur mit dem kostenpflichtigen Player verwendet werden kann, kommt es für Neo leider nicht in Frage.
  • KeyTweak: Greift direkt in die Registry ein und ermöglicht so nicht das Umschalten zwischen Neo und qwertz. Kann aber z.B. CapsLock dauerhaft zu AltGr ändern.

Linux

Hier ist die Einrichtung von Neo unter Linux beschrieben.

Die Linux-„Treiber“ sind reine Textdateien, lassen sich also mit dem Editor bearbeiten. Interessant sind also vor allem Probleme, die beim Bearbeiten aufgetaucht sind.

Falls Linux mit einer Mac-Tastatur betrieben werden soll (adb, z.B. Installation auf einem iBook), gibt es wohl Probleme, CapsLock umzubelegen. Dazu ist ein Patch (macintosh-mangle-caps-lock-events-on-adb-keyboards.patch) notwendig, der einen Eintrag /proc/sys/dev/adbhid/mangle_caps_lock_events hinzufügt (siehe dazu hier und hier). Dieser Patch befand sich auch eine Weile im ­mm Zweig des Kernels, ist aber inzwischen wieder rausgeflogen.

Xmodmap

Zur Info die allgemeine Man-Page zur Xmodmap, sowie eine deutsche Seite aus dem Ubuntu-Wiki.

Xkbmap

Drei Ressourcen, die beim Entwickeln von xkb helfen können:

Es wurde viel diskutiert, wie der Name des Layouts in den Treibern und im X-Server sein soll. Für die Aufnahme in den offiziellen X-Server muss das Layout »de_neo« heißen, im X-Server wird also „neo“ als Option des Layouts „de“ ausgewählt.

Mac OS

Hier gibt’s die allgemeinen Infos zur Einrichtung von Neo auf einem Mac.

Eventuelle Alternativen zum neo.keylayout:

  • Wird ein X-Server installiert, sollte sich auch eine Xmodmap laden lassen. Ohne Anpassung der Xmodmap ergibt das aber die Fehlermeldung: „xmodmap: ./neo_de.xmodmap:88: bad keysym in remove modifier list. 'ISO_Level3_Shift', no corresponding keycodes“. D.h. wohl, dass der keycode von Alt/Option anders ist als der von AltGr?
  • Vielleicht wird es irgendwann auch eine Dotnet-Implementierung für AHK geben, dann könnte man auch den AHK-Treiber am Mac benutzen (die Meldung dazu).

neo.keylayout

Es ist nicht schwierig, die Datei neo.keylayout zu bearbeiten, da Apple sich hier für das Mensch- wie Maschinenlesbare XML-Format entschieden hat.

  • code gibt die Nummer der Taste an, durch deren Drücken man das dahinter geschriebene Zeichen erhält.
  • Nach Tasten mit action wartet der Computer auf eine zweite Eingabe.
  • Welches Zeichen man durch die Kombinationen erhält, kann man am Ende der Datei unter actions definieren.
  • Weitere Infos gibt’s in einer Technical Note.

Ukelele ist ein sehr guter Keyboardlayouteditor für Mac, sowohl was Handhabung als auch Dokumentation angeht. Dies ist komfortabler, als die XML-Datei mit einem normalen Texteditor zu bearbeiten.

Modifier: Neo verwendet die „Alt-/Optionstaste“ als M3, also ist Ebene 3 mit „Alt/Option“, Ebene 5 mit „Alt/Option“+„Shift“ erreichbar.
In den Systemeinstellungen verbirgt sich unter „Tastatur & Maus“ das „Sondertasten-Menü“. Dort können CapsLock, Ctrl, Alt/Option/Wahltaste und Apfel/Befehlstaste neu belegt werden.
# und < lassen sich dort jedoch nicht als Modifier belegen, sie tun unter Neo also gar nichts. Und da auch keine zusätzlichen Modifier erstellt werden können, lassen sich Ebene 4 und 6 (noch?) nicht erreichen.
Deshalb ist es wohl am sinnvollsten, Capslock zu einer zweiten „Alt/Option“-Taste zu ändern, um zweimal M3 zur Verfügung zu haben. Eventuell kann es auch sinnvoll sein, die Apfel-Taste intern mit der Alt-Taste zu vertauschen, um M3 (rechts) besser erreichen zu können.

Im Zusammenhang mit der Umbelegung CapsLock → M3 wurden mal die Programme fKeys oder uControl genannt, die jedoch beide nicht mehr weiterentwickelt werden. Weiterentwickelt wird dagegen DoubleCommand, vielleicht lässt sich damit M4 realisieren? 2 Ideen dazu:

  • Vielleicht lässt sich neben Alt/Option auch die Kombination Option+Ctrl belegen (analog zu AltGr)? Das müsste dann noch auf einer Taste lokalisiert werden...
  • Oder strenges Trennen zwischen OptionLinks und OptionRechts, das eine wird zu M3, das andere zu M4.

Symtrion hat sich eine Zeit lang mit dem Thema »Neo und Mac« auseinandergesetzt und dazu hier eine Menge Informationen gesammelt. Allerdings scheint da nicht mehr viel übrig zu sein.

Compose

Zur Aufnahme oder Änderung von Compose-Kombinationen muss die Datei SVN/Compose/Compose.neo um die entsprechenden Einträge ergänzt werden. Diese UTF-8-Datei ist im Standard-Compose-Format für Linux geschrieben. Die Compose-Funktion unter Windows (beispielsweise die des NeoVars) wird hieraus automatisch generiert.

Die Coko ♫|C=ℂ sähe beispielsweise so aus:

<Multi_key> <bar> <C> : "ℂ" U02102 # DOUBLE-STRUCK CAPITAL C

Dabei steht…

  • <Multi_key> für ♫,
  • <bar> für | (symbolischer Linux-Name in ASCII),
  • <C> für C (auch ASCII ;-)),
  • "ℂ" für die Ausgabe (diesmal als /echtes/ Unicode-Zeichen zwischen den Anführungszeichen),
  • und alles hiernach ist ein Kommentar, und zwar
    • der eindeutige Unicode-Codepoint U02102 der Ausgabe,
    • und die offizielle Unicode-Beschreibung dieses Zeichens: # DOUBLE-STRUCK CAPITAL C.

Die offiziellen Beschreibungen und Codepoints können in der Unicode-Referenz nachgeschlagen werden. Bei umfangreichen systematischen Ergänzen ist es sinnvoll, die Cokos zur Arbeitsersparung mit einer Tabellenverarbeitung zu erstellen, oder ein entsprechendes Skript zu erstellen.

  • Bei Kombinationen mit Zahlen die KP_-Zahlen nicht vergessen!
  • Wieso setzt man sowohl <underbar> als auch <underscore>?
    • Einige Programme (z.B. gucharmap) reagieren auf beide unterschiedlich, bei Neo wird aber nur underscore benutzt. Da es in der Standard-Compose stets beide Definitionen gibt, wurde das bislang so beibehalten, auch wenn die underbar-Definitionen höchstwahrscheinlich nie gebraucht werden werden.
  • Funktionieren auch Angaben der Form <Multi_key> <U1234> <∀>?
    • Unter Linux definitiv nicht. Darum sollten wir bei der bisherigen Lösung bleiben, die vielleicht für Entwickler umständlicher ist, aber dafür problemlos funktioniert.

Neo einrichten

Zur Hauptseite