Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

Tastatureingaben abfangen mit C

Synthetic_codes / 3 Antworten / Flachansicht Nickles

Hi, ich schreibe gerade an einem Programm, das als eine art KonsolenNetzwerkServer arbeitet. ich suche nun eine Methode mit der ich spezielle tasten abfangen kann, um das Programm zu beenden. (zb wenn man esc drückt, beendet das programm sich). leider funktioniert das nicht mit getchar/getc(stdin). gibt es nun eine C-Funktion aus der libc, mit der ich tastatureingaben überwachen kann, das mir den ASCII Code der gedrückten taste zurückgibt? momentan ist das programm für windows programmiert, es soll aber wenn es fertig ist auf linux portiert werden können, deshalb sollen keine WIN32 API funktionen verwendet werden(über das nachrichten system wäre das ja auch kein problem(mit WM_KEYDOWN)).

PS: hat einer vielleicht die opcodes folgender assembler befehle parat/weiss wo ich die finde:

mov eax, irgendwas
mor ebx, irgendwas
mov ecx, irgendwas
mov edx, irgendwas
mov irgendwas, eax
mov irgendwas, ebx
mov irgendwas, ebx
mov irgendwas, ebx

Thanx schonmal

'); DROP TABLE users;--
bei Antwort benachrichtigen
vergisses Synthetic_codes „re, danke schonmal, mit _getch läuft das schon ganz gut. wegen dem assembler,...“
Optionen

Hi,

nach meinen Erfahrungen wird Curses unter Unix immer
dynamisch gelinkt; es gibt gar keine statisch linkbare Lib.
Grund:
Für die Verwendung von Curses müssen diverse Voraussetzungen
erfüllt sein.
So muß z. B. terminfo installiert sein, da Curses auf die
terminfo Datenbank zugreift.

Unter DOS braucht man das Ansi.sys.

Man kann unter Unix bzw. Linux Systemen im Grunde davon ausgehen,
dass diese Voraussetzungen erfüllt sind und die Curses Lib da ist,
wenn der vi installiert ist. (was meistens der Fall ist)

Geschichtliches ;-)
Curses war in der Urversion die Screen IO des vi.
Bei der Entwicklung des vi hat man bereits die Wiederverwendbarkeit
der IO Funktionen geplant und diese als eigenständige Lib (Curses)
implementiert. (damals hat man eben noch gründlich gearbeit)

Unter DOS kannst Du DOS Interrupts abfangen.
Der Aufwand lohnt sich aber nicht, da _getch() genau das macht ...

Wenn Du planst, unter DOS zu entwickeln und später auf
Unix/Linux zu portieren, solltest Du ohnehin auf Interrupt Handling
und Assembler verzichten, da ansonsten die Portierung sehr
aufwändig wird.

Gruss, vergisses

bei Antwort benachrichtigen