1 /* Spaceball support for Linux.
\r
2 * Written by John Tsiombikas <nuclear@member.fsf.org>
\r
4 * This code supports 3Dconnexion's 6-dof space-whatever devices.
\r
5 * It can communicate with either the proprietary 3Dconnexion daemon (3dxsrv)
\r
6 * free spacenavd (http://spacenav.sourceforge.net), through the "standard"
\r
7 * magellan X-based protocol.
\r
10 #include <GL/freeglut.h>
\r
11 #include "freeglut_internal.h"
\r
13 /* -- PRIVATE FUNCTIONS --------------------------------------------------- */
\r
15 extern void fgPlatformInitializeSpaceball(void);
\r
16 extern void fgPlatformSpaceballClose(void);
\r
17 extern int fgPlatformHasSpaceball(void);
\r
18 extern int fgPlatformSpaceballNumButtons(void);
\r
19 extern void fgPlatformSpaceballSetWindow(SFG_Window *window);
\r
22 int sball_initialized = 0;
\r
24 void fgInitialiseSpaceball(void)
\r
26 if(sball_initialized != 0) {
\r
30 fgPlatformInitializeSpaceball();
\r
32 sball_initialized = 1;
\r
35 void fgSpaceballClose(void)
\r
37 fgPlatformSpaceballClose();}
\r
39 int fgHasSpaceball(void)
\r
41 if(sball_initialized == 0) {
\r
42 fgInitialiseSpaceball();
\r
43 if(sball_initialized != 1) {
\r
44 fgWarning("fgInitialiseSpaceball failed\n");
\r
49 return fgPlatformHasSpaceball();
\r
52 int fgSpaceballNumButtons(void)
\r
54 if(sball_initialized == 0) {
\r
55 fgInitialiseSpaceball();
\r
56 if(sball_initialized != 1) {
\r
57 fgWarning("fgInitialiseSpaceball failed\n");
\r
62 return fgPlatformSpaceballNumButtons();
\r
65 void fgSpaceballSetWindow(SFG_Window *window)
\r
67 if(sball_initialized == 0) {
\r
68 fgInitialiseSpaceball();
\r
69 if(sball_initialized != 1) {
\r
74 fgPlatformSpaceballSetWindow(window);
\r