Some further documentation improvements

This commit is contained in:
Ingo Ruhnke 2010-05-06 21:35:12 +02:00
parent 5a4e71395d
commit 27a565d429
2 changed files with 122 additions and 108 deletions

View file

@ -94,27 +94,25 @@
</refsect1>
<refsect1>
<title>Running xboxdrv via xboxdrv-daemon.py</title>
<para>You can also run xboxdrv automatically whenever you plug in a gamepad via:</para>
<title>Running xboxdrv via xboxdrv-daemon</title>
<programlisting>% tools/xboxdrv-daemon.py</programlisting>
<para>
Since xboxdrv-daemon.py needs to know where xboxdrv is located you
need to supply the location of the xboxdrv binary manually if its not
located in <envar>PATH</envar>:
<para><command>xboxdrv-daemon</command> allows you to run xboxdrv
automatically whenever you plug in a gamepad. Since
xboxdrv-daemon.py needs to know where xboxdrv is located you need
to supply the location of the xboxdrv binary manually if its not
located in <envar>PATH</envar>:
</para>
<programlisting>% tools/xboxdrv-daemon.py --xboxdrv ./xboxdrv</programlisting>
<programlisting>% xboxdrv-daemon --xboxdrv ./xboxdrv</programlisting>
<para>You can pass arguments to xboxdrv after a double dash '--':</para>
<programlisting>% tools/xboxdrv-daemon.py -- --buttonmap B=A,X=A,Y=A</programlisting>
<programlisting>% xboxdrv-daemon -- --buttonmap B=A,X=A,Y=A</programlisting>
<para>You can also run scripts that get started after xboxdrv is started
via:</para>
<programlisting><![CDATA[% tools/xboxdrv-daemon.py \
<programlisting><![CDATA[% xboxdrv-daemon \
--attach /home/juser/xboxdrv_attach \
--detach /home/juser/xboxdrv_deatach]]></programlisting>
@ -149,5 +147,12 @@ wait $XBOXPID
<para>That way you can individually configure every game and still not have
to worry about launching xboxdrv manually.</para>
</refsect1>
<refsect1>
<title>See also</title>
<para>
xboxdrv(1)
</para>
</refsect1>
</refentry>

View file

@ -153,7 +153,11 @@
<term><option>-D</option>, <option>--daemon</option></term>
<listitem>
<para>
Run as daemon.
Run as daemon. In most situations this is not very
useful, as <command>xboxdrv</command> will fail when the
pad is removed or plugged in. See xboxdrv-daemon(1) for
a way to launch <command>xboxdrv</command>
automatically.
</para>
</listitem>
</varlistentry>
@ -451,7 +455,8 @@
</varlistentry>
<varlistentry>
<term><option>--ui-buttonmap, --ui-axismap</option></term>
<term><option>--ui-buttonmap</option> <replaceable class="parameter">BUTTON=UIBUTTONSPEC</replaceable>,
<option>--ui-axismap</option> <replaceable class="parameter">AXIS=UIAXISSPEC</replaceable></term>
<listitem>
<para>
Another more low level form to remap buttons and axis
@ -492,8 +497,8 @@
When you try to let a gamepad key send a keyboard events
Xorg must register it as keyboard device to work
properly. This seems to work automatically when you bind
more then two keyboard keys, if you bind less you need to
create the
more then two keyboard keys, if you bind less you need
to create the
file <filename>/etc/hal/fdi/preprobe/xboxdrv.fdi</filename>
containing:
</para>
@ -532,24 +537,28 @@
first parameter is optional:
</para>
--ui-axismap X1=REL_???:VALUE:REPEAT
<table>
<tgroup cols="2">
<colspec colwidth="1*"/>
<colspec colwidth="2*"/>
<tbody>
<row>
<entry>VALUE:</entry>
<entry>the maximum value of the event (default: 10)</entry>
</row>
<row>
<entry>REPEAT:</entry>
<entry>number of milisecond to pass before the event is fired again (default: 5)</entry>
</row>
</tbody>
</tgroup>
</table>
<variablelist>
<varlistentry>
<term>--ui-axismap X1=REL_???:VALUE:REPEAT</term>
<listitem>
<table>
<tgroup cols="2">
<tbody>
<row>
<entry>VALUE:</entry>
<entry>the maximum value of the event (default: 10)</entry>
</row>
<row>
<entry>REPEAT:</entry>
<entry>number of milisecond to pass before the event is fired again (default: 5)</entry>
</row>
</tbody>
</tgroup>
</table>
</listitem>
</varlistentry>
</variablelist>
<programlisting><![CDATA[--ui-axismap X1=KEY_UP:KEY_DOWN:THRESHOLD
KEY_UP: keycode to be send when the axis is moved up
@ -559,24 +568,22 @@
--ui-buttonmap X1=REL_???:VALUE:REPEAT
VALUE: the of the event (default: 10)
REPEAT: number of milisecond to pass before the event is fired again (default: 5)]]></programlisting>
<para>
If you want to get rid of all uinput mappings you can use --ui-clear
which will leave the driver in a blank state and only map those things
you add later. You can get rid of individual buttons by using the
'void' event:
</para>
<programlisting><![CDATA[% xboxdrv \
--ui-buttonmap tr=void,tl=void,lb=void,rb=void \
--ui-axismap x2=void,y2=void,rt=void,lt=void,dpad_x=void,dpad_y=void]]></programlisting>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--ui-clear</option></term>
<listitem>
<para>Removes all existing uinput bindings</para>
<para>
Removes all uinput mappings and will leave the driver in
a blank state and only map those things you added
yourself. If you only want to get rid of individual
buttons you can use the 'void' event:
</para>
<programlisting><![CDATA[% xboxdrv \
--ui-buttonmap tr=void,tl=void,lb=void,rb=void \
--ui-axismap x2=void,y2=void,rt=void,lt=void,dpad_x=void,dpad_y=void]]></programlisting>
</listitem>
</varlistentry>
@ -647,7 +654,6 @@ pos = (1.0f - (1.0f - pos) ** t) ** (1 / t);]]></programlisting>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--relative-axis AXIS=NUM,...</option></term>
<listitem>
@ -706,7 +712,6 @@ pos = (1.0f - (1.0f - pos) ** t) ** (1 / t);]]></programlisting>
</listitem>
</varlistentry>
<varlistentry>
<term><option>--axis-sensitivty <replaceable class="parameter">AXIS=SENSITIVITY</replaceable></option>,...</term>
<listitem>
@ -733,45 +738,16 @@ pos = (1.0f - (1.0f - pos) ** t) ** (1 / t);]]></programlisting>
<term><option>--force-feedback</option></term>
<listitem>
<para>
Force feedback is disabled by default and has to be enabled with:
Enables the standard kernel force feedback interface. It
is disabled by default as it causes trouble with some
applications running in Wine.
</para>
<programlisting>% ./xboxdrv --force-feedback</programlisting>
<para>
Xboxdrv works via the standard kernel force feedback
interface. For documentation on the FF interface see:
</para>
<itemizedlist>
<listitem><ulink url="http://github.com/github/linux-2.6/blob/f3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b/Documentation/input/ff.txt"></ulink></listitem>
<listitem><filename>/usr/include/linux/input.h</filename></listitem>
</itemizedlist>
<para>
Additional, non Linux related, force feedback related
information can be found at:
</para>
<itemizedlist>
<listitem><ulink url="http://www.immersion.com/developer/downloads/ImmFundamentals/HTML/"/></listitem>
<listitem><ulink url="http://msdn.microsoft.com/en-us/library/bb219655(VS.85).aspx" /></listitem>
</itemizedlist>
<para>fftest is an application you can use to test the force feedback
interface.</para>
<para>Since the Xbox360 controller supports just rumble not full force
Since the Xbox360 controller supports just rumble not full force
feedback, xboxdrv tries to emulate other effects. This emulation
hasn't been tested much and might not always work as expected. Bug
reports and test cases are welcome.</para>
<para>Force feedback is disabed by default since it seems to causes trouble
in certain application, namely "Tomb Raider: Legend" when run in Wine
it crashes at startup when rumble is enabled, while it works perfectly
normal when rumble is disabled.</para>
<para>"Tomb Raider: Anniversary" running in Wine seems to work together with
xboxdrv and rumble, but hasn't been intensivly tested.</para>
reports and test cases are welcome.
</para>
<para>
Note that you must close the application that is using force feedback
always before you close the xboxdrv driver, else you might end up with
@ -782,7 +758,7 @@ pos = (1.0f - (1.0f - pos) ** t) ** (1 / t);]]></programlisting>
</varlistentry>
<varlistentry>
<term><option>--rumble-gain</option> <replaceable class="parameter">PERCENT</replaceable></term>
<term><option>--rumble-gain</option> <replaceable class="parameter">AMOUNT</replaceable></term>
<listitem>
<para>You can change the rumble strength via:</para>
@ -875,9 +851,9 @@ pos = (1.0f - (1.0f - pos) ** t) ** (1 / t);]]></programlisting>
<programlisting>% ./xboxdrv ---led 0 --rumble 0,0 --quit</programlisting>
<para>For rumble to work make sure you have connected the controller to a
USB port that has enough power, i.e. an unpowered USB hub might not
work.</para>
<para>For rumble to work make sure you have connected the
controller to a USB port that has enough power, an unpowered USB
hub might not work.</para>
</refsect1>
<refsect1>
@ -1192,7 +1168,7 @@ joysticktype = ch]]></programlisting>
then. If your controller does not work and you get plenty of those
lines when you move the sticks or press buttons it means that your
controller talks an un-understood protocol and some reverse
enginiering is required. Contact grumbel@gmx.de and include the output
enginiering is required. Contact <email>grumbel@gmx.de</email> and include the output
of:
</para>
@ -1246,46 +1222,79 @@ joysticktype = ch]]></programlisting>
</refsect2>
</refsect1>
<refsect1>
<title>Force Feedback Programming</title>
<para>
For documentation on the FF interface see:
</para>
<itemizedlist>
<listitem><ulink url="http://github.com/github/linux-2.6/blob/f3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b/Documentation/input/ff.txt">http://github.com/github/linux-2.6/blob/f3b8436ad9a8ad36b3c9fa1fe030c7f38e5d3d0b/Documentation/input/ff.txt</ulink></listitem>
<listitem><filename>/usr/include/linux/input.h</filename></listitem>
</itemizedlist>
<para>
Additional, non Linux related, force feedback related
information can be found at:
</para>
<itemizedlist>
<listitem><ulink url="http://www.immersion.com/developer/downloads/ImmFundamentals/HTML/"></ulink></listitem>
<listitem><ulink url="http://msdn.microsoft.com/en-us/library/bb219655(VS.85).aspx"></ulink></listitem>
</itemizedlist>
<para><command>fftest</command> is an application you can use to test the force feedback
interface.</para>
<para>Force feedback is disabed by default since it seems to causes trouble
in certain application, namely "Tomb Raider: Legend" when run in Wine
it crashes at startup when rumble is enabled, while it works perfectly
normal when rumble is disabled.</para>
<para>"Tomb Raider: Anniversary" running in Wine seems to work together with
xboxdrv and rumble, but hasn't been intensivly tested.</para>
</refsect1>
<refsect1>
<title>BUGS</title>
<para>
X11 keysyms might not work correctly in <option>--ui-buttonmap a=XK_Foobar</option>
when Foobar is mapped to multiple keycodes in the keymap.
</para>
<para>
X11 keysyms might not work correctly in <option>--ui-buttonmap a=XK_Foobar</option>
when Foobar is mapped to multiple keycodes in the keymap.
</para>
<para>Workaround: Use <keysym>KEY_</keysym> instead or cleanup your keymap</para>
<para>Workaround: Use <keysym>KEY_</keysym> instead or cleanup your keymap</para>
<para>
Force feedback support is brittle, if you Ctrl-c the driver in the
wrong moment you will end up with a dead uninterruptable process and
basically have to reboot. This looks like it might be a kernel issue
and not a xboxdrv one.
</para>
<para>
Force feedback support is brittle, if you Ctrl-c the driver in the
wrong moment you will end up with a dead uninterruptable process and
basically have to reboot. This looks like it might be a kernel issue
and not a xboxdrv one.
</para>
<para>
Workaround: Kill the app that uses xboxdrv before xboxdrv itself.
</para>
<para>
Workaround: Kill the app that uses xboxdrv before xboxdrv itself.
</para>
<para>
Report new bugs to Ingo Ruhnke <email>grumbel@gmx.de</email>.
</para>
<para>
Report new bugs to Ingo Ruhnke <email>grumbel@gmx.de</email>.
</para>
</refsect1>
<refsect1>
<title>Copyright</title>
<para>
Copyright © 2010 Ingo Ruhnke <email>grumbel@gmx.de</email>
License GPLv3+: GNU GPL version 3 or later
License GPLv3+: GNU GPL version 3 or later
<ulink url="http://gnu.org/licenses/gpl.html" />. This is free software: you
are free to change and redistribute it. There is NO WARRANTY,
to the extent permitted by law.
are free to change and redistribute it. There is NO WARRANTY,
to the extent permitted by law.
</para>
</refsect1>
<refsect1>
<title>See also</title>
<para>
xboxdrv-daemon(1), evtest(1), jstest(1), xev(1), fftest(1), lsusb(1)
</para>
</refsect1>