Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 05-12-2007, 16.00.53   #1
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
[C] Catturare la pressione di alcuni tasti

Mi serve catturare la pressione di alcuni tasti in modo da annullarne l'effetto.
Con alcuni ci riesco ma ce ne sono altri che non vogliono saperne di essere intercettati.
Potete leggere il codice della funzione qui (forse incollado l'indirizzo nella barra degli indirizzi).

Avete idee sul perché vengano ignorati i casi indicati nel codice? Premendo i relativi tasti ottengo come output cose del tipo òR, òI, òQ...
Alhazred non è collegato   Rispondi citando
Vecchio 05-12-2007, 23.24.10   #2
Sergio Neddi
Gold Member
Top Poster
 
L'avatar di Sergio Neddi
 
Registrato: 07-04-2000
Loc.: Padova-Vicenza
Messaggi: 4.814
Sergio Neddi promette bene
Quelli sono tasti speciali che riportano sequenze di 2 caratteri ad ogni pressione.
___________________________________

Con il PC risolvo molti problemi che prima non avevo. - Coltiva Linux che Windows si pianta da solo!
Sergio Neddi non è collegato   Rispondi citando
Vecchio 06-12-2007, 13.24.11   #3
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Lo so, così come i tasti funzione che vengono catturati dal case 0:
Il problema è che non vengono catturati, né usando il corrispondente nome virtuale (VK_INSERT etc.) né usando i corrispettivi ascii (45 per ins etc.).
Come faccio a farglieli catturare?
Alhazred non è collegato   Rispondi citando
Vecchio 06-12-2007, 21.42.39   #4
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Ti propongo un piccolo esempio esplicativo debitamente commentato che altro non è che lo scheletro di una funzione molto semplice ma completa sul riconoscimento della pressione di un tasto, dell' acquisizione di un range di ASCIICode, della verifica della restituzione dello ScanCode e la sua eventuale l'eliminazione dal buffer della tastiera.

Codice:
char *UserInput(int);

char *UserInput(int max){
    char c,*Buff;
    short int i=0,j=0,vmin,vmax;
        
    Buff=(char*)malloc(max+1);
    while(c!=13 || i<2){      // Mai invio a vuoto. 
                             // Sempre almeno una lettera ed un numero
        switch(j){
            case 0:vmin='A';vmax='J';break;   // Lettere vailde A..J
            case 1:vmin='0';vmax='9';         // Cifre valide 0..9
        }    
        c=toupper(getch());
        if(c==0||c==-32) getch(); // Elimina lo scan code, ossia 
                                  // carico il succ. carattere dal buffer
            switch(c){
                case 8:           // Backspace
                    if(i>0){
                        i--; if(i==0) j=0;
                        printf("\b%c\b",255);
                    }break;
                default:
                    if((c>=vmin && c<=vmax) && i<max){
                        printf("%c",c);
                        Buff[i]=c;
                        i++; j=1;
                    }    
            }    
    }Buff[i]='\0';               // Aggiungo il terminatore di stringa    
    return Buff;
}   
 
main(void){
    char *s;
    printf("Immetti una lettera compresa tra 'A' e 'J' ed un numero:");
    s=UserInput(2);
    printf("\nHai immesso:%s",s);
    getch();
}
LoryOne non è collegato   Rispondi citando
Vecchio 07-12-2007, 00.06.28   #5
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Ciao Lory, ho letto adesso al volo il tuo codice ed ho avuto l'illuminazione di mettere un
case -32: getch(); break;
adesso tutti quei tasti che volevo disabilitare sono disabilitati.
Domani con la mente un po' più fresca guarderò meglio il codice che hai proposto, intanto ti faccio una domanda: perché VK_INSERT non mi catturava la pressione del tasto ins, mentre ad esempio VK_ESCAPE mi catturava esc, VK_RETURN mi catturava invio e VK_BACK mi catturava backspace?
Alhazred non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
tastiera Logitech G15 - Alcuni tasti sono morti Arthur85 Hardware e Overclock 3 08-07-2008 17.54.31
Associare programmi a tasti funzione aquila6000 Windows 7/Vista/XP/ 2003 2 21-01-2008 02.03.55
Mappatura tasti. borgata Windows 7/Vista/XP/ 2003 6 26-08-2005 10.30.38
Tastiera 109 tasti fastdius Hardware e Overclock 2 23-08-2005 12.42.52
topic casalingo gemm@ Chiacchiere in libertà 39 03-04-2004 14.03.46

Orario GMT +2. Ora sono le: 18.05.16.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.