I realized people are getting confused with the mapping file so I'll try to make it a bit clearer.
First of all, the mapping file is NOT a replacement for key configuration in the config.xml file. If you want to change the default mapping of keys, use the config.xml (see the wiki for that). The mapping file is intended to augment/add control ON TOP of the existing basic configuration.
The idea here is to add control of the application through a joystick, making the original key combos from the config file still available.
I'm using this joystick:
Knobs are pretty easy do deal with on this one (since they are all numbered) but the joy axis are a little bit thougher since there's not indication for it. To get their 'ID', we are going to start the pig with a special option:
Under linux, specify it from the command line, under windows, you'll have to create a shortcut with the option on. Linux will dump the log in the terminal, while the latest version of the ghetto (as of today) creates it's log in a lgpt.log file, next to the executable.
With that option, the pig will log all event it receives, allowing identification of the various parts of the joystick. Let's first start the pig and press the 1/2/3/4 buttons. The log gives:
but(0):0 but(0):1 but(0):2 but(0):3
this means button from joystick 0 with ID 0,1,2,3 have been pressed, which is normal since the piggy uses numbers starting from zero while the joystick numbering starts at 1.
Let's press up/down on the 'flat' joystick control I'll use. The log gives:
joy(0)::1=-32768 <- up is negative joy(0)::1=-257 joy(0)::1=32767 <- down is positive joy(0)::1=-257
This means the axis 1 from joystick 0 has been moved, first negatively then positively (ignore the 257 stuff). So up is axis 1- and down is axis 1+. Doing the same with left/right, I'm getting left is axis 0- and right is axis 0+
So now, we can use these information to build our mapping file. Since I'm using lsdj type of mode (<INVERT value=“YES” /> in the config.xml), I want (according to the pics)
1: -> A 2: -> A 3: -> B 4: -> B
for the shoulders, I'll map both button coz I keep pressing randomly one or the other so
5:->L_Shoulder 7:->L_Shoulder 6:->R_Shoulder 8:->R_Shoulder
and for the axis
0:+ -> right 0: -> left 1:+ -> down 1:- -> up
So now, we create a 'mapping.xml' file to be located at the same level as the lgpt_XXX projects with
<MAPPINGS> <MAP src="joy:0:1-" dst="/event/up" /> <MAP src="joy:0:1+" dst="/event/down" /> <MAP src="joy:0:0-" dst="/event/left" /> <MAP src="joy:0:0+" dst="/event/right" /> <MAP src="but:0:0" dst="/event/a" /> <MAP src="but:0:3" dst="/event/b" /> <MAP src="but:0:1" dst="/event/a" /> <MAP src="but:0:2" dst="/event/b" /> <MAP src="but:0:5" dst="/event/rshoulder" /> <MAP src="but:0:7" dst="/event/rshoulder" /> <MAP src="but:0:4" dst="/event/lshoulder" /> <MAP src="but:0:6" dst="/event/lshoulder" /> <MAP src="but:0:8" dst="/event/start" /> <MAP src="but:0:9" dst="/tempo/tap" /> </MAPPINGS>
Starting the pig again, you should see in the log the following (according you didn't mistype or misplace the config file):
Attached /event/up to joy:0:1- Attached /event/down to joy:0:1+ Attached /event/left to joy:0:0- Attached /event/right to joy:0:0+ Attached /event/a to but:0:0 Attached /event/b to but:0:3 Attached /event/a to but:0:1 Attached /event/b to but:0:2 Attached /event/rshoulder to but:0:5 Attached /event/rshoulder to but:0:7 Attached /event/lshoulder to but:0:4 Attached /event/lshoulder to but:0:6
And you're all set !
Since last builds, only A and B are mapped be default and some of you might want to recover the previous behaviour where X & Y worked like A/B. On the GP2X, the button mapping is the following:
so to map Y to B and X to A (regular mode), use the following mapping.xml
<MAPPINGS> <MAP src="but:0:14" dst="/event/a" /> <MAP src="but:0:15" dst="/event/b" /> </MAPPINGS>
or use another configuration that suits you :)
1) find values for usb buttons
open up the terminal
go wherever you downloaded piggy and on the command line type:
hit the buttons you want to use and copy the values piggy spits out
start but(0):9 lt but(0):4 rt but(0):5
up joy(0)::1=-32768 down joy(0)::1=32767 left oy(0)::1=-32768 right joy(0)::0=32767 run but(0):0 jump but(0):1
2) make a mapping file
For those of you piggin' on the Dingoo, you've probably realized the Dingoo doesn't have dedicated volume controls. Below is the code for mapping the x and y buttons for volume up and down, respectively.
<MAPPINGS> <MAP src="key:0:space" dst="/mixer/volume/increase" /> <MAP src="key:0:left shift" dst="/mixer/volume/decrease" /> </MAPPINGS>
If you'd like to map volume to other buttons or switch around anything else, here are is the full key mapping for the Dingoo:
TODO CLEAN UP THIS EMAIL DUMP
This is an experimental feature that should work on WIN, OSX, NIX, and RASPPI platforms.
You can specify the device to be mapped either from the command line:
./lgpt.rpi-exe -MIDICTRLDEVICE=Launchpad -DUMPEVENT=YES
When a CTRL device is selected, you can use your mapping file to add control as you would do with joysticks. I've tested (rather quickly) with midi CC and and notes and it seems to work as expected. Here's an example mapping file I used to trigger things from the lauchpad
<MAPPINGS> <MAP src="midi:all:0:cc:104" dst="/event/up" /> <MAP src="midi:all:0:cc:105" dst="/event/down" /> <MAP src="midi:all:0:cc:106" dst="/event/left" /> <MAP src="midi:all:0:cc:107" dst="/event/right" /> <MAP src="midi:all:0:note:0" dst="/event/start" /> </MAPPINGS>
the rough description of the src string is
midi: specifies midi (obviously) :D
all: listen to all opened midi input. In this case you will only be able to open one but anyways, it work
ch: is the midi channel
note/cc: selects the midi message
val: the value that it's connected to