Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: [c++] getchar

  1. #1
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    [c++] getchar

    Come si fa a fare un getchar ke restituisce TUTTI i caratteri premuti da tastiera?
    Io ho provato così:
    codice:
    char a; 
    a=getchar();
    Però non mi restiusce il codice ascii di un tasto importante: la backspace.
    Esiste un metodo dove posso leggere qualsiasi tasto premuto da tastiera (compresi i tasti funzione)?

  2. #2
    Devi usare chiamate a funzioni di sistema operativo: la getchar è una funzione portabile, e come tale non riesce ad accedere a così basso livello alla tastiera.

    Prova con le API di windows...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  3. #3
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Originariamente inviato da Shores
    Devi usare chiamate a funzioni di sistema operativo: la getchar è una funzione portabile, e come tale non riesce ad accedere a così basso livello alla tastiera.

    Prova con le API di windows...
    Uso linux

  4. #4
    Ok, allora con le chiamate di sistema Linux...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  5. #5
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    e quali sn...come faccio a kiamare le kiamate di linux?

  6. #6
    Qui mi trovi impreparato...

    Di programmazione di basso livello ne ho fatta parecchia, ma tutta in windows!

    C'è qualche altra anima buona che lo sa?

    (Peroro la tua causa! )
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  7. #7
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    help help

  8. #8
    /*
    su UNIX/Linux sostituisci <conio.h>
    con <uconio.h> o <ncurses.h> o <curses.h>
    la funzione getch() come anche gli header appena elencati
    non appartengono allo standard ANSI per il C
    */
    codice:
    #include<stdio.h>
    #include<conio.h>  
    
    int main()
    {
        char c;
             
        while(1)
        {
            c=getch();
            
            if(c==27)
            {
                printf("Escape\n");
                break;
            }        
            else if(c==8)
                printf("Backspace\n");
            else if(c==9)
                printf("TAB\n");
            else if(c==13)
                printf("Return\n");
            else if(c==32)
                printf("Space\n");
            else if(c==-32)
            {
                c=getch();
                if(c==72)
                    printf("Freccia SU\n");
                else if(c==80)
                    printf("Freccia GIU'\n");
                else if(c==77)
                    printf("Freccia DESTRA\n");
                else if(c==75)
                    printf("Freccia SINISTRA\n");
            }    
            else if(c==0 || c==-32)
            {
                c=getch();
                if(c==59)
                    printf("F1 = 0, 59\n");
                else if(c==60)
                    printf("F2 = 0, 60\n");
                else if(c==61)
                    printf("F3 = 0, 61\n");
                else if(c==62)
                    printf("F4 = 0, 62\n");
                else if(c==63)
                    printf("F5 = 0, 63\n");
                else if(c==64)
                    printf("F6 = 0, 64\n");
                else if(c==65)
                    printf("F7 = 0, 65\n");
                else if(c==66)
                    printf("F8 = 0, 66\n");
                else if(c==67)
                    printf("F9 = 0, 67\n");
                else if(c==68)
                    printf("F10 = 0, 68\n");
                else if(c==-123)
                    printf("F11 = -32, -123\n");
                else if(c==-122)
                    printf("F12 = -32, -122\n");
            }        
            else
                printf("%c = %d\n", c, c);
        }
    
        while(getchar() != '\n');
        return(0);
    }
    * in neretto la parte di codice non standard

    se con questo codice (provato sotto windows) non risolvi, leggi qua: http://groups.google.it/groups?hl=it...29+under+linux
    ...Terrible warlords, good warlords, and an english song

  9. #9
    NON USARE GETCHAR!!!
    Getchar serve praticamente solo per stoppare il programma e farlo riprendere premendo INVIO. E come la system("PAUSE") o la pause sui file bat...
    Per riconoscere ogni tasto ci sono appositi comandi.
    Getch() e Getche() ne sono un esempio. Per avere esempi o altre informazioni su questi comandi prova a dare un occhio alle librerie stdio.h

  10. #10
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Includendo curses.h mi da questo output il compilatore:
    /tmp/ccJ34Zho.o(.text+0xe45): In function `text::setfocus()':
    : undefined reference to `stdscr'
    /tmp/ccJ34Zho.o(.text+0xe4a): In function `text::setfocus()':
    : undefined reference to `wgetch'
    collect2: ld returned 1 exit status
    E una cosa simile (se non uguale), me la da includendi ncurses.h
    Cosa sbaglio?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.