
Keyboard- und Tastencodes
15 Apr 2023 ⌨A
bis Z
und 0
bis 9
wird von jedem OS auf
ASCII
bzw. Unicodezeichen abgebildet.
Das gilt auch für die Konsole.
Aber wie bekommt man z.B. Pfeiltasten per read(stdin)
geliefert?
Liebes BLOG Tagebuch!
Man sagt:
Was wir wissen, ist ein Tropfen, was wir nicht wissen, ist ein Ozean.
(von Isaac Newton oder aus
Dark)
Ich muss heute also noch sehr viel trinken. 😉
Diese Seite benutzt KEINE Cookies! Wozu auch?
Hier geht es NICHT um Browser-Kekse, Werbung und Spionage, SONDERN um Programmierung, Hardware, Software und was mir sonst noch so passiert ist, damit ich in 10 bis 20 Jahren eine Erinnerungshilfe an meine momentanen Erlebnisse parat habe.
A
bis Z
und 0
bis 9
wird von jedem OS auf
ASCII
bzw. Unicodezeichen abgebildet.
Das gilt auch für die Konsole.
Aber wie bekommt man z.B. Pfeiltasten per read(stdin)
geliefert?
Mein aus dem Jahr 2005 stammende HP NX6310 Laptop lebt noch immer, fristet aber sein Dasein auf der Reservebank.
Und ich dachte mir: Nachdem man nicht mal mit einem Raspberry PI 3 heute vernünftig “ins Internet” gehen kann, klappt das mit einem 1.4 GHz Single-Core Celeron erst recht nicht.
Doch man staune: Debian macht es möglich.
Ich mag Funktionen mit Timeouts, denn mit denen kann man “kalkulieren”, während andere ewig blockieren können.
Folglich baue ich auch selbst gerne solche ein.
Doch … was ist, wenn man unendlich auf ein Ereignis warten will?
Wenn Programme andere Programme starten sollen, stellt sich die Frage:
Wie?
Die C Standard Bibliothek
beantwortet das leider sehr unzufriedenstellend, doch trotzdem basieren
viele Lösungen auf dem alten
system("myprog arg1 arg2")
Schema.
Und da kann man leider auch viel falsch machen.
Die Defragmentierung von Festplatten war früher eines der schönsten Schauspiele, die ein DOS oder Windows PC mit sich brachte.
Heute ist sie in Vergessenheit geraten, obwohl im Hintergrund immer noch stückweise “optimiert” wird.
Aus API Sicht waren Windows 95, 98 und ME für mich so ziemlich das gleiche, nämlich ein reduziertes Set von NT4. Die Frage war damals also:
Ist etwas kompatibel mit “NT4” oder “nur 9x”.
Doch … Windows 95 war stets “weniger”, der Support wurde schnell fallen gelassen als 98 auf den Markt kam … und heute verstehe ich erst, warum das so war.
Ich bin 2018 nur deshalb zu Bitbucket
gegangen, weil man dort kostenlose private
Repos
anlegen konnte.
Erst ein Jahr später zogen Github
und andere nach, doch einen Grund zur Migration gab es für mich keinen.
Mit Codeberg ist in Deutschland ein offener und kostenloser Git-Hoster aufgetaucht, der mich aber über einen Umzug nachdenken lässt:
Der Code liegt auf Servern in der EU … also “bei Freunden”.
Aliexpress wurde für mich “attraktiv”, als es von Kreditkartenzahlungen zu PayPal wechselte. (Das muss Ende 2019 passiert sein.)
Doch seit dem 1. Januar 2023 ist Österreich von der größten Handelsplattform für Bauteile für Baster ausgeschlossen … und es wird einfach nicht besser.
Bisher habe ich im GATE Projekt versucht, die herauskommenden Programme
als größere “Universalwerkzeuge” anzulegen.
Doch das war falsch … oder sagen wir mal: Es ist nicht der beste Weg.
Denn jenseits der Windows und Linux Welt gelten teilweise andere Regeln und die möchte ich auch gerne einhalten.
Während Kate rebelliert, Leo stirbt und Céline von “near” und “far” singt (siehe Titanic), überlege ich gerade, wo ich überall “spezielle” Pointerattribute unterbringen muss.
Na … da blutet fast das Herz des Ozeans …
Retro-Time!
Beim Aufräumen meiner Backups ist mir wieder ein altes
NT-4 ISO-Image
untergekommen, welches neben Windows NT Varianten auch
Windows 95 enthielt,
und zwar eine englische Version.
Da ich aus meiner Vergangenheit nur deutsche Versionen aufgehoben hatte, startete ich spaßhalber das Setup in einer VM … Doch das brach mit einer Upgrade-Fehlermeldung ab.
Sind in für DLLs exportierten C++ Klassen unter Windows Datentypen enthalten, die auf Templates aufbauen, sieht man schnell den Fehler:
1warning C4251: ... needs to have dll-interface ...
Doch den bekommt man gar nicht so leicht weg, wenn man portabel bleiben möchte.
Bei meinem Rust-Kurs hat mich eine Aussage während des Vortrages gestört:
C++ erzeugt oft schlechten Maschinen-Code mit Trampolines.
Das ist etwas weit hergeholt.
Bei mir lagen heute zwei Dateien in /etc/audit/rules.d
.
Wenn in der zweiten alle Regeln auskommentiert wurden, funktionierte
auditd zumindest mit den Regeln
der ersten Datei.
Kaum wurden die Regeln in der zweiten Datei aktiviert, funktionierte gar
nichts mehr.
Und wieder einmal habe ich einen Tag Lebenszeit verloren …
Der Zugriff auf Disketten
(und die ersten Festplatten) war bereits mit dem originalen IBM
BIOS möglich, denn der
INT 13h bot einige Dienste,
wie etwas das Lesen und Schreiben einzelner Sektoren.
Das brauchte das BIOS auch selbst, um das OS booten zu können.
Watcom (und andere historische Compiler)
stellen für diesen Systemaufruf die C-Funktion _bios_disk()
zur Verfügung.
opengate.at
.