Hallo Forum!
Also ich würde gerne, daß mein curses-Programm (linux) auch auf control-tastenkombinationen reagieren kann (wie z.B. bei emacs c-p für ‚Zeile hoch‘). Nur leider tappe ich da total im dunkeln und wäre für Tipps sehr dankbar.
Hallo Forum!
Also ich würde gerne, daß mein curses-Programm (linux) auch auf control-tastenkombinationen reagieren kann (wie z.B. bei emacs c-p für ‚Zeile hoch‘). Nur leider tappe ich da total im dunkeln und wäre für Tipps sehr dankbar.
hmm
könntest du sowas nicht mit getchar machen ?
wenn du willst kann ich mal meine curses-referenz durchschauen (wäre aber das erstemal … hatte in den letzten paar monaten nicht gerade viel zeit die gekauften fachbücher durchzusehen …
gruss
berni
Also ich würde gerne, daß mein curses-Programm (linux) auch
auf control-tastenkombinationen reagieren kann (wie z.B. bei
emacs c-p für ‚Zeile hoch‘). Nur leider tappe ich da total im
dunkeln und wäre für Tipps sehr dankbar.
hmm
könntest du sowas nicht mit getchar machen ?
nunja, letztenendes stelle ich mir das schon so vor ein char (bzw short) mit getch (also die curses-fkt) zu holen, um dann in einem wunderbaren ‚Monster-Switch‘ die entsprechenden Aktionen einzuleiten…
Zwar kann ich relativ einfach mittels ‚keypad(TRUE)‘ auf Funktionstasten zugreifen, da in ncurses.h einige nützliche #defines dazu existieren (z.B. KEY_UP für die ‚Pfeil-hoch-Taste‘), aber wenn es zu Tastenkombinationen mit Control kommt, scheint es mit der Herrlichkeit zu Ende zu sein.
Allerdings habe ich noch die Funktionen define_key(char *, int) und keyok(int, BOOL) in Verdacht etwas damit zu tun zu haben, aber die entsprechenden man-pages sind wunderbar informationsarm
Auch kleine Testprogramme, um hinter das Geheimnis von ^-Kombinationen zu kommen, haben eher Verwirrung gestiftet, da z.B. ^A einfach einen ascii-code 1 zu erzeugen scheint, ^b 2, ^c 3 usw (und ^j erzeugt tatsächlich ein NL ?!?) … aber darauf kann ich ja auch nicht aufbauen, da mein Programm ja sämtliche Contolkombinationen selbst verarbeiten soll (okay, über ^c oder ^z ließe sich reden )
Tja, (linux-)Terminals sind mir echt noch ein Buch mit 7 Siegeln.
hiho,
hab mal noch was gelesen …
„MS-DOS erfahrene Programmierer haben schon oft nach dem UNIX-Äquivalent der Funktion kbhit Ausschau gehalten. Diese Funktion erkennt, ob eine Taste gedrückt wurde, ohne sie tatsächlich einzulesen. Leider gibt es kein direktes Äquivalent dazu. UNIX-Programmierer bemerken diesen Umstand nicht, da UNIX-Programme selten, wenn überhaupt dazu angelebt sind, auf ein Ereignis zu warten …“
"Wenn Sie jedoch Programme von MS-DOS protieren, ist eine Emulation der Funktion kbhit recht praktisch. Dies können Sie im nichtkanonischen Eingabemodus realisieren.
… naja es folgt eine eigene Version von kbhit
wenn es dir hilft, kann ich den source mal posten
gruss
berni
nunja, letztenendes stelle ich mir das schon so vor ein char
(bzw short) mit getch (also die curses-fkt) zu holen, um dann
in einem wunderbaren ‚Monster-Switch‘ die entsprechenden
Aktionen einzuleiten…Zwar kann ich relativ einfach mittels ‚keypad(TRUE)‘ auf
Funktionstasten zugreifen, da in ncurses.h einige nützliche
#defines dazu existieren (z.B. KEY_UP für die
‚Pfeil-hoch-Taste‘), aber wenn es zu Tastenkombinationen mit
Control kommt, scheint es mit der Herrlichkeit zu Ende zu
sein.Allerdings habe ich noch die Funktionen define_key(char *,
int) und keyok(int, BOOL) in Verdacht etwas damit zu tun zu
haben, aber die entsprechenden man-pages sind wunderbar
informationsarmAuch kleine Testprogramme, um hinter das Geheimnis von
^-Kombinationen zu kommen, haben eher Verwirrung gestiftet, da
z.B. ^A einfach einen ascii-code 1 zu erzeugen scheint, ^b 2,
^c 3 usw (und ^j erzeugt tatsächlich ein NL ?!?) … aber
darauf kann ich ja auch nicht aufbauen, da mein Programm ja
sämtliche Contolkombinationen selbst verarbeiten soll (okay,
über ^c oder ^z ließe sich reden)
Tja, (linux-)Terminals sind mir echt noch ein Buch mit 7
Siegeln.