Newsgroup: it.comp.lang.c
Titolo: Simulare un "OnKeyDown/OnKeyUp" ...

Salve a tutti,
esiste un modo (usando solo le librerie standard) per capire quando un
tasto è stato *rilasciato* ?
Quello che devo fare è lanciare una funzione quando un tasto è premuto,
lanciarne un'altra quando è rilasciato.
(*Finchè il tasto non è rilasciato*, la seconda func. non deve essere
chiamata).
getch ritorna solo il carattere, non lo stato (pressed o released)  :(
anche kbhit non sembra essermi d'aiuto :(
Non conosco quasi per nulla la std lib... e sono costretto ad usarla,
sigh, senza le mie api mi sento con le mani legate!!
Qualcuno ha qualche idea? Pls aiuto!!! ;P
Ciao!
Davide DG.

 tasto è stato *rilasciato* ?
Dimenticavo: uso Borland C++ Builder 4 sotto Windows 2000 / NT 4.0
Davide DG.

Davide,
Davide DG wrote:

	news:it.comp.prgrammare.win32
   Tuttavia, se devi programmare un applicativo per Win 2000/NT, non 
vedo perche` tu debba rinunciare alle tue "apine" del Win SDK.
--
Alla prossima,
Marco

> news:it.comp.prgrammare.win32
No, guarda, non sono proprio d'accordo.
Ho evitato appositamente invece postare su it.comp.programmare.win32, in
quanto la mia domanda si riferisce ad un problema da risolversi (se si
può) con la standard library, indipendentemente dal SO (altrimenti a
quest'ora avrei già risolto, con le mie "apine"!!)
Che stia programmando sotto Windows 2000, in questo frangente, è
ininfluente (l'ho scritto solo per ragioni di completezza).
Grazie comunque.
Ciao, Davide DG.

sigh, senza le mie api mi sento con le mani legate!!
Non puoi farlo con la std lib, spostati su
it.comp.programmare.win32 se vuoi un aiuto sul C++ Builder.
-- 
The Follet

ininfluente (l'ho scritto solo per ragioni di completezza).
Invece e' molto influente, perche' il tuo problema si
risolve solo con funzioni specificamente legate al sistema
operativo.  Ripeto: rivolgiti a it.comp.programmare.win32.
-- 
The Follet

 operativo.  Ripeto: rivolgiti a it.comp.programmare.win32.
Forse sarebbe il caso di consigliare una lib cross-platform che fa
quello che vuole?  Non mi sembra che voglia legarsi a un sistema
particolare, anche se e` ovviamente una funzione che ogni sistema
operativo fa in modo diverso, rendendo dunque necessario una libreria
che fa da strato intermedio.
Purtroppo, io non saprei cosa consigliare... ncurses? Qt? Gtk?  Non ho
presente cosa serviva precisamente...
-- 
David N. Welton
   Consulting: 
http://www.dedasys.com/
Free Software: 
http://people.debian.org/~davidw/
   Apache Tcl: 
http://tcl.apache.org/
     Personal: 
http://www.efn.org/~davidw/

> Non puoi farlo con la std lib
Ok, grazie, cercherň qualche altro sistema.
Davide DG.

 operativo.
Ma infatti io ho chiesto *se* e come è possibile farlo con la stdlib *e*
indipendentemente dal sistema operativo (e questo non mi sembra proprio
al di fuori del topic del gruppo, anzi!?).
Rispondermi che non è possibile fare quello che voglio con la stdlib *è*
una risposta! ed è anzi utilissima, perchè significa che dovrò cercare
un'altra strada nella stdlib.
Comunque, grazie per la risposta e scusami se ti sono risultato
sgarbato, non volevo proprio ^__^
Ciao!
Davide DG.

particolare, 
A me sembra che abbia parlato di C++ Builder e Windows 2000.
-- 
The Follet

Davide,
Davide DG wrote:

   Il discorso e` dunque molto diverso e la risposta e`: "no". :)
   Non e` possibile utilizzare la libreria standard per ottenere il 
risultato che ti proponi. Tuttavia puoi indagare se qualche libreria di 
interfaccia con il terminale, tipo le /curses/, possono offrirti un 
insieme abbastanza vasto di sistemi supportati per la tua /feature/ tale 
da surrogare la portabilita`.
--
Alla prossima,
Marco

un'altra strada nella stdlib.
Ehm... non mi sembra molto logico: se qualcuno ti dice : in
questa stanza non c'e' il vaso rosso che stai cercando, non
puoi continuare a cercare il vaso rosso nella stessa stanza
:)
-- 
The Follet

getkeyboardstate, ecc. ecc.
Non puoi. E' una cosa strettamente dipendente dal terminale che usi,
non implementata dallo standard.
Quindi se vuio farlo portabile (altrimenti non ti servirebbe la
libreria standard) puoi provare a scaricare una versione di conio o
curser da sourceforge e fornirla assieme.
Forse e' implementato qualcosa nelle glib, potresti appoggiarti su
queste. 
http://www.gnu.org/manual/glibc-2.0.6/html_chapter/libc_toc.html
Non esiste qualcosa di piu' portabile, come ti hanno gia' detto...
quindi o fai cosi' o aspetti il prossimo standard C sperando che
inseriscano queste cose (forse tra 10 anni esce un nuovo standard,
ammesso che si usi ancora il C, ma non credo i tempi del tuo progetto
coincidano con l'uscita del nuovo standard).
Scusa il tono ironico, ma volevo farti notare che se NON esiste una
soluzione nella stdlib significa che NON esiste, non che non la
sappiamo :)
Mox :)

 >ininfluente (l'ho scritto solo per ragioni di completezza).
 
...mi sembra di capire che voglia qualcosa che non e` strettamente
legato al sistema operativo.  Ma forse non sa neanche cosa gli
serve... ma almeno dandogli delle lib da vedere, magari si convince
che la 'stdlib' non e` la cosa giusta;-)


Ma forse non sa neanche cosa gli serve... 
Penso sia questo il problema principale :)
-- 
The Follet

 Penso sia questo il problema principale :)
No, più che altro vorrei avere la botte piena (sapere quando un tasto è
stato rilasciato) e la moglie ubriaca (usando la stdlib)... il che,
notoriamente, non è possibile ;P
--
Ciao!
Davide DG.

puň) con la standard library, indipendentemente dal SO
- e questo giustamente per ribadirlo
ma il motivo per cui sono intervenuto č un'altro.
Trovo piuttosto inutili tutte le disquisizioni che questo newsgroup (e
faccio notare <solo questo newsgroup>, di tutti quelli che seguo) fa per
decidere cosa č e cosa non č OT cosě come trovo non solo superflui ma anche
ridicoli tutti i numerosissimi post dove, talvolta gentilmente, altre volte
meno si ricorda l'OT (e spesso per post ambigui e spesso cmq interessanti e
utili).
Su it.comp.lang.visual-basic nessuno si č mai offeso se invece di parlare
del linguaggio si parla di come progettare un database, cosě come sul
newsgroup di access si parla spesso di visual basic e sul newsgroup del C++
č facile trovare messaggi riguardanti il C.
Trovo giusto difendere la coerenza del newsgroup ma, a mio avviso, č
fastidiosa tutta questa pignoleria.
Nel caso in questione era facile dire "non si puň, usa dell'altro" invece
che riempire il newsgroup di messaggi molto piů fastidiosi di qualunque OT.
E bello notare che nella bufera qualcuno ha anche tirato fuori risposte
intelligenti (come le cross lib, che io non conosco), risposte che cmq
rendono utile il newsgroup per i programmatori C "anche se OT".
Se ci sono OT e non volete rispondere, ignorateli e basta, se non avranno
risposte cercheranno altrove. E inutile ricordare ogni volta che c'č l'altro
newsgroup, se sono riusciti a trovare questo sono anche in grado di trovare
l'altro da soli, senza che sia necessario duplicare il fastidio dell'OT
(senza contare che oltre a chi legge il promemoria di win32 anche chi lo
scrive perde tempo)
Tutto qui, nulla di personale con gli autori dei post coinvolti, solo mie
riflessioni.

Qui sono completamente OT... pero' vorrei dire la mia sul
comportamento tenuto rispetto all'OT su questo NG.
Per quanto riguarda la domanda specifica, che e' OT ma abbiamo
risposto perche' in effetti si ricollega allo standard io avrei fatto
3 posto su un gruppo di discussione a proposito di Linux, su uno che
parla di Win e su uno che parla di dos.
Qui hanno risposto, se non altro per dirgli che non c'era un modo
standard e mi pare che di consigli ne siano arrivati un discreto
numero, ho risposto pure io, e in genere non rispondo agli ot, quindi
forse non l'abbiamo reputato tanto OT.
Parlando in senso generico, mi pare che su questo NG (a meno che uno
non chiedesse "a che serve l'API di Windows Xxxxx) nessuno abbia mai
rifiutato una risposta o si sia lanciato in chissa' quali crociate.
Ovvio che se uno arriva e fa una domanda per cui c'e' un NG che va a
pennello posso anche mandarlo li senza troppi complimenti, ma mi pare
che iniziare a rispondere qui sia sleale rispetto a quelli che sono
veramente interessati al C standard.
Qui si danno consigli, si correggono problemi... si e' solo posto un
limite: non parlare di qualcosa che non sia C standard oppure di cose
che tu pensi siano standard (nel qual caso ti si fara' presente
l'errore commesso).
Io non so come fosse il thread su it.comp.vb perche' non lo seguo e
non mi interessa il VB.
Per me li potete postare cosa volete e rispondere a cosa volete, ma a
parte questo... qual'e' il manifesto?
Se mi dici che si parla di VB e ogni possibile applicazione allora
tutti i thread sono ammessi (a meno che non si parli di Java o C,
allora sarebbero decisamente OT)... se invece il campo e' piu'
ristretto il post sui Database non aveva granche' senso... nei
confronti di chi legge it.comp.vb e non gli interessano i problemi
specifici a certe cose (esisteranno prue NG che parlano di Data Base
dove si parla di quello).
Qui mi trovo bene perche' si parla di C, standard. Se volessi parlare
di programmazione sotto dos non mi aspetto certo di trovarla qui, ma
vado su un Ng apposta, cosi' mi legge solo chi e' interessato.
Postare OT e' un danno nei confronti di chi segue l'ng perche' e'
interessato ai problemi trattati dal manifesto... se no a che cavolo
servono i manifesti?
Mox

 servono i manifesti?
A me danno piů fastidio i post che ricordano pedissequamente gli OT che gli
OT stessi. Rispondere ad un OT duplica il danno e implica il rischio di
altre risposte, tutte rigorosamente OT.
Se un post č fuori luogo ignoratelo, č molto meglio in quanto non perdete
tempo voi, chi legge e chi scarica le intestazioni.
Non č mia intenzione fare polemica, ben chiaro.

l'altro da soli, senza che sia necessario duplicare il fastidio dell'OT
Rispondere ai messaggi OT e' necessario, perche' chi scrive
deve sapere di essere OT, deve sapere che esiste un altro
gruppo e, soprattutto, deve sapere dove rivolgersi se avra'
domande dello stesso tipo in futuro.  Ignorare significa che
l'autore pensera': hmmm... questa volta non mi ha risposto
nessuno, riproviamo a spedire il messaggio.
Gli OT diventano due.  Poi, magari, in seguito a
un'ulteriore indifferenza da parte del gruppo, lo posta
un'altra volta.
Gli OT diventano tre.
Poi, magari, seccato, scrive : eeeh... ma io ho scritto per
ben tre volte e non mi ha risposto nessuno ! ma che cavolo
di gruppo e' questo ?
Gli OT diventano quattro.
Come vedi, ignorare gli OT *potrebbe* servire, ma molto
spesso contribuisce solo a farli moltiplicare.
Quello che ti ho appena elencato e' successo migliaia di
volte qui dentro, cosa che ci ha spinto a rispondere, di
volta in volta, agli OT, consigliando la strada corretta da
seguire.
D'altronde, lo dico forse senza sufficiente modestia, io
sono uno di quelli, qui dentro, che in prevalenza risponde e
offre soluzioni.
Se le regole non vanno bene per chi posta le domande e si
aspetta una risposta, non vedo perche' dovrebbero andare
bene per noi, ci limitiamo a seguire altri gruppi.
-- 
The Follet

tempo voi, chi legge e chi scarica le intestazioni.
Vedi altro messaggio: molto spesso ignorare e' piu' dannoso
di quanto sembri.
-- 
The Follet

 consigliando la strada corretta da seguire.
La correttezza di un consiglio è opinabile.
**********
Postmessa (quale sarà l'antitesi di "premessa" ?):
Per giorni ho seguito in silenzio l'evolversi di questo thread, leggendo
cose già scritte innumerevoli volte su innumerevoli altri ng.
Mi dispiace di aver, se pur indirettamente, creato un traffico di
informazioni abbastanza inutile.
Forse avrei dovuto "chiudere un occhio" sulla segnalazione e
accontentarmi delle risposte positive... ma avrei commesso lo stesso
genere di errore che si commette quando si ignora un messaggio
(palesemente) OT di un nuovo frequentatore di un ng.
Sperando di non generare polemica, ma almeno positiva discussione,
saluto tutti!!
--
Davide DG.
  - In medio stat virtus -

 e', invece, palesemente OT.
E` cosi` e` nato un lungo thread, che non c'entra neanche con la
programmazione, invece di essere possibilmente off-topic per un pelo.
Il tutto senza neanche cambiare il subject, in modo che si possa
vedere che parlate di cavolate che non riguardano il linguaggio C!
Un po' scherzo, visto che non prendo la cosa molto sul serio,
comunque, dai, "lighten up":-)


programmazione, 
Che vedo sei interessato ad allungare anche tu con messaggi
inutili.  Bravo, avanti cosi'.
Stop, da parte mia.
-- 
The Follet

(palesemente) OT di un nuovo frequentatore di un ng.
No, invece avresti fatto la cosa migliore.
Personalmente, non ho piu' voglia di discutere ulteriormente
con chi si ostina a non voler rispettare le regole.
-- 
The Follet