Hi Torsten, Hi, > > I am currently playing with the input subsystem. This was triggered because I > have two devices that currently do not work with FlightGear, neither Linux > nor > Windows. > > 1. A set of rudder pedals that does not get recognized as a joystick from > joydev, because it reports it's axes as RX,RY and Z and the lack of an X-Axis > stops joydev from using it as a joystick. > > 2. A 3dconnexion (http://www.3dconnexion.com/) SpaceNavigator 3D-Mouse which > is basically a 6-axes/2buttons/1LED device. > > Both devices are HID devices and are handled by the Linux input/event driver. > For example, the SpaceNavigator shows up in /proc/bus/input/devices as > > I: Bus=0003 Vendor=046d Product=c626 Version=0110 > N: Name="3Dconnexion SpaceNavigator" > P: Phys=usb-0000:00:1d.1-1/input0 > S: Sysfs=/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:1.0/input/input9 > U: Uniq= > H: Handlers=event9 > B: EV=20017 > B: KEY=3 0 0 0 0 > B: REL=3f > B: MSC=10 > B: LED=100 > > My idea is to extend the FGInput class so it can use the devices presented > thru the event interface. While at it, I'd also like to add hotplug support > for devices, plugged in or out while FlightGear runs. > > What I have so far locally is a system that can use the input devices. Events > and devices are configured with xml config files like this, similiar to > joystick config files (just one event shown here for better readability): > > <PropertyList> > <name>3Dconnexion SpaceNavigator</name> > <event> > <name>rel-y-translate</name> > <binding> > <command>property-adjust</command> > <property>sim/current-view/field-of-view</property> > <factor type="double">0.01</factor> > <min type="double">10.0</min> > <max type="double">80.0</max> > <wrap type="bool">false</wrap> > </binding> > </event> > </PropertyList> > > See it in action here: > http://www.youtube.com/watch?v=b8Me8d9UZLA > The black knob can be twisted around and shifted along the x/y/z axes. These > movements are translated into events which adjust the current-view direction > and the field of view. The cool blue LED-light is controlled by FlightGear > and indicates gear-down (YES! It's bidirectional communication). > > Adding/removing of devices is reported by HAL and DBUS on Linux and > DirectInput on Win. I don't know how Macs deal with that, but I am certain > there is a way for the macs, too. > > While I really like the new functionality and I see many advantages from > moving into this direction, there are also some disadvantage and I'd like to > open the discussion before I commit anything. > > Advantages: > - Adding additional and generic support for a wide variety of devices > - Named events, no more axis numbers and confusion between Linux/Win/Mac > - Bidirectional communication (switch on/off LED's, probably force feedback > etc.) > - Might obsolete one plib dependency > > Disadvantages: > - Introduces platform dependency, individual implementations needed for > Linux/Win/Mac > - Adds new library dependency (dbus/hal on linux DirectInput on Win, ??? on > Mac)
if I am not totally wrong than hal will be skipped in favor of devicekit in the near future by probably all Linux distributions. Fedora 11 is already using some parts of it. > > What do you think? Are the new features worth introducing new dependencies > and > platform dependent modules? > > Torsten > > P.S.: The GIMP also uses these techniques. Go to the "settings" dialog and > select "Input Devices". > Matthias ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel