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.
Parallels führt x86-Windows auf M-Macs aus – Te...
iOS 18.3 mit Hinweisen auf neue Apple-Hardware
iPod-Vater Tony Fadell wollte Sonos kaufen – St...
iPhone 17 Pro: Leaks sollen Details zur neuen R...
Das Apple-Frühjahr 2025
Vor 18 Jahren: iPhone, Apple TV und "Apple Inc."
M4 Mac mini im Effizienztest: Hohe Ersparnis im...
Hohe Softwareanforderungen: Neues USB-C-Zubehör...