2 pointeurs a l'ecran pour 2 souris

2 pointeurs a l'ecran pour 2 souris - C++ - Programmation

Marsh Posté le 23-04-2004 à 11:27:36    

Bonjour a tous !
 
en ce moment je cherche comment faire pour que 2 souris branchees sur l'ordi donne 2 pointeurs independants a l'ecran au lieu de 1 (cas normal)
 
je bosse sous Windows donc j'essaie de faire avec MFC
mais c'est mes debuts et je me debrouille pas trop bien
 
personne n'aurait une piste ou un conseil ?
merci d'avance

Reply

Marsh Posté le 23-04-2004 à 11:27:36   

Reply

Marsh Posté le 23-04-2004 à 11:35:29    

Faire un driver.

Reply

Marsh Posté le 23-04-2004 à 14:57:01    

c'est mal parti, pour cela il faudrait que le serveurs graphique en soit capable. déjà d'un point de vue cohérence des messages envoyés aux process, mais aussi d'un point de vue graphique (généralement les cartes vidéos n'ont qu'un seul curseur accéléré matériellement, donc il faudrait avoir le premier curseur accéléré, et l'autre traçé par voie soft)
 
c'est peut être jouable, mais il va falloir peut être que tu te tapes la gestion de l'affichage de la souris toi même, et le système de génération de messages.
 
tu veux quoi, que ça marche avec n'importe quelle application ? (chaud)
ou uniquement avec la tienne ? (plus praticable)


Message édité par bjone le 23-04-2004 à 14:59:09
Reply

Marsh Posté le 23-04-2004 à 16:30:39    

c'est pour faire une librairie C++ reutilisable (he,galere)  
 
je cherche comment faire ce driver mais je trouve pas... ouin! mais comment qu'on fait ?

Reply

Marsh Posté le 23-04-2004 à 16:45:18    

spour jouer a deux au demineur http://users.skynet.be/polo021/cupra.gif

Reply

Marsh Posté le 23-04-2004 à 16:55:30    

non pas trop
c pour une appli permettant a ceux ki sont habitues a utiliser leurs 2 mains ( ie une musiscien ) de gagner du temps

Reply

Marsh Posté le 23-04-2004 à 17:00:01    

bucheron-dav a écrit :

non pas trop
c pour une appli permettant a ceux ki sont habitues a utiliser leurs 2 mains ( ie une musiscien ) de gagner du temps


 
 :ouch:

Reply

Marsh Posté le 23-04-2004 à 17:08:35    

Sur un même ordi on peut avoir 2 souris, 2 claviers, 2 écrans de branchés... ça fait rêver.

Reply

Marsh Posté le 23-04-2004 à 17:13:07    

ouais mais y aa encore du boulot... ;)

Reply

Marsh Posté le 23-04-2004 à 17:17:42    

bah, sous windows tu branches 2 claviers, les deux claviers envoyent leur messages à la même fenêtre.
idem pour la souris, fo une gestion multi-pointeur au niveau serveur graphique, si tu as les messages de chaque souris sont envoyés à deux fenêtre différentes tu gardes la cohérence...
mais si les messages des deux souris arrivent à la même fenêtre, une application win32 classique petera les plombs...
 
(enfin je pense)
 
je pense po mais q'un serveur X se démerdes spécialement mieux (mais y'a ptet plus de bricolage possible)


Message édité par bjone le 23-04-2004 à 17:19:19
Reply

Marsh Posté le 23-04-2004 à 17:17:42   

Reply

Marsh Posté le 23-04-2004 à 17:20:09    

Oui, mais avec 2 écrans...
Mieux : avec le fast user switching depuis XP, tu peux avoir 2 users simultanément logué sur le même poste...
chacun sa session, son écran sa souris, son clavier...
Le mec qui sort ce soft, je pense qu'il se fait des couilles en or.

Reply

Marsh Posté le 23-04-2004 à 17:22:20    

oui mais, c'est chacun sa session en tour à tour, ou en simultané ?  
 
pour moi le fast user switching c'est du tour à tour, tu as un couple d'entrée clavier+souris, et les process des utilisateurs ne reçoivent plus de messages clavier/souris quand tu bascules d'utilisateur...
 
les 2 écrans ou + (tu peux compter 2 ou 3 écrans par carte video, avec un 1 agp et 5 pci...) sont considérés comme étant éléments du même bureau. (et le problème n'est pas le bureau, le problème c'est les fenêtres et leur manière de gérer les messages)


Message édité par bjone le 23-04-2004 à 17:24:16
Reply

Marsh Posté le 23-04-2004 à 17:29:29    

mon probleme pour l'instant c'est un ecran  
mais deux souris en simultanee

Reply

Marsh Posté le 23-04-2004 à 17:33:21    

C'est en simultané.
Si t'es admin look tous les process : tu as autant de winlogon que de user connectés.
Ils sont indépendants.
Les écrans, clavier, souris, presse-papier, etc... sont rattachés à une windowstation.
L'objectif serait d'avoir 2 windowstation avec chacun son clavier, son écran et sa souris.
Et ces 2 windowstation tu les as avec tes 2 sessions.
Le pblm c'est qu'il ne peut y avoir qu'une seule windowstation active à la fois. Faudrait changer ça en gérant le routage des IT souris & clavier. C'est pas gagné...

Reply

Marsh Posté le 23-04-2004 à 17:35:31    

La réponse tu l'as : c'est pas possible.
Question bête : que devrait-il se passer si tes 2 souris sélectionnent du texte en même temps par exemple ?

Reply

Marsh Posté le 23-04-2004 à 17:37:58    

c me pause un GROS GROS probleme si c'est pas possible
 
reponse bete :  
le curseur ne serait separe que pendant l'application

Reply

Marsh Posté le 23-04-2004 à 17:51:12    

Citation :

c me pause un GROS GROS probleme si c'est pas possible


Y'a plusieurs probleme, et le premier, c'est distinguer les messages entre les 2 souris. Moi je sais pas faire.
 

Citation :

reponse bete :  
le curseur ne serait separe que pendant l'application


Et alors, Tu vas forcément donner le focus à 2 fenêtres en même temps d'ou un gros bordel. Ou alors le focus est donné seulement à la dernière souris utilisée. Tu parles d'un gain de temps.
Avec la première souris tu clic sur un menu, et hop il disparait car la seconde a fait je sais pas quoi.
 
Rappele-nous le but ? => exemple

Reply

Marsh Posté le 23-04-2004 à 20:41:57    

tu voudrais donner la possibilite a deux utilisateurs de travailler en mm temps sur la mm session ?
 
deja ya un probleme au niveau clavier , vu que seul la fenetre active recoit les msg

Reply

Marsh Posté le 24-04-2004 à 02:21:58    

c possible : sous settlers 2 (ouhais je sais), on pouvait jouer à 2 en même temps avec 2 souris en écran splitté...
 
-->fallait une ps2 et une com...la ps2 était la primaire, la com la secondaire...Et ca marchait très bien...
 
bon ok ct sous dos...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 24-04-2004 à 12:44:16    

Jubijub a écrit :


bon ok ct sous dos...


 
ben voila , sous winXp on peut pas acceder au matos directement a moins de developper un driver  
 
et puis comme ca ete dit avant faudra encore tout refaire a la main ensuite (en envoyant des msg a l'appli)

Reply

Marsh Posté le 24-04-2004 à 13:22:48    

:(
mais je crois que j'ai pas le choix
merci

Reply

Marsh Posté le 09-09-2004 à 11:05:09    

Jubijub a écrit :

c possible : sous settlers 2 (ouhais je sais), on pouvait jouer à 2 en même temps avec 2 souris en écran splitté...
 
-->fallait une ps2 et une com...la ps2 était la primaire, la com la secondaire...Et ca marchait très bien...
 
bon ok ct sous dos...


C'est exactement ce à quoi je pensais en lisant ca... [:tinostar] :lol:
 
Et moi je crois bien que j'avais mes souris sur les ports COM1 et COM2, puisque j'avais pas de port ps2 sur mon Asus TX97... :D

Reply

Marsh Posté le 09-09-2004 à 11:39:00    

ct sous dos...
Ca dit donc que tu avais un systeme de fenetrage qui le gerait. C'est pas le cas sous windows (et autres gestionnaires de fenetres modernes, pour une raison evidente: le modele courant suppose un seul focus a un instant donné, pour eviter des pbs de conflit complexes.)
 
Le seul truc qui etait possible sans pb conceptuel, c'etait de partager une fenetre sur plusieurs ecrans [On avait realise ca sous XWindows pour un de mes produits au debut des années 90, a la pogne avec les primitives XWindows. Depuis ce genre de chose s'est integre au systeme.]
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 09-09-2004 à 11:50:06    

Ah beh vi je disais pas ca pour dire que "si Settler2 le faisait on peut donc le faire facilement"... ;) Effectivement c'etait sous dos et là sous windows ca n'est plus la meme histoire... ;) (D'ailleurs je ne sais pas si vous avez deja essayé, mais deux souris connectés sur un PC sous windows se comporte comme une seule et meme souris envoient des messages comme si tout provenait d'une seule et unique souris ;))

Reply

Marsh Posté le 09-09-2004 à 13:01:46    

HelloWorld a écrit :

Sur un même ordi on peut avoir 2 souris, 2 claviers, 2 écrans de branchés... ça fait rêver.


 
Ouais en plus y'a un marché à conquérir du côté de Tchernobil  ;)
 
4 bras c'est le top, mais il faut du matos adapté  :lol:  
 
Sinon je ne vois franchement pas dans quel cas un utilisateur peut avoir besoin de 2 souris... a la limite tu te sert d'un écran tactile si le mec a vraiment envie de gigoter, mais sinon ca parait un peu gadget...

Reply

Marsh Posté le 09-09-2004 à 14:09:38    

bah plusieures souris ça pourrait être utile.
 
pour les applis normales je reste sur le "c'est pas possible de garder la cohérence".
 
par contre peut être faire évoluer le DirectInput du DirectX pour faire du multi-souris.  
 
et donc avoir une souris générale, la classique, et une souris en DirectInput gérée de manière dédiée par l'application. (et de n'avoir en fait qu'un traitement des pressions de souris, mais pas des entrée/sorties de surface, focus, etc,  etc....)

Reply

Marsh Posté le 09-09-2004 à 14:23:01    

Ben je crois que ça existe plus ou moins, du moins dans des labos de recherche. Le principe c'est de se servir de ses 2 mains : celle que tu utilises actuellement est la plus précise et fait les actions, l'autre attrape des fenêtres et les apporte près de l'autre souris. C'est inspiré de la vrai vie ou tu fais tout a 2 main : une qui est imprécise (tenir une feuille) et l'autre qui fait les actions (écrire une lettre). Pour la réalité virtuele aussi, mais je crois que ça passe plus par des joystick et trucs du genre.
Moi j'avais pensé que ce serait bien un jeu video d'avions avec 2 manettes :)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 09-09-2004 à 14:24:19    

Beh dans un jeu de navions tu peux faire passer ca pour une manette avec pleins d'axes sinon... :ange: :D

Reply

Marsh Posté le 09-09-2004 à 15:16:56    

HelloWorld a écrit :

Ben je crois que ça existe plus ou moins, du moins dans des labos de recherche. Le principe c'est de se servir de ses 2 mains : celle que tu utilises actuellement est la plus précise et fait les actions, l'autre attrape des fenêtres et les apporte près de l'autre souris. C'est inspiré de la vrai vie ou tu fais tout a 2 main : une qui est imprécise (tenir une feuille) et l'autre qui fait les actions (écrire une lettre). Pour la réalité virtuele aussi, mais je crois que ça passe plus par des joystick et trucs du genre.
Moi j'avais pensé que ce serait bien un jeu video d'avions avec 2 manettes :)


 
le DirectInput est multi-manettes.
 
sur tous les simulateurs actuels tu peux utiliser plusieurs joysticks en même temps (IL2 et LockOn).
 

Reply

Marsh Posté le 11-09-2004 à 14:48:25    

Oui, ça marche avec plusieurs joysticks, mais les drivers sont déjà développés...  Bah, un driver en c ça doit être possible, non ?


Message édité par Fishes le 11-09-2004 à 14:49:42
Reply

Marsh Posté le 11-09-2004 à 15:21:15    

bin c'est pas ça, c'est un pilote de souris qu'il faut, mais ça doit etre possible (au niveau DI j'entends).


Message édité par bjone le 11-09-2004 à 15:30:54
Reply

Marsh Posté le 11-09-2004 à 15:50:17    

Oui le pilote de souris, mais il acceptera pas qu'une deuxième puisse venir lui dire bonjour.
 
je suppose qu'il faut désactiver le premier et en refaire 1 seul pour les deux souris...  Mais windows va sûrement pas apprécier :/

Reply

Marsh Posté le 11-09-2004 à 16:05:57    

C'est pas un probleme de pilote souris. Tu pe avoir 2 souris branchees, c'est tres frequent meme (le mousepad d'un portable + une souris), mais c'est Windows qui va fusionner les input de ces 2 drivers. C'est le bout de code qui gère le focus + le pointeur à l'écran qu'il fo modifier, c.a.d l'OS. En + c'est géré par la carte video le curseur souris, et je pense pas qu'elles en supporte 2.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 11-09-2004 à 16:31:10    

bah il peut tjs en dessiner un lui mm a coup de bitblt mais je le sens tres mal pour les perfs :/

Reply

Marsh Posté le 11-09-2004 à 16:39:15    

C'est bcp plus complexe... Tu dois sauvegarder l'image effacée par ton curseur et la restaurer quand il bouge (faisable), mais aussi détecter quand celui-ci est effacé et le redessiner (ca déjà...). Exemple : un curseur au dessus d'un film qui est lu. 25 fois pas secondes l'image est redessinée, et en plus c'est une fenêtre spéciale DirectShow... C'est pas pour rien que la carte video gère tout ça. Et faut virer le curseur lors d'un impr écran :D


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 11-09-2004 à 17:26:46    

http://img90.exs.cx/img90/7087/screen001.jpg
ok je sors
 
nempeche ca montre bien la possibilite dafficher pllusieurs curseurs de maniere hardware...


Message édité par red faction le 11-09-2004 à 17:28:26
Reply

Marsh Posté le 11-09-2004 à 17:52:25    

Ah oui bien vu. Ca mériterait une petite recherche sur comment c'est fait. Mais le plus dur reste a faire : gérer le focus. Par exemple, que se passe-t-il quand une application capture la souris ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 12-09-2004 à 16:44:34    

red faction a écrit :

http://img90.exs.cx/img90/7087/screen001.jpg
ok je sors
 
nempeche ca montre bien la possibilite dafficher pllusieurs curseurs de maniere hardware...


 
ça ne prouve pas que ce soit hardware.
 
un curseur software, c'est un curseur qui pourrrait clignoter lors du retraçage de la fenêtre sour le curseur. (ie sous Windows 95 avec une carte vidéo pourrie, quand tu as une animation, le curseur clignote).
 
un curseur hardware, c'est proche du ramdac, quand le ramdac balayes la surface d'affichage, il "teste" pour savoir si il est dans la zone du curseur, et si oui fait une opération de masque.  
 
avec un curseur hardware, le curseur n'est jamais traçé en ram vidéo (dumoins dans la surface balayée par le ramdac), alors qu'avec un curseur soft, ça compte un peu comme une surface/fenêtre.
 
pour la trainée tu peux très bien avoir le curseur principal en hardware, et les curseurs de trainées en software, qui pourraient clignoter sur des animations. (pas de la vidéo en overlay).
 
le curseur hardware, c'est comme les overlays, c'est dur d'en avoir un nombre illimité par conception.


Message édité par bjone le 12-09-2004 à 16:44:57
Reply

Marsh Posté le 12-09-2004 à 19:40:22    

enfin, ce qu'il y a de bizarre c'est que lui sur son imprim écran, il a les trainées (donc, ce serait plutôt du soft) alors que moi non.

Reply

Marsh Posté le 12-09-2004 à 23:35:35    

raytaller a écrit :

enfin, ce qu'il y a de bizarre c'est que lui sur son imprim écran, il a les trainées (donc, ce serait plutôt du soft) alors que moi non.


 
j'ai pas essayé effectivement, d'ailleurs il serait interressant de savoir ce que l'OS fait lors d'une impression d'écran (lecture en ram vidéo, ou re-paint dans une surface en mémoire système)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed