keyboard-de Treiber

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!
Benutzeravatar
oog
Beiträge: 103
Registriert: Do 30. Jul 2009, 14:12
Kontaktdaten:

keyboard-de Treiber

Beitrag von oog »

Treiber für deutsches Tastatur-Layout

Da der Tastaturtreiber des Hive nicht komplett das deutsche Layout unterstützt und ich auch im Internet nichts passendes finden konnte :? , habe ich den vorhandenen Treiber etwas gepatcht. :)
Es enthält nun zwei Zeichentabellen für die Tastatur mit und ohne Shift-Taste. Alt-Gr wird derzeit noch nicht unterstützt.
Zur besseren Unterscheidung zum Original-Treiber habe ich dem Dateinamen ein "-s" hinzugefügt.
Beim ersten kurzen Test liefen einige Programme, der Startracker jedoch leider nicht. :shock:

Ich lade ihn trotzdem schonmal hoch, damit Ihr selbst testen könnt. :B3

Da ich zwei Zeichentabellen für normal / mit Shift eingebaut habe, sollte die Anpassung an andere Tastaturlayouts (z.B. C64) etwas einfacher sein. :B4

PS.
Wer sich mit Assembler befasst, sollte einem cmp-Befehl entsprechend die unscheinbaren Kürzel wc oder wz hinten anstellen. Dies kann eine lange Fahlersuche ersparen. :oops:

Grüße, oog

[Edit]
Achtung - die beiliegenden Dateien sind veraltet. Bitte nicht mehr verwenden.
Dateianhänge
os-1-bel-bios-de-s.binary
Bios mit Treiber als Binärfile
(3.59 KiB) 505-mal heruntergeladen
os-1-bel-bios.spin
Bellatrix Bios (Nur der Name des eingebundenen Tastaturtreibers wurde geändert)
(33.24 KiB) 493-mal heruntergeladen
os-1-bel-keyb-de-s.spin
Tastaturtreiber
(52.51 KiB) 499-mal heruntergeladen
Zuletzt geändert von oog am So 6. Sep 2009, 13:03, insgesamt 1-mal geändert.
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: keyboard-de Treiber

Beitrag von drohne235 »

Sehr schöne Sache, sobald ich Zeit habe schau ich mir das mal an. Wenn ich ehrlich sein soll habe ich die Tabelle in dem originalen Treiber nicht wirklich verstanden, weshalb ich auch ziemlich wild drin rumgepatcht hab um wenigstens einige wichtige Zeichen irgendwo auf die Tastatur zu legen. Hast du rausbekommen wie die Tabellen genau aufgebaut sind? Ich komme grad nicht zum testen, deshalb die Frage: Belegt dein Treiber das deutsche Tastaturlayout korrekt wie aufgedruckt auf einer Standardtastatur?
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
oog
Beiträge: 103
Registriert: Do 30. Jul 2009, 14:12
Kontaktdaten:

Re: keyboard-de Treiber

Beitrag von oog »

Hallo Drohne,

im original gibt es eine große Tabelle (table), die jedem Scancode der Tastatur das entsprechende ASCII- oder Steuer-Zeichen zuordnet.

Die Umwandlung in Großbuchstaben macht folgender Code:

Code: Alles auswählen

                        cmp     data,#"z"+1     wc
        if_c            cmpsub  data,#"a"       wc
:shift  if_c            add     data,#"A"
Außerdem sind da noch die Tabellen "keypad1/2" und "shift1/2", welche die Zeichen des Ziffernblock und im wesentlichen die Zeichen über den Tasten "1,2...9,0" ersetzen.

Die Umwandlung in Großbuchstaben sowie die "shift" tabelle habe ich gegen eine große Tabelle mit einen Eintrag für jede Taste ersetzt.
Dies ist wartungsfreundlicher und ermöglicht eine einfachere Anpassung an andere Layouts. Eine verständliche Tabelle ist einfacher zu Ändern als Programmcode.

Einige Zeichen in der Tabelle dienen als Steuerzeichen für Shift, CapsLock u.s.w. Insbesondere die Codes ab $f0 haben eine besondere Bedeutung, weshalb ich die Zeichen "ö" und "ü" nicht einfach so in die Tabelle schreiben konnte. Sie liegen im Hive-Zeichensatz genau in diesem Bereich.

Im Gegensatz zur original-Tabelle, die 16Bit Werte zurückliefert, verwende ich nur 8 Bit je Zeichen. Daher ist der Rückgabewert bei CTRL, ALT, Windows-Taste etc. unterschiedlich bzw. muss noch ergänzt werden.

Die Steuerung der Kommandozeile und "Backspace" funktioniert und - für mich wichtig - jede Taste liefert, was aufgedruckt ist.
Die Sonderzeichen in Kombination mit Alt-Gr sind noch nicht implementiert.
Steuertasten müssen wohl auch noch überarbeitet werden.

Die Funktionstasten sind mit den Codes $90-$9b belegt.
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: keyboard-de Treiber

Beitrag von drohne235 »

Jetzt hab ich es doch mal kurz probiert - super Arbeit! :mrgreen: Und sieht jetzt auch verständlich und übersichtlich im Quelltext aus.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
Benutzeravatar
oog
Beiträge: 103
Registriert: Do 30. Jul 2009, 14:12
Kontaktdaten:

Re: keyboard-de Treiber

Beitrag von oog »

Ich habe den Tastatur-Treiber nochmal, basierend auf dem Original-Treiber von Parallax, überarbeitet.
Die Tabellen enthalten nun, wie die Vorlage, 16 Bit Werte, da einige Scancodes doppelt belegt sind und diese sonst nicht funktionieren.

Ich konnte es nur ganz kurz testen.

Gibt es ein Testprogramm (außer "keycode"), das den Status der Umschalttasten anzeigt und mit dem man testen kann, ob die Cursor-Steuerung korrekt funktioniert?

Feedback, insbesondere Probleme mit dem Treiber bitte hier melden.

Gruß, oog

[Edit]
Achtung - die beiliegenden Dateien sind veraltet. Bitte nicht mehr verwenden.
Dateianhänge
Keyboard-de.spin
Der Treiber
(77.53 KiB) 508-mal heruntergeladen
Zuletzt geändert von oog am So 6. Sep 2009, 13:03, insgesamt 1-mal geändert.
Benutzeravatar
oog
Beiträge: 103
Registriert: Do 30. Jul 2009, 14:12
Kontaktdaten:

Re: keyboard-de Treiber

Beitrag von oog »

Hier noch die Anleitung, wie man den Treiber einbindet und ein eigenes BIOS compiliert.

1. Den Treiber "Keyboard-de.spin" in das OS-Verzeichnis kopieren, bei mir ist es "os1-05-06-2009-kr\"

2. Im Propeller-Tool den BIOS-Quellcode von Bellatrix laden "os-1-bel-bios.spin"

3. Im Quellcode an der Stelle

Code: Alles auswählen

OBJ
  vga        : "os-1-bel-vga1024"
  keyb       : "os-1-bel-keyb-de"
die Zeile keyb ändern in

Code: Alles auswählen

  keyb       : "keyboard-de"
4. Mit F11 compilieren und in Bellatrix flashen (DIP-Schalter entsprechend einstellen)

5. Deutsches Tastaturlayout testen :)
DJLinux

Re: keyboard-de Treiber

Beitrag von DJLinux »

Wenn z.B. bei der Betriebssystemsentwicklung mal nicht der Bus für die Heartbeat LED genutzt werden soll/kann oder man sonst eine visuelle Rückmeldung braucht dann kann man auch die 3 Keyboard LED's dafür "missbrachen".

Ich habe mich intensive in das Funktionsprinziep dere AT Tastatur und dessen 3 Set's eingelesen und werde mal versuchen einen eigenen Treiber zu schreiben.

Klar kann man auch einfach fertige Objekte nehmen aber ich möchte auch gerne wissen wie was wirklich funktioniert. Die größte Hürde beim lesen des Quellcodes anderer Objekte liegt für mich meistens in dem fehlenden Verständniss für die vielfältigen Timermodes.

Daher habe ich mal die Timer Note's ausgedruckt und werd die verschiedenen Modis mal mit einem neuen Propeller Chip auf dem Steckbrett "durchspielen" und erst dann hoffentlich gewinnbringend auf dem HiVe einsetzen.

Grüsse Joshy
Benutzeravatar
oog
Beiträge: 103
Registriert: Do 30. Jul 2009, 14:12
Kontaktdaten:

Re: keyboard-de Treiber

Beitrag von oog »

Der Tastaturtreiber ist - soweit ich testen kann - jetzt fertig.
Nun werden auch die Zeichen in Verbindung mit AltGr unterstützt, die deutsche Tastaturbelegung ist damit vollständig.
Als kleines Extra habe ich einige Liniensymbole auf die Funktionstasten in Verbindung mit AltGr gesetzt.

Es gibt nun drei Tabellen im Treiber:
1) Tasten einfach
2) Tasten mit Shift
3) Tasten mit AltGr

Eigene Anpassungen werden damit sehr einfach und übersichtlich.

@Drohne:
Leider kann ich mit den zum Download stehenden Quellen
  • "Quelltexte von den drei BIOS-Dateien, diversen Tools und dem Kommandozeileninterpreter
    Version: 05-06-2009-kr vom: 05.06.2009"
kein aktuelles BIOS generieren. Offensichtlich sind die Quellen älter als die BIOS-Versionen der SD-Karte.

Beim Bellatrix-BIOS Quellcode ist der VGA-Treiber direkt eingebunden, während das Bellatrix-BIOS der SD-Karte den Grafiktreiber von SD-Karte lädt. Leider funktionieren nicht alle Programme, wenn ich das BIOS aus den Quellen selber kompiliere. Daher kann ich leider nicht alles testen.

Könntest Du bitte die Quellen der aktuellen BIOS-Version zum Download zur Verfügung stellen? Dann kann ich weiter testen.

Der Test mit "keycode" sieht soweit gut aus.

[Edit]
Achtung - die beiliegenden Dateien sind veraltet. Bitte nicht mehr verwenden.
Dateianhänge
Keyboard-de.spin
Version vom 5.9.2009
(89.48 KiB) 488-mal heruntergeladen
Zuletzt geändert von oog am So 6. Sep 2009, 13:04, insgesamt 1-mal geändert.
Benutzeravatar
drohne235
Administrator
Beiträge: 2284
Registriert: So 24. Mai 2009, 10:35
Wohnort: Lutherstadt Wittenberg
Kontaktdaten:

Re: keyboard-de Treiber

Beitrag von drohne235 »

Ich hab die Quellen mal aktualisiert. Der ältere Treiber von dir (ohne die Sonderebenen) ist da schon eingebunden und funktioniert. Ich hatte aber nicht alle Programme getestet. Welche Sachen funktionieren da noch nicht?

Bei Zeiten muss ich eh mal die Quelltexte ein wenig umsortieren, das gefällt mir so nicht wirklich und ist etwas unübersichtlich - gerade wenn da mehrere dran arbeiten.
"Ob Sie denken, dass Sie es können, oder ob Sie denken, dass Sie es nicht können - in beiden Fällen haben Sie recht." Henry Ford
BorgKönig
Beiträge: 598
Registriert: So 24. Mai 2009, 11:24

Re: keyboard-de Treiber

Beitrag von BorgKönig »

Wie währe es mit ein SVN Server...?
Antworten