Tastaturabfrage C++

  1. Altivec

    Altivec Thread StarterMacUser Mitglied

    Mitglied seit:
    29.05.2006
    Beiträge:
    1.266
    Zustimmungen:
    56
    Hi!
    Ich suche nach einer Möglichkeit, in einem Konsolenprogramm die Tastatur abzufragen (also nicht mit cin >> sondern ohne Return-Taste).
    Was ich dazu gefunden habe, ist:

    - conio.h gibt's nicht für den Mac
    - curses.h hat eine Funktion getch()

    Leider funktioniert das mit dem getch() nicht. Bei der Ausführung des Programms bekomme ich nur einen signal6 (SIGABRT) und ZeroLink: unknown symbol '_stdscr'.

    Kennt Ihr einen anderen Weg, um eine simple Tastaturabfrage zu realisieren?

    Altivec
     
    Altivec, 26.02.2007
  2. below

    belowMacUser Mitglied

    Mitglied seit:
    15.03.2004
    Beiträge:
    13.289
    Zustimmungen:
    1.086
    GetKeys (), aber das kann (je nach sicherheitseinstellung) nicht funktionieren.

    Alex
     
    below, 27.02.2007
  3. DeineMudda

    DeineMuddaunregistriert

    Mitglied seit:
    12.05.2005
    Beiträge:
    852
    Zustimmungen:
    72
    getch() aus curses.h muss funktionieren.
    Du musst natürlich:

    • gegen die curses-Bibliothek linken, d.h. g++ deinprogramm.cpp -o deinprogramm -lcurses
    • initscr(); zur Initialisierung von curses aufrufen ;)
     
    DeineMudda, 27.02.2007
  4. wegus

    wegusMacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    Mr. Kernighan und Mr. Ritchie haben das vor 30 Jahren mal mit getchar() aus stdio.h in C gemacht!
     
    wegus, 27.02.2007
  5. Altivec

    Altivec Thread StarterMacUser Mitglied

    Mitglied seit:
    29.05.2006
    Beiträge:
    1.266
    Zustimmungen:
    56
    below:
    Besten Dank für den Hinweis! Habe jetzt zumindest einen Weg, um überhaupt Tasten abfragen zu können:
    KeyMap theKeys;
    ::GetKeys(theKeys);
    if( theKeys[1] & 0xVIERBYTE ) {...}

    Auf der Suche nach der KeyTranslate Funktion bin ich dann bei iGetKeys gelandet. Aber dauch da bekomme ich diese merkwürdigen Fehler zur Laufzeit, wenn ich die Funktionen wie TestForAsciiKeyDown oder TestForKeyDown benutze. ZeroLink habe ich in den Einstellungen übrigens abgeschaltet.

    DeineMudda:
    hab ich gemacht, auch den Aufruf von initscr(). Aber dieses kleine Programm:

    Code:
    #include <iostream>
    #include <curses.h>
    
    int main (int argc, char * const argv[])
    {
    	initscr();
    	char c = getch();
    	std::cout << "Hallo Welt!";
    
        return 0;
    }
    
    liefert immer die Fehler:

    ZeroLink: unknown symbol '_stdscr'
    Curses has exited due to signal 6 (SIGABRT).

    Dann muß jemand die Funktion umgeschrieben haben ;)
     
    Altivec, 27.02.2007
  6. wegus

    wegusMacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    :eek: tatsächlich :Pfeif:

    wie das mit curses gehen soll steht z.B. hier:


    http://www.pronix.de/pronix-783.html
     
    wegus, 27.02.2007
  7. Altivec

    Altivec Thread StarterMacUser Mitglied

    Mitglied seit:
    29.05.2006
    Beiträge:
    1.266
    Zustimmungen:
    56
    Hab den Code ausprobiert, die dort gezeigte Funktion getch verhält sich leider genauso wie getchar aus stdio.
    Ich werde wohl die Variante mit der Toolbox-Funktion weiterverfolgen.
    Danke nochmal an alle!
     
    Altivec, 27.02.2007
Die Seite wird geladen...
Ähnliche Themen - Tastaturabfrage C++
  1. Wolfseye
    Antworten:
    16
    Aufrufe:
    310
  2. GeFa
    Antworten:
    9
    Aufrufe:
    601
    Gondomir
    15.08.2016
  3. Saloice
    Antworten:
    4
    Aufrufe:
    577
  4. ZoliTeglas
    Antworten:
    5
    Aufrufe:
    384
    mrthomasd
    13.10.2015