Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475

    [C++] Ottenere lo stato della tastiera

    In C# con XNA c'era il comodissimo

    codice:
    KeyboardState keyb = Keyboard.GetState();
    che restituiva una variabile che conteneva lo stato di tutti i tasti della tastiera (premuto o non premuto). Ora però sto iniziando a esplorare c++ con SDL, e mi chiedevo, come posso realizzare una cosa simile?

    Grazie ciao.
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  2. #2

  3. #3
    Utente di HTML.it L'avatar di Zahami
    Registrato dal
    May 2009
    Messaggi
    59
    Come ha detto prima MacApp, dipende dal sistema operativo.
    Se sei su Windows ti basta includere l'header "windows.h" e usare la seguente funzione:

    codice:
    GetAsyncKeyState(tasto)
    Sostituendo a "tasto" il tasto di cui devi rilevare la pressione (credo che non puoi rilevare la pressione di tutti i tasti da tastiera contemporaneamente come C#).
    Arrivato a questo punto però puoi anche rilevare la pressione di più tasti contemporaneamente (ma non tutti)
    con questo trucchetto:

    codice:
    // Se è premuto il tasto [CTRL]
    if(GetAsyncKeyState(VK_LCONTROL))
    {
     // ed il tasto Q
     if(GetAsyncKeyState('Q'))
     {
      // ed il tasto N (tutto contemporaneamente)
      if(GetAsyncKeyState('N'))
      {
        ...comando da eseguire...  //ad esempio mostrare un messaggio o quello che vuoi
      }
     }
    }
    Mettere gli "if" uno dentro l'altro mettendo all'interno di ognuno di loro un "GetAsyncKeyState(tasto)" fa sì che il programma capisca che quei tasti devono essere premuti contemporaneamente (un pò come CTRL+ALT+CANC per capirci)

    NOTA: se devi rilevare la pressione di lettere dell'alfabeto o numeri devi mettere la lettera o il numero incluso tra gli apici (vedi il codice sopra) mentre per i tasti "speciali" (CTRL, ALT, ecc...) ognuno di questi tasti ha un nome (nel caso di CTRL di sinistra è VK_LCONTROL, gli altri li devi cercare ) mettendoli SENZA apici.



    Per quanto riguarda Linux invece ci sono le librerie GDK che usai una volta ma che ora non ricordo più sinceramente, cercando su internet potresti trovare qualche informazione...



    Se usi Mac...non ne ho idea!
    Zahami

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Sono su linux (sorry!)

    Nelle SDL c'è un sistema di verificare la pressione e il rilascio dei tasti, però mi dice solo se un tasto è stato premuto o è stato rilasciato... Immagino che mi ingegnerò usando quello per differenza dallo stato precedente.

    Grazie!

    P.S: domani test della normale :S
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  5. #5
    Utente di HTML.it L'avatar di Zahami
    Registrato dal
    May 2009
    Messaggi
    59
    Ehi aspetta un attimo, spiegami meglio questa cosa dell'SDL che sono interessato , come funziona?
    Zahami

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Mandami un pm, sto uscendo di casa ora e non ho tempo, quando torno ti spiego ^^

    Ciao!
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

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 © 2025 vBulletin Solutions, Inc. All rights reserved.