Archiv des Monats Oktober 2004

Tastaturen mit Spezialtasten nutzen

Dieser Beitrag stammt aus meinem alten Blog und wurde nachträglich übertragen. Etwaige Links auf alte Blogeinträge wurden angepasst.

Meine neue Tastatur hat, wie das besonders bei kabellosen gerne so ist, auch einige Spezialtasten. Diese wollte ich gerne unter Linux nutzen, und nachdem das tolle Programm (lineak), welches das eigentlich können sollte, nicht funktioniert hat und wenn ich das nicht falsch verstanden habe eh nur unter X funktionieren kann, hab ich mich gestern über andere Möglichkeiten informiert.

Dazu zählt, ganz einfach die Scancodes, die diese Tasten wie die normalen auch produzieren, entweder in spezielle Anweisungen (auf die nächste Konsole wechseln z.B.) oder in andere Tastendrücke (oder auch ganze Folgen von Tastendrücken) umzuwandeln. Das klappt dann allerdings nur auf der Konsole.

Alle folgenden Schritte sollte man als root und möglichst auch and der Konsole durchführen, nicht unter X.

Zunächst braucht man die Scancodes. Dafür ruft man showkey -s auf. Das zeigt direkt die Scancodes aller Tastendrücke an. Dabei gibt es (meist) jeweils einen Code, der beim Drücken ausgelöst wird (und auch beim Halten der Taste, immer wieder wiederholt wird) und einen Code beim Loslassen. Interessieren dürfte meist nur der zum Drücken, auch wenn es vielleicht Fälle gibt, wo man beides benutzen kann. Die Ausgabe zeigt z.B. 0xe0 0x30 an, wenn man eine Taste drückt. Der Scancode ist dann e030. (Nicht wie ich in Panik geraten, dass man showkey nicht wieder beendet bekommt – einfach 10 Sekunden warten. Das steht auch da, wenn man das Programm startet, aber man überliest es schnell…)

(Edit: Ich habe ein seltsames Phänomen gefunden – zwei der Spezialtasten („Favoriten“ und „E-Mail“) haben bei meiner Tastatur dieselben Scancodes wie die linke bzw. rechte Windows-Taste. Wie die je unterschieden werden sollen, ist mir ein Rätsel. Schickt der da noch mehr mit, das showkey nicht sehen kann? Oder kann die Tastatur gar umprogrammiert werden? Die Tastatur hat auch eine Taste, um F1 bis F12 für andere Funktionen zu nutzen – dann bekomme ich garkeinen Scancode von diesen Tasten. Ob das irgendwie zusammenhängt?)

Mit dumpkeys | less zeigt man sich nun die Liste der Zuweisungen an. In meinem Fall waren die Keycodes 120-127 unbenutzt, was mir genau die 8 Positionen gibt, die ich brauche. Je nach Konfiguration können auch sehr viel mehr verfügbar sein.

Jetzt muss man einem freien Keycodes einen der Scancodes zuweisen, die man vorher besorgt hat. In meinem Fall für die „Volume +“ Taste ist das
setkeycodes 121 e030

Die folgenden Anweisungen schreibt man am besten in eine Datei. Als erstes ein Beispiel, wo dem gerade definierten Keycode ein String zugeordnet wird (ich benutze oft mplayer, wo „0“ die Lautstärke erhöht):

string F121 = "0"
keycode 121 = F121

Hier ein Beispiel für eine andere Möglichkeit – damit kann man durch die Konsolen „blättern“:

keycode 121 = Decr_Console

Das muß man dann noch mit loadkeys < Datei auführen, und Voila, hat man die Tasten einer (hoffentlich) sinnvollen Verwendung zugeführt.

Mehr informationen findet man natürlich in den Manpages der einzelnen Programme, oder in der Ausgabe von dumpkeys – man findet genug Beispiele für alle Möglichkeiten, wie z.B. Boot (das, was Standardmäßig Strg-Alt-Entf zugeordnet ist). Und wenn es alles funktioniert, kann man die nötigen Aufrufe z.B. in der /etc/init.d/boot.local fest einbauen.

Comments off

Emulation: DOS-Emulator dosbox

Dieser Beitrag stammt aus meinem alten Blog und wurde nachträglich übertragen. Etwaige Links auf alte Blogeinträge wurden angepasst.

Eigentlich war ich auf der Suche nach einem C64-Emulator für meinen kleinen neuen LInuxrechner, der mit Framebuffer funktioniert, damit ich C64-Spiele in alter TV-Optik spielen kann. Gefunden habe ich dosbox.

Dieser DOS-Emulator hat es in sich. In Vergleich zum alten dosemu und zu bochs funktioniert das richtig. EMS, Maus, Sound Blaster-Emulation, und sogar VESA BIOS Emulation – alles drin. Ich konnte auf Anhieb so ziemlich jedes alte Spiel, das ich noch habe spielen – TIE Fighter, X-Wing, Ascendancy, SimCity 2000, Transport Tycoon, 4D Sports Driving, Test Drive II, alles läuft.

Sogar Dune 2, was, soweit ich mich erinnere, nie lief, und selbst unter den DOS-Lösungen, die ich nochmal aufgesetzt habe, gerne Probleme machte. Ob es damit zusammenhängt, dass auf der dosbox-Homepage ein Bild des Harkonnen-Mentat aus dem Spiel zu sehen ist? Schon seltsam, ich habe nämlich beim testen ein Harkonnen-Savegame geladen, und genau diesen Knilch gesehen. Zufälle gibts… Aber ich schweife ab.

Aus ein paar bösen Screenshots auf der Homepage kann man ebenfalls sehen, dass ganz offensichtlich Windows 3.x darunter läuft. Ich habe das jetzt nicht genauer überprüft, das kommt später. Vielleicht kann man ja die alten Windows-3.1-Disketten nochmal sinnvoll einsetzen?

Zugegeben, es gibt Probleme – die Grafik ist einfach viel zu langsam (für Tie Fighter zum Beispiel), so dass dann der Sound auch nicht mehr durchgängig geht. Überhaupt muß man mit STRG-F11 und STRG-F12 hantieren, um ein Mittelmaß zwischen Emulations-Geschwindigkeit und Resourcen für Soundmischen, Grafik zeichnen etc. braucht. Aber ganz besonders die VESA-Unterstützung, die ich bisher noch von keinem Emulator kannte, ist wirklich gut.

Das ganze gibt es auch für Windows. Obwohl ja mit VDMSound zumindest für Sound, Joystick und ein paar Dinge eine Lösung für WIndows 2000/XP gibt, um auch ältere Spiele laufen zu lassen, ist das noch eine Ecke besser, auch wenn es langsamer ist. Das, was mit VDMSound nicht laufen will, läuft vielleicht mit dosbox.

Leider bin ich auch auf meiner Kiste im Augenblich noch auf X angewiesen, weil SDL nicht will (beschwert sich über fehlende Maus). Ansonstan würde das auch auf dem Framebuffer laufen. Aber das ist eh nicht so das Problem – die Fernseh-Aufösung reicht eh gerade für die 320×200 Auflösungen, alles darüber ist vertane Zeit.

Comments off

TV-Out mit NVIDIA-Karten

Dieser Beitrag stammt aus meinem alten Blog und wurde nachträglich übertragen. Etwaige Links auf alte Blogeinträge wurden angepasst.

Ich habe auf EBay einen Rechner erstanden, einen Shuttle SK41G mit Athlon XP 1900+, 512 MB RAM, Slot-In DVD-Laufwerk, einer WLAN-Karte und – neben der Onboard-Grafik – eine Grafikkarte mit NVIDIA GeForce 2 TI Chipsatz.

Über meine Abenteuer mit der WLAN-Karte hat Jan berichtet. Jetzt hab ich also eine andere. Die andere große Sache war es, den Rechner zu einem kleinen Multimedia-Player zu machen.

Da er nicht meinen alten Rechner ablösen soll, hab ich keinen Bildschirm frei, also dachte ich mir, ab an den Fernseher. Ist eh praktischer, denn mit dem aktuellen NVIDIA XServer klappt das nie, sowohl TV als auch Monitor fürs Bild zu benutzen. Das Problem war dann überhaupt: ein X ist zu kompliziert. Das nervt nur, wenn man damit einfach nur ein Video sehen will, man braucht (wenn man es wirklich benutzen will) eine Maus. Da lobe ich mir doch den Framebuffer, der für sowas X ja wirklich überflüssig macht.

Das erste Problem: NVIDIA-Karten stehen per Default auf NTSC-Ausgabe. Sprich: mein Fernseher zeigt erstmal nur schwarz/weiß, und selbst das ist nicht gerade bildschirmfüllend. Nach einigem Suchen hatte ich dann nvtv gefunden, ein Programm, mit dem man – auch vom Framebuffer aus – die TV-Ausgabe einstellen kann. Bei 800×600 und entsprechender Schriftart (suse12x22.psfu.gz) kann ich das hier sogar lesen. Auf dem großen Fernseher im Wohnzimmer hab ichs noch nicht probiert.

Bezeichnenderweise nehme ich aber nicht PAL als Ausgabeformat. Da schneidet er mir entweder Teile vom Bild ab (obwohl da auf dem Bildschirm noch Platz wäre), oder lässt endlos schwarze Ränder, je nachdem, welche „Scale“ ich nehme. Also nehme ich PAL-60. Lustig, dass der Fernseher das kann. Ich bekomme, wie unter NTSC, einen seltsamen weißen Strich am oberen Bildrand, aber schöne Farben. Und ich glaube fast, es flimmert weniger als PAL(-50). Das kann aber auch nur ein psychologischer Effekt sein.

Dann kam das Problem, dass das xine, das SuSE mitliefert, nicht auf Framebuffer anzeigen kann. Also musste ich ein halbes Dutzend „-devel“ Pakete installieren und einiges selbst compilieren, bevor ich dann mit fbxine endlich auch Framebuffer-Ausgabe hatte.

fbxine erlaubt leider keine Steuerung der Menüs und Ausgabekanäle bei DVDs, vlc hat irgendwie den DivX/XviD/MPEG4-Support nicht mit drin, und ich komme zum DVD-Spielen noch nicht ganz damit klar. Ich werd mal mplayer auch noch ansehen, aber ansonsten scheint es nur eine Frage der Zeit zu sein, bis meine Multimedia-Maschine wirklich funktioniert…

Comments off