Event Client Examples and PS3 Sixaxis and Blu-Ray Remote Support
----------------------------------------------------------------

This directory contains 6 sample programs that demonstrate XBMC's
event server (which is still in development). The programs are in
Python and C++. XBMC also needs to be running (obviously) so that it
can receive the events.

- example_button1.py       | example_button1.cpp
- example_button2.py       | example_button2.cpp
- example_notification.py  | example_notification.cpp

The first 2 show how button / key presses can be sent to XBMC.
The third one shows how to display notifications in XBMC.

- xbmcclient.py
- xbmcclient.h

These are the Python module and C++ header that you can use when
writing your own programs. It is not yet complete and likely to change
but is still usable.

Implementation details can be found in the comments in the sample
programs.


PS3 Controller and PS3 Blu-Ray Remote Support
---------------------------------------------

There is also initial support for the PS3 controller (sixaxis) and the
PS3 Blu-Ray remote.

Pairing of the PS3 Blu-Ray Remote
---------------------------------

The remote needs to be paired initially with the 'ps3_remote.py'
program in this directory which you can continue using if you do not
want to run 'ps3d.py' as root. The disadvantage of using
'ps3_remote.py' is that pairing is required on every run. Once initial
pairing is done, 'ps3d.py', when run as root, will automatically
detect incoming connections from both the PS3 remote and the Sixaxis
controller.

Pairing of the PS3 Sixaxis Controller (TODO)
--------------------------------------------

The pairing of the PS3 controller is not yet handled automatically. It
can however be done using the program "sixaxis.c" available from:

http://www.pabr.org/sixlinux/sixlinux.en.html

Once pairing for eiher or both has been done, run the ps3d.py program
as root after disabling any existing HID servers that might currently
be running. The program requires root prvilieges since it listens on
Bluetooth L2CAP PSMs 17 and 19.

Using the PS3 Sixaxis Controller
--------------------------------

Currently, all that is supported with the Sixaxis controller is to be able
emulate the mouse behavior. Hold down the PS button and wave the controller
around and watch the mouse in XBMC mouse. Tilt it from left to right (along
your Z axis) to control horizontal motion. Tilt it towards and away from you
along (along your X axis) to control vertical mouse movement.

That's all for now.

WiiRemote Support
-----------------

The executable depends on libcwiid and libbluetooth and is compiled using
# g++ WiiRemote.cpp -lcwiid -o WiiRemote
The WiiRemote will emulate mouse by default but can be disabled by running with --disable-mouseemulation
The sensitivity of the mouseemulation can be set using the --deadzone_x or --deadzone_y where the number is
the percentage of the space is considered "dead", higher means more sensative.
Other commands can be listed with --help

The WiiRemote is mappable with keymap.xml where button id's are the following:
1 = Up
2 = Down
3 = Left
4 = Right
5 = A
6 = B
7 = Minus
8 = Home
9 = Plus
10 = 1
11 = 2
The name is by standard WiiRemote but this can be changed with the --joystick-name

J2ME (Java Phone Application)
-----------------------------

To use the J2ME client only CLDC 1.0 and MIDP 1.0 is needed.
The client will also need bluetooth and must be able to initialize the connection.
For compilation of the Java Application see Clients/J2ME Client/README but precompiled versions
exists in our forum.

The Client is mappable in the same manner as PS3 in keymap.xml but with the name J2ME (<joystick name="J2ME">).
The KeyID's generated in terminal when running j2me_remote.py.
