Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Entwickler
>
kbhit() & getch()
kbhit() & getch()
Moe99999
25.01.08
19:07
Hallo Forum,
für ein kleines C-Komandozeilenspiel das ich in der Schule für windows geschrieben habe brauche ich zwei Befhele um es auf den mac zum laufen zu bringen:
kbhit() und getch() diese beiden Befehle gibt es aber nur unter windows, jedenfalls soweit ich weiß.
Ich brauche eigentlich nur eine Möglichkeit einen Tastendruck zu registrieren und gleichzeitig einzulesen, aber nur wenn eine Taste gedrückt wird, sonst nicht.. hier mein windows code:
if(kbhit()){
char ctrl=getch();
switch (ctrl) {
case 'a':
................
}
„42“
Hilfreich?
0
Kommentare
Moe99999
25.01.08
19:07
}
„42“
Hilfreich?
0
Rantanplan
25.01.08
19:42
Eine Möglichkeit das kbhit() nachzubauen gibt es hier:
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
Hilfreich?
0
Rantanplan
25.01.08
19:44
Oder da:
Soll ich noch den Rest der Google-Suchergebnise reinkopieren?
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
Hilfreich?
0
Moe99999
25.01.08
20:23
error: 'memcpy' was not declared in this scope
fehler bei kbhit()
aber getch() geht jetzt
„42“
Hilfreich?
0
Moe99999
25.01.08
20:26
int kbhit(void) {
struct termios term, oterm;
int fd = 0;
int c = 0;
tcgetattr(fd, &oterm);
memcpy(&term, &oterm, sizeof(term)); //Fehler..
term.c_lflag = term.c_lflag & (!ICANON);
term.c_cc[VMIN] = 0;
term.c_cc[VTIME] = 1;
tcsetattr(fd, TCSANOW, &term);
c = getchar();
tcsetattr(fd, TCSANOW, &oterm);
if (c != -1)
ungetc(c, stdin);
return ((c != -1) ? 1 : 0);
}
„42“
Hilfreich?
0
Rantanplan
25.01.08
23:34
Hast du
#include <string.h>
weggelassen?
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
Hilfreich?
0
Moe99999
28.01.08
16:57
also kbhit() geht offensichtlich, aber das getch() arbeitet völlig anders als das aus der conio.h..
„42“
Hilfreich?
0
iCode
07.02.08
08:43
Benutz einfach die
curses
, die implementiert die Funktionalität der
conio
zur Kompatibilität.
Hilfreich?
0
iCode
07.02.08
08:49
Wenn man das häufig benötigt, aber man besonders bequem ist und die Includes nicht immer ändern will, bastelt man sich einfach eine Bridge. So in dieser Art:
/*
* conio.h
* Bridge zwischen curses und conio
*/
#include "curses.h"
Und packt diese in die entsprechenden Verzeichnisse:
/usr/include/
/Developer/SDKs/MacOSX10.5.sdk/usr/include/
/Developer/SDKs/MacOSX10.4u.sdk/usr/include/
/Developer/SDKs/MacOSX10.3.9.sdk/usr/include/
Fertig.
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
Facebook & Instagram: Zuckerberg kündigt Aus de...
Übersicht: Lieferzeiten für die neuen Macs
Bald viel mehr HomeKit-kompatible Geräte? Apple...
Mac OS X: 25 Jahre Aqua, 25 Jahre Dock
News zur Mac-Woche: MacBook Pro mit 24 GB RAM? ...
20 Jahre Mac mini
iOS 18.1 veröffentlicht
IMAP und Abstürze: Apple bekommt die Probleme m...