2010-11-08 8 views
2

J'essaye de créer une enveloppe de souris dans X11 pour les jeux/contenus openGL. L'approche que j'essayais de prendre est de cacher le curseur (ce que je peux faire très bien), verrouiller la position de la souris au centre de la fenêtre et ensuite utiliser les positions delta de la souris pour détecter le mouvement. Cependant, je ne trouve aucun moyen de verrouiller la position de la souris, sinon de la ramener au centre à chaque image.XLib Lock Position de la souris (habillage de la souris)

Dans Windows, cela peut être fait avec ClipCursor() et dans le retour de souris OSX peut être fait en utilisant CGWarpMouseCursorPosition. Est-ce que quelque chose de similaire existe dans les bibliothèques XLib?

Répondre

1

libSDL fait exactement cela et le code source de ceci pourrait être un bon point de départ pour votre propre implémentation. Alternativement, si l'objectif est une application en plein écran multiplateforme, l'utilisation directe de SDL peut vous éviter de réinventer la roue ici.

Le fichier en question pour X11 semble être src/video/x11/SDL_x11mouse.c, en particulier l'implémentation de X11_WarpWMCursor.

+0

Ce code m'a aidé. Comme je voulais éviter d'ajouter une dépendance à libSDL, ce que j'ai fini par faire c'est que chaque fois que la souris arrivait à 5 ticks du bord de la fenêtre, j'utilisais XWarpMouse pour le centrer et ignorer le prochain mouvement de souris. – Kulidan

Questions connexes