capturer mouvemts (pas position) souris : quelle api ? [prog/api] - Linux et OS Alternatifs
Marsh Posté le 29-08-2002 à 00:28:35
Question à poser dans la section programmation, m'enfin c'est ce que j'en dit.
Marsh Posté le 29-08-2002 à 09:05:34
ben justement non, j'ai bien réfléchi, paske j'avais pas de réponses dans prog, et puis la question
Citation : |
elle va pas dans programmation ;-)
le controle de la souris, c'est plus du systeme que de la prog applicative
enfi ce que je recherche, c'est une solution alternative a directinput
Marsh Posté le 29-08-2002 à 09:22:30
Scuze, j'avais pas vu cette question.
La souris est contrôlé par le serveur X, la Xlib pour être plus précis :
http://tronche.com/gui/x/xlib/input/
Marsh Posté le 29-08-2002 à 09:26:24
1- merci
2- j'ai l'impression que ta réponse est de trop haut niveau... je veux controler les mouvements, pas déja travailler avec un pointeur de souris qui a une position x, y
3- j'ai pas spécialement envie de me mettre a directinput !
paske je pourrais pas porter mon mini-jeu
4- je me demande justement comment dans un jeu sous nux, on fait pour controler la souris a bas niveau
pour mieux "mal" illustrer mon props de "mouvements" de la souris
http://www.programmationworld.com/ [...] 0#_topic_2
je veux ce contrôle
edit sdl ne gere pas la souris comme directx permet de le faire
Marsh Posté le 29-08-2002 à 09:43:11
Je vien de lire l'article sur progworld (que j'avais déja lu) mais je comprend pas, pourquoi tu dis que DirectX gère la souris en bas niveau ? Ce que j'appellerais bas niveau, ce serait de voire au niveau du controleur irq et des services pour les gérer en asm. Du coup, c'est moins portable.
Pour controler la souris dans un jeu ca dépend du toolkit utilisé, mais SDL permet de le faire sans problème, regarde les sources de quelques jeux (Chromium par exemple, il est en OpenGL). Justement, si ton jeu est en OpenGL tu peux utiliser Glut.
Mais bon, ne te focalise pas sur l'idée du bas niveau car, a partir du haut niveau, on peut avoir ce que tu recherches.
Marsh Posté le 29-08-2002 à 09:54:00
http://sdldoc.csn.ul.ie/sdlwmgrabinput.php
en effet
apologize, je pensais pas que c'était dans "window management" je regardais que dans input
masi j'ai des doutes sur les données que ca renvoie
en fait j'ai des gros doutes
Marsh Posté le 29-08-2002 à 10:04:47
bof.... vais voir du coté de glut, masi sdl me convaint pas, car la doc en ligbne est pas assez précise
Marsh Posté le 29-08-2002 à 10:17:03
ce que je veux c'est affranchir la souris de la notion de fentre.... et je ne vois pas comment
directx est le seul a etre clair sur ce qu'il fait, mias comme solution alternative.....
glut a l'air de travailler en fenetré pour la souris
Citation : |
c'est pas ce que je veux
directx c mal, directx ca pue, directx c le méchant crosoft, mais directx me semble (pour l'instant) le seul a offrir des fonctions pratiques
ca fait 4 jours que je cherche le moyen de controler ces putains de mouvements de la souris, et je galere...
opengl ne m'a pas posé de problèmes, mais j'ai l'impression de poser une colle a tout le monde avec cette conne de souris
Marsh Posté le 29-08-2002 à 11:14:27
http://sdldoc.csn.ul.ie/sdlmousemotionevent.php
Citation : xrel, yrelRelative motion in the X/Y direction |
Marsh Posté le 29-08-2002 à 11:18:56
heu... arrète moi si je me trompes, mais plus tu programme en bas niveau sur un système (l'OS), plus tu fait du spécifique à ce système... surtout entre Windows et Linux... Genre tu fait un register de l'évènement mouvement de souris dans l'API Windows, tu est sur que ca marcheras pas sous Linux, parceque le noyeau il connait pas ta souris... il connait son port (psaux, usb ou serial), mais pas la faon dont elle parle... Sous Linux (et globalement tous les Unix), la souris est gérée :
*/ en console par GPM (y'a une lib qqepart)
*/ sous X par X lui même (donc la xlib)
MAis si tu veux avoir une méthode unifiée/portable, bah tu code en utilisant une librairie de haut niveau portable/portée, comme la SDL... Tu utilise la SDL dans ton programme sous windows ET sous Unix (Linux en l'occurence), et pas de problème...
Donc une lib de haut niveau est plus portable que du codage bas niveau... CQFD
Tu pose une colle parceque toi même tu n'as pas compris le problème, alors comment veut-tu qu'on t'aide...
Marsh Posté le 29-08-2002 à 11:21:05
farib a écrit a écrit : edit sdl ne gere pas la souris comme directx permet de le faire |
SDL_MouseMotionEvent
SDL_MouseButtonEvent
tu veux quoi de plus? 15?24 et un mars? (c)
Marsh Posté le 29-08-2002 à 15:17:55
ping a écrit a écrit : tu veux quoi de plus? 15?24 et un mars? (c) |
Si la proposition est destinee a n'importe qui, moi je veux bien tout ca, et ca me suffira
farib > en supposant que la solution de ping ne te convienne pas (je ne vois pas pourquoi mais bon) et que tu n'as sous la main que des fonctions donnant la position, tu peux detecter le mouvement en recentrant la souris apres chaque mouvement. C'est pas beau, mais je pense que ca doit marcher. Cela dit, je recommande plutot la solution de ping
Marsh Posté le 29-08-2002 à 21:13:36
mon prob, c'est que la souris se déplace sur un plan infini, et que le curseur se déplace sur un plan de dimension la résolution de l'écran....
quand je lis
Citation : |
j'ai peur, paske le termes x et y représentent une position, chose qui si existe a de forte chance d'etre liée a la résolution de l'écran
si je poste ici en cherchant la bonne api, c'est paske je prog avec la clx, qui comme chacun sait, est multiplateformes......
Marsh Posté le 29-08-2002 à 22:04:41
farib a écrit a écrit : mon prob, c'est que la souris se déplace sur un plan infini, et que le curseur se déplace sur un plan de dimension la résolution de l'écran.... quand je lis
|
Code :
|
Admetons que je soit une grosse bite en C (c conssevable après tout) mais que j'ai un minimum de jugeotte...
je vois
Sint16 xrel, yrel; |
humm... A mon avis 'rel' ca veut pas dire "relou le mec de tout à l'heure à la cafet"...
Hummm... je me concentre très fort, je penche la tête pour mettre mes deux neuronnes en contact, je choppes un dictionnaire pour chercher quelle abbreviation ca peut être, et là...
au bout de 10m je tombe sur 'relatif' (j'te fait du franglissisme à l'arache, t'est plus à ca près )... Comme j'ai des vieux restes du CP, j'arrives à lire plus de 4 ligne et je lis donc :
|
Je me concentre très fort, je bois 3 cafés...
Et je me rends contre qu'en fait j'ai lu cà juste histoire de me 'culturer', parceque je sait ce que c'est que qqch de relatif...
En gros, ca veut dire que si le mec bouge sa souris de 45534135 unitées vers la gauche, xrel=-45534135 et yrel=0 (note le moins)
PS : je dit pas ca parceque je t'aime pas, mais de temps en temps j'ai besoin de me lacher... Alors je saute sur le premier qui comprends pas ce que je lui dit, même après lui avoir maché le steack à l'avance. Ceci dit j'espère que tu as compris now, et que tu m'excuse... Bonne continuation, bonne bourre, et encore merci pour nous de faire tes dev en portable
Marsh Posté le 29-08-2002 à 22:21:42
je te comprends.
je me fout de relatif, postition...
ce que je voulais dire, c'était que la doc n'est pas suffisement explicite sur la maniere dont elle prend en compte la souris, quelques fois les données des structures sont redondantes
(du genre avec l'appui des touches sous sdl, soit on lit l'état d'un touche, soit on lit le changement d'état d'une touche)
ca prete a confusion, masi bon quand on connait c'est tellement évident qu'on se demande pourquoi les gens ne connaissent pas
Marsh Posté le 29-08-2002 à 22:23:33
farib a écrit a écrit : ca prete a confusion, masi bon quand on connait c'est tellement évident qu'on se demande pourquoi les gens ne connaissent pas |
Marsh Posté le 29-08-2002 à 22:28:25
farib a écrit a écrit : ce que je voulais dire, c'était que la doc n'est pas suffisement explicite sur la maniere dont elle prend en compte la souris, quelques fois les données des structures sont redondantes (du genre avec l'appui des touches sous sdl, soit on lit l'état d'un touche, soit on lit le changement d'état d'une touche) |
bon, a part ca, va falloir ke je me tape de tout réécrire en sdl et d'abandonner les petits plus de la clx, tout ca pour gérér cette putain de souris
des gars ont l'air d'avoir fait du bon boulot pour adapter sdl sous c++ builder 6, merci a eux
mainteant que tu me confirmes si généreusement que ca n'est pas lié a l'écran et que je pourrais avoir x = 1000 exp 1000 et y = 0 en position de souris ( je suis un quaker fou qui fait ke tourner a droite) , je suis d'accord
Marsh Posté le 29-08-2002 à 22:48:55
farib a écrit a écrit : bon, a part ca, va falloir ke je me tape de tout réécrire en sdl et d'abandonner les petits plus de la clx, tout ca pour gérér cette putain de souris mainteant que tu me confirmes si généreusement que ca n'est pas lié a l'écran et que je pourrais avoir x = 1000 exp 1000 et y = 0 en position de souris ( je suis un quaker fou qui fait ke tourner a droite) , je suis d'accord |
attention!
trois choses :
*/ Uint16 c un entier non signé codé sur 16 bits donc de 0 à 65535 (c déjas pas mal...), Sint16 c un entier signé sur 16 bits (l'entier, la signature est codée en complément ou sur 1 bit (ca dépends un peut de l'arch et du compilo)) donc de -32767 à 32768... donc ton 1000*10^1000 c mort déjas
*/ Non, les valeures de x,y resteront scotchées au max ce qui empècheras pas xrel et yrel de continuer d'évoluer si le mec bouge son mulot
*/ admettons que tu parlais de xrel et non de x... bah ca veut dire que ta souris tu la bouge de 1000*10^1000 unitées (BORDEL! j'ai oublié l'unité de mesure de déplacement des souries... ca a un nom, help plz) avant l'évènement... Disont que l'évènement se produit en... (comptons le temps que l'interruption matérielle fasse parler d'elle, abandonnes quelques cycles d'horloge pour le kernelland, on passe en userland, la lib intercepte le signal, crame encore quelques cycles... admetons que comme la SDL est bien faire, elle met en cache pour pas surcharger d'évènements... disont un cache temporisé de 20u secondes... Bref tu as atteint avec ton poignet la vitesse de la lumière, bravo
Marsh Posté le 29-08-2002 à 23:09:08
farib a écrit a écrit : bon ca va .... |
owned...
et puis sur osa, on dit plutot
~branden
Marsh Posté le 30-08-2002 à 00:06:01
farib a écrit a écrit : c'est le moment d'appeler Topic::~Topic(); |
hummm... je peux avant surcharger le destructeur?
Code :
|
Marsh Posté le 30-08-2002 à 00:25:33
farib a écrit a écrit : pour quoi faire ? ta satisfaction personnelle , |
nannan, partir dans une boucle infinie (vu que tu code pas en Java) qui, de plus vas te saturer ta mem
Marsh Posté le 29-08-2002 à 00:23:00
voila je programme un (tout) petit jeu en opengl sous c++builder/clx/windows, que j'envisage de porter sous linux, le but étant d'acquérir des connaissances...
je souhaite utiliser la souris pour faire bouger la vue autour de mon tetris (ce que je programme en l'occurence, ce qui est original me direz vous)
seulement je ne peux pas me contenter des fctions de la clx pour cela : elles sont trop "haut niveau" et interpretent la souris comme curseur, et on peut pas descendre plus bas
je veux détecter les mouvements et non pas la postition car la position se limite a l'écran, moi je veux avoir une souris "comme dans un doomlike"
la solution d'utiliser DirectInput (TM) ne me plait pas trop
1-la souris est gérée par qui/quoi sous un systeme GNU/nux ?
2-ya une "api" qui permet de redescendre a un niveau de controle de la souris a celui de "mouvement" et non pas "position"
3- dans le cas ou 2- n'existerait pas, dans quake3 (par exemple), ils reprogramment leurs détectiondes mouvements
ps : ma question est peut etre formulée maladroitement (notemment avec l'utilisation du terme api)
Message édité par farib le 29-08-2002 à 00:23:43