[C] [NCURSES] Event Keyboard + Mouse
|
10-03-2014, 16h10
Message : #1
|
|
Junky
![]() Snorky Master ![]() Messages : 228 Sujets : 35 Points: 204 Inscription : Mar 2013 |
[C] [NCURSES] Event Keyboard + Mouse
Bonjour,
Un petit programme fait sur le pouce afin de remonter les events ncurses (int). Ca ne sert pas forcément a grand chose, mais souvent lorsque l'on code, ont aiment bien savoir et connaître les retours des touches/clics. J'avais fait ca a l'époque (lors du dev de pong) et je viens de retomber dessus. Donc même si ce n'est pas un code de ouf malade autant le partager. Qui sait peut-être qu'un jour il servira a quelqu'un. Code C :
On compile de cette manière: Code BASH :
Junky, Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier
|
|
10-03-2014, 16h59
Message : #2
|
|
gruik
![]() gouteur de savon ![]() Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: [C] [NCURSES] Event Keyboard + Mouse
si j'ai bien compris, pour détailler un peu;
- keypad() sert à activer le clavier, on le met à TRUE du coup wgetch() nous retournera un code approprié si on appuie sur la flèche vers le haut par exemple - mousemask() c'est un peu le même principe, mais pour la souris, on lui demande de capturer ALL_MOUSE_EVENTS et on récupère l'activité dans "Mask" c'est ça ? - wgetch() est de la même famille que getch() qu'on connait souvent déjà, sert à capturer une frappe clavier en mode non-bloquant |
|
10-03-2014, 19h31
(Modification du message : 10-03-2014, 19h34 par Junky.)
Message : #3
|
|
Junky
![]() Snorky Master ![]() Messages : 228 Sujets : 35 Points: 204 Inscription : Mar 2013 |
RE: [C] [NCURSES] Event Keyboard + Mouse
(10-03-2014, 16h59)gruik a écrit : si j'ai bien compris, pour détailler un peu; Pour les 2 premiers oui et oui Pour wgetch() en faite oui aussi mais c'est un peu différent. Si on le décompose, on a le getch() et "w". En faite le w signifie windows. Il signifie qu'il attend un event dans la window créé. Par défault il sont bloquant en effet (donc ici dans le prog il bloque la do {}while(); ), mais il est possible de les rendrent non-bloquant de cette manière: Code C :
En gros ici tu va déclarer TOUTE la win en non bloquant. Donc on peut imaginer un truc dans le genre: Code C :
la pour le coup l'exemple n'est pas significatif puisque je bosse avec 1 seul window et de plus a l'arrache. Je ne respect pas du tt les standarts ncusres. Pour en revenir a mon "tool", normalement j'aurais du procéder un peu de la manière décrite juste au dessus mais la je ne déclare aucune fenêtre. ( a la bourrin ![]() En faite j'aurais pu use directement des printf() a la place. Puisque je ne bosse pas avec de win. Ceci est ce que l'on appel un code très très sale use pour des raisons perso et demandant a être valable pour hier... ![]() Je viens de faire un bout de code avec des threads qui montre comment fonctionne le wgetch() en bloquant ou non-bloquant: Code C :
compilez le de cette manière: Code C :
Le resultat est la. La ou le nodelay est positionné a 0, il ne se passe rien tant que l'on appui pas sur une touche du clavier. Pour l'autre osef il s'en fou il continue a tourner tranquillement. En faite une manière très simple de voir si tu travailles ou pas sur des fenetres et de repérer le "w" dans la fonction. Et TT les fonction avec un "w" prennent en paramètre une fenêtre: (sauf le printw() :p ) Code C :
J'espère avoir été claire... ![]() EDIT: en faite pour le wgetch() (dans mon exemple) il prend en compte la stdscr c'est a dire "la sortie standart du screen". Je sais pas si c'est bien français... ![]() Junky, Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier
|
|
« Sujet précédent | Sujet suivant »
|
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)