@@ -3,30 +3,65 @@ libspnav
33
44About
55-----
6+ Libspnav is a C library for receiving input from 6 degrees-of-freedom (6dof)
7+ input devices, also known as spacemice, spaceballs, etc. 6dof input is very
8+ useful for fluidly manipulating objects or viewpoints in 3D space, and
9+ fundamendally comprises of relative movement (translation) across 3 axes
10+ (TX/TY/TZ), and rotation about 3 axes (RX/RY/RZ).
611
7- The libspnav library is provided as a replacement of the magellan library. It
8- provides a cleaner, and more orthogonal interface. libspnav supports both the
9- original X11 protocol for communicating with the driver, and the new
10- alternative non-X protocol. Programs that choose to use the X11 protocol, are
11- automatically compatible with either the free spacenavd driver or the official
12- 3dxserv, as if they were using the magellan SDK.
12+ Libspnav is a counterpart to the free spacenav driver (spacenavd), which runs as
13+ a system daemon, and handles all the low level interfacing with the actual
14+ devices. However, it can also communicate with the proprietary 3Dconnexion
15+ driver (3dxsrv), with reduced functionality.
1316
14- Also, libspnav provides a magellan API wrapper on top of the new API. So, any
15- applications that were using the magellan library, can switch to libspnav
16- without any changes. And programmers that are familiar with the magellan API
17- can continue using it with a free library without the restrictions of the
18- official SDK.
17+ There are two modes of operation supported by libspnav:
18+
19+ 1 . It can use the native spacenav protocol, which works over UNIX domain
20+ sockets, supports the whole feature set exposed by libspnav, but is only
21+ compatible with spacenavd. This is used when ` spnav_open ` is called to
22+ connect to the driver.
23+
24+ 2 . It can use the X11 magellan protocol, based on X ` ClientMessage ` events,
25+ which is compatible with both spacenavd and the proprietary 3dxsrv, but
26+ only supports a limited subset of features. Basically just receiving input
27+ events and changing sensitivity, no queries, device information, or
28+ configuration management. This is used when ` spnav_x11_open ` is called to
29+ connect to the driver.
30+
31+ Also, libspnav provides a magellan API wrapper on top of the libspnav API, which
32+ allows existing applications written for the official SDK to be transparently
33+ recompiled against libspnav and be free of the 3Dconnexion licensing conditions.
34+
35+ Documentation
36+ -------------
37+ To learn how to use libspnav in your programs, refer to the [ manual] ( doc/manual.md ) ,
38+ which is available in markdown format under the ` doc ` directory of the libspnav
39+ distribution. The manual is also available online in HTML format on the free
40+ spacenav project website: http://spacenav.sourceforge.net/man_libspnav
41+
42+ Also make sure to check out the example programs which come with libspnav under
43+ the ` examples ` directory.
44+
45+ ![ examples] ( http://spacenav.sourceforge.net/images/exbar.png )
1946
2047
2148Installation
2249------------
50+ To build and install libspnav, simply run:
51+
52+ ./configure
53+ make
54+ make install
2355
24- Configure, make, and make install as usual.
56+ Most likely the ` make install ` part will need to be executed as root, if you're
57+ installing libspnav system-wide, which is the common case
58+ (default prefix is: ` /usr/local ` ).
59+
60+ Running ` ./configure --help ` prints available build options.
2561
2662
2763License
2864-------
29-
3065Copyright (C) 2007-2022 John Tsiombikas < nuclear@member.fsf.org >
3166
3267libspnav is free software. Feel free to use, modify, and/or redistibute it
0 commit comments