Rockbox Technical Forums

Support and General Use => Plugins/Viewers => Topic started by: CrashinTime on December 06, 2019, 07:57:17 PM

Title: InfoNES controlls
Post by: CrashinTime on December 06, 2019, 07:57:17 PM
Sorry if this has been asked before but i cant seem to find it anywhere
I compiled rockbox with InfoNES for ipod classic(6G) and i cant seem to find a/b and start/select buttons... is there a place to find these controlls? cant seem to find one online
Title: Re: InfoNES controlls
Post by: bobba_mosfet on December 07, 2019, 09:13:51 AM
I tested it not that long after the last version was posted to the tracker, and there were failed hunks even then.  You need to fiddle with it to get it to work, and there are no keymaps for a couple of targets.

No-one is going to write a tutorial with screenshots on a thing so specific that it'll only be used once ever by a single person.  Read http://rockbox.org/wiki/DevelopmentGuide
http://forums.rockbox.org/index.php/topic,16607.msg

It would be interesting if you could post some compliation instructions because I didn't realise this plugin existed.

From a quick search, I'm guessing there is no keymap for the ipod6g and one would need to be made.
Title: Re: InfoNES controlls
Post by: CrashinTime on December 07, 2019, 11:21:59 AM
Yeah sure idk what your compiling on but my guide will be for windows 10
First make sure you have windows bash
https://www.windowscentral.com/how-install-bash-shell-command-line-windows-10 (make sure ubuntu is installed from microsoft store)
then do https://www.rockbox.org/wiki/Windows10CrossCompiler
UNTILL you get to build the cross compiler, at this point do
$ cd rockbox
and then fetch the infones git(I used $ git fetch http://gerrit.rockbox.org/rockbox refs/changes/46/946/7 && git checkout FETCH_HEAD) from http://gerrit.rockbox.org/r/#/c/946/
then after that finish doing the steps
once you get to compile rockbox as normal just follow
https://www.rockbox.org/wiki/HowToCompile
you can skip the first step since we already downloaded the git before and step one of part 2 since we already did cd rockbox

Hope this helps!
Of my own curiousity any way i could make my own map for infones?
Title: Re: InfoNES controlls
Post by: bobba_mosfet on December 07, 2019, 12:27:19 PM
Thanks for the gerrit link.

Taking a look at the keymaps.h (http://gerrit.rockbox.org/r/#/c/946/7/apps/plugins/infones/keymaps.h) you can see:

Code: [Select]
#elif CONFIG_KEYPAD == IPOD_4G_PAD

#define NES_BUTTON_UP           BUTTON_MENU
#define NES_BUTTON_DOWN         BUTTON_PLAY
#define NES_BUTTON_A            BUTTON_NONE
#define NES_BUTTON_B            BUTTON_NONE
#define NES_BUTTON_START        BUTTON_SELECT
#define NES_BUTTON_SELECT       BUTTON_NONE
#define NES_BUTTON_MENU         (BUTTON_SELECT | BUTTON_REPEAT)

You can see Buttons A, B and SELECT are mapped to NONE.

I'm gonna say thats probably the reason why you can't get them to work.

Out of interest, does the Select button (centre of the clickwheel) work as the Start button in game?

These keymaps do indeed match Rockboy as alluded to in line 5:
Code: [Select]
/* Keymaps copied from Rockboy */

Keymap from Rockboy:
Code: [Select]
#elif CONFIG_KEYPAD == IPOD_4G_PAD
        options.UP      = BUTTON_MENU;
        options.DOWN    = BUTTON_PLAY;

        options.A       = BUTTON_NONE;
        options.B       = BUTTON_NONE;
        options.START   = BUTTON_SELECT;
        options.SELECT  = BUTTON_NONE;
        options.MENU    = (BUTTON_SELECT | BUTTON_REPEAT);

I have never bothered trying Rockboy, but I'd guess that it probably doesn't work properly either due to the lack of buttons.
Title: Re: InfoNES controlls
Post by: CrashinTime on December 07, 2019, 04:06:57 PM
Rockboy works just fine, shockingly i managed to beat Links awakening DX on it,
Select works but it tends to glitch out and also pause rockboy at the same time
Title: Re: InfoNES controlls
Post by: CrashinTime on December 07, 2019, 04:36:54 PM
I hadn't checked since I reinstalled, just check but yeah Rockboy still runs as it should functions and all, maybe 4g isnt the options its using?
Title: Re: InfoNES controlls
Post by: CrashinTime on December 07, 2019, 04:46:00 PM
Ok, slight update, looking and comparing rockboy and keymap files keymaps is missing

Code: [Select]
#ifdef HAVE_TOUCHSCREEN
        options.UP      = BUTTON_TOPMIDDLE;
        options.DOWN    = BUTTON_BOTTOMMIDDLE;
        options.START   = BUTTON_TOPRIGHT;
        options.SELECT  = BUTTON_CENTER;
#if CONFIG_KEYPAD == MROBE500_PAD
        options.A       = BUTTON_BOTTOMLEFT;
        options.B       = BUTTON_BOTTOMRIGHT;
#elif (CONFIG_KEYPAD != COWON_D2_PAD ) || (CONFIG_KEYPAD != DX50_PAD )
        options.A       = BUTTON_BOTTOMLEFT;
        options.B       = BUTTON_BOTTOMRIGHT;
        options.MENU    = BUTTON_TOPLEFT;
#endif
#endif

Which seems to handle keypads like Ipods

Ill try to add this and recompile see if theres any difference
Title: Re: InfoNES controlls
Post by: bobba_mosfet on December 07, 2019, 05:26:15 PM
Don't know if this helps at all, but I just ran rockboy via the ui simulator for rockbox 3.15 and I can't get the A or B buttons to register.

I tried Pokemon Blue and I was unable to advance through the text dialogs.

Let us know how your testing goes  8)
Title: Re: InfoNES controlls
Post by: CrashinTime on December 07, 2019, 07:19:57 PM
I may just be dumb but whats the name of the little slider on the top of the ipod
BUTTON_EQ right?
Title: Re: InfoNES controlls
Post by: CrashinTime on December 07, 2019, 08:02:14 PM
My challenges here seem to be finding combos that work, ive managed to change the button binds but cant get more than the 4 here working, any ideas on more binds that will work?
Title: Re: InfoNES controlls
Post by: saratoga on December 07, 2019, 08:24:54 PM
You can see the buttons here:  https://git.rockbox.org/?p=rockbox.git;a=blob;f=firmware/target/arm/s5l8702/ipod6g/button-target.h

The switch on the top is the hold switch.  I don't think you can use it as a button, it disables the other buttons. 
Title: Re: InfoNES controlls
Post by: bobba_mosfet on December 08, 2019, 07:21:16 AM
You can also take a look here (https://git.rockbox.org/?p=rockbox.git;a=blob;f=apps/plugins/doom/i_video.c;h=41194670bf0d868cec71259da08a964f971d54af;hb=refs/heads/master#l656) at some of the key handling code for Doom.

On the ipod6g the hold switch acts as another button to bring up the in game menu.

Line 651 says:
Code: [Select]
/* Same button handling as rockboy */

So you might be able to port over some of the logic if you wanted.

Personally, I think there are just too few buttons on the ipod6g for this to be sane!

What might actually be awesome would be if you could map the buttons on the FM radio adapter separately. Then you could use that as a mini gamepad and make the hold button on that A and Play B or something.
Title: Re: InfoNES controlls
Post by: CrashinTime on December 08, 2019, 09:45:45 AM
I don't think you can use it as a button, it disables the other buttons.

its not for a button per se but as the Menu button, like how doom uses it for pause and Rockboy uses it to pause, In theory its possible since this has the arrows (as arrows) and then the touch buttons (top right, top left, bottom right, bottom left)
Title: Re: InfoNES controlls
Post by: CrashinTime on December 08, 2019, 10:42:23 AM
Atm i have a Small setup thats mediocre at best

Code: [Select]
#elif CONFIG_KEYPAD == IPOD_4G_PAD

#define NES_BUTTON_UP           BUTTON_NONE
#define NES_BUTTON_DOWN         BUTTON_PLAY
#define NES_BUTTON_A            BUTTON_SELECT
#define NES_BUTTON_B            BUTTON_NONE
#define NES_BUTTON_START        BUTTON_MENU
#define NES_BUTTON_SELECT       BUTTON_SCROLL_FWD
#define NES_BUTTON_MENU         BUTTON_NONE

What are the difference between normal buttons and RC buttons?
Title: Re: InfoNES controlls
Post by: CrashinTime on December 08, 2019, 03:53:34 PM
Scr foward and back dont work i guess but a does
Title: Re: InfoNES controlls
Post by: CrashinTime on December 08, 2019, 07:12:01 PM
I know its possible to set keys to be this OR that via (Key1 | Key2) would (Key1 & Key2) work?
Title: Re: InfoNES controlls
Post by: ulmutul on December 09, 2019, 06:00:49 AM
Every key is represented by a bit in a binary number. If e.g. KEY1 is represented by (binary) 00000001 and KEY2 by 00000010, then (KEY1 | KEY2) is 00000011; this means that both KEY1 and KEY2 must be pressed to fire the event. (KEY1 & KEY2) won't do anything, because the binary result would be 00000000.

Although button combos will work in most plugins there's no guarantee. Especially in arcade games the button handling may be programmed in a way that make combos don't work or behave in a strange way.

Quote
What are the difference between normal buttons and RC buttons?

"RC" stands for Remote Control buttons.

Quote
[regarding hold switch] its not for a button per se but as the Menu button, like how doom uses it for pause and Rockboy uses it to pause

IMO it's a good idea, because it would free a button for in-game use.
Note however that the hold switch is handled completely differently than the buttons and need code to be added at the appropriate place.

Title: Re: InfoNES controlls
Post by: CrashinTime on December 09, 2019, 07:04:50 AM
So if

MENU  0x00000002
PLAY  0x00000040

Does that mean the setup would be something like

#define NES_BUTTON_MENU 0x00000042 ?
Title: Re: InfoNES controlls
Post by: __builtin on December 09, 2019, 04:02:54 PM
You should just use

Code: [Select]
BUTTON_PLAY | BUTTON_MENU
where | is the bitwise OR operator.
Title: Re: InfoNES controlls
Post by: CrashinTime on December 09, 2019, 04:51:57 PM
Wouldnt that make it where if i press the 1 button or the other it would activate the button?
Title: Re: InfoNES controlls
Post by: CrashinTime on December 09, 2019, 05:11:12 PM
Just tried that and it didnt work, activated even if only 1 button was pressed,
Title: Re: InfoNES controlls
Post by: bobba_mosfet on December 09, 2019, 07:13:39 PM
Just tried that and it didnt work, activated even if only 1 button was pressed,

How have you written it?

In my previous reply here (http://forums.rockbox.org/index.php/topic,53080.msg245243.html#msg245243) you can see that the key is defined like this:

Code: [Select]
#define NES_BUTTON_MENU         (BUTTON_SELECT | BUTTON_REPEAT)
I'm guessing you'd have to do something like this(???):
Code: [Select]
#define NES_BUTTON_A         (BUTTON_PLAY | BUTTON_MENU)
Title: Re: InfoNES controlls
Post by: CrashinTime on December 09, 2019, 07:55:48 PM

I'm guessing you'd have to do something like this(???):
Code: [Select]
#define NES_BUTTON_A         (BUTTON_PLAY | BUTTON_MENU)


Thats exactly what i have and no luck, it does menu on either button not both

Edit: not doing this on the a button but its still the same thing
Title: Re: InfoNES controlls
Post by: CrashinTime on December 10, 2019, 03:43:21 PM
Would it be possible for me to make a "new" button thats a merge of the two thats the value of them pressed together?
Title: Re: InfoNES controlls
Post by: saratoga on December 10, 2019, 03:46:00 PM
That is what the bitwise OR operator does. 
Title: Re: InfoNES controlls
Post by: ulmutul on December 10, 2019, 06:06:35 PM
The culprit is InfoNES' button handling. Looking at the source you find the following (file InfoNES_System_Rockbox.c, Line 412):

Code: [Select]
    if(bs & NES_BUTTON_UP)
        dwPad1 |= 1 << 4;
    else
        dwPad1 &= ~(1 << 4);
    if(bs & NES_BUTTON_DOWN)
        dwPad1 |= 1 << 5;
    else
        dwPad1 &= ~(1 << 5);
    ...

If you #define NES_BUTTON_UP as (BUTTON_MENU | BUTTON_PLAY) it behaves indeed as you describe (press either MENU or PLAY to move up).
To achieve the wanted behaviour (both buttons simultaneous) you have to change the code (No guarantee, I didn't test it :) ):

Code: [Select]
    if((bs & NES_BUTTON_UP)==NES_BUTTON_UP)
        dwPad1 |= 1 << 4;
    else
        dwPad1 &= ~(1 << 4);
    if((bs & NES_BUTTON_DOWN)==NES_BUTTON_DOWN)
        dwPad1 |= 1 << 5;
    else
        dwPad1 &= ~(1 << 5);
... and so on ...

Looking at line 398 there's already the logic to enter the menu on a flick of the hold switch.
It works for me on my YH925, no clue why it doesn't on an iPod.
Title: Re: InfoNES controlls
Post by: CrashinTime on December 10, 2019, 06:13:10 PM
When using hold switch it turns the screen off but nothing freezes or anything,
Title: Re: InfoNES controlls
Post by: CrashinTime on December 10, 2019, 07:46:04 PM
after setting up
Code: [Select]
void poll_event(void)
{
    int bs;

    bs = rb->button_status();

#ifdef INFONES_SCROLLWHEEL
    bs |= read_scroll_wheel();
#endif

    if((bs & NES_BUTTON_UP)==NES_BUTTON_UP)
        dwPad1 |= 1 << 4;
    else
        dwPad1 &= ~(1 << 4);
    if((bs & NES_BUTTON_DOWN)==NES_BUTTON_DOWN)
        dwPad1 |= 1 << 5;
    else
        dwPad1 &= ~(1 << 5);
    if((bs & NES_BUTTON_LEFT)==NES_BUTTON_LEFT)
        dwPad1 |= 1 << 6;
    else
        dwPad1 &= ~(1 << 6);
    if((bs & NES_BUTTON_RIGHT)==NES_BUTTON_RIGHT)
        dwPad1 |= 1 << 7;
    else
        dwPad1 &= ~(1 << 7);
    if((bs & NES_BUTTON_A)==NES_BUTTON_A)
        dwPad1 |= 1 << 0;
    else
        dwPad1 &= ~(1 << 0);
    if((bs & NES_BUTTON_B)==NES_BUTTON_B)
        dwPad1 |= 1 << 1;
    else
        dwPad1 &= ~(1 << 1);
    if((bs & NES_BUTTON_SELECT)==NES_BUTTON_SELECT)
        dwPad1 |= 1 << 2;
    else
        dwPad1 &= ~(1 << 2);
    if((bs & NES_BUTTON_START)==NES_BUTTON_START)
        dwPad1 |= 1 << 3;
    else
        dwPad1 &= ~(1 << 3);

    rb->yield();

    if((bs & NES_BUTTON_MENU)==NES_BUTTON_MENU)
        menu();

    return;
}

The And buttons seem to work but now normal buttons don't work at all
Title: Re: InfoNES controlls
Post by: CrashinTime on December 10, 2019, 08:27:23 PM
Slight update

After changing the code to

Code: [Select]
void poll_event(void)
{
    int bs;

    bs = rb->button_status();

#ifdef INFONES_SCROLLWHEEL
    bs |= read_scroll_wheel();
#endif

    if(bs & NES_BUTTON_UP)
        dwPad1 |= 1 << 4;
    else
        dwPad1 &= ~(1 << 4);
    if(bs & NES_BUTTON_DOWN)
        dwPad1 |= 1 << 5;
    else
        dwPad1 &= ~(1 << 5);
    if(bs & NES_BUTTON_LEFT)
        dwPad1 |= 1 << 6;
    else
        dwPad1 &= ~(1 << 6);
    if(bs & NES_BUTTON_RIGHT)
        dwPad1 |= 1 << 7;
    else
        dwPad1 &= ~(1 << 7);
    if(bs & NES_BUTTON_A)
        dwPad1 |= 1 << 0;
    else
        dwPad1 &= ~(1 << 0);
    if(bs & NES_BUTTON_B)
        dwPad1 |= 1 << 1;
    else
        dwPad1 &= ~(1 << 1);
    if(bs & NES_BUTTON_SELECT)
        dwPad1 |= 1 << 2;
    else
        dwPad1 &= ~(1 << 2);
    if(bs & NES_BUTTON_START)
        dwPad1 |= 1 << 3;
    else
        dwPad1 &= ~(1 << 3);

    rb->yield();

    if((bs & NES_BUTTON_MENU)==NES_BUTTON_MENU)
        menu();

    return;
}

it works as should, just gotta get more binds setup now,
Code: [Select]
#elif CONFIG_KEYPAD == IPOD_4G_PAD

#define NES_BUTTON_UP           BUTTON_NONE
#define NES_BUTTON_DOWN         BUTTON_PLAY
#define NES_BUTTON_A            BUTTON_SELECT
#define NES_BUTTON_B            BUTTON_NONE
#define NES_BUTTON_START        BUTTON_MENU
#define NES_BUTTON_SELECT       BUTTON_SCROLL_FWD
#define NES_BUTTON_MENU         (BUTTON_SELECT | BUTTON_MENU)

Is my current setup
Title: Re: InfoNES controlls
Post by: CrashinTime on December 11, 2019, 04:45:54 PM
On another note, how do i see supported games, and how would i add support for a game?
Title: Re: InfoNES controlls
Post by: CrashinTime on December 13, 2019, 04:41:36 PM
Ok so update on my setup

Code: [Select]
#elif CONFIG_KEYPAD == IPOD_4G_PAD

#define NES_BUTTON_UP           BUTTON_MENU
#define NES_BUTTON_DOWN         BUTTON_PLAY
#define NES_BUTTON_A            BUTTON_SELECT
#define NES_BUTTON_B            BUTTON_NONE
#define NES_BUTTON_START        (BUTTON_SELECT | BUTTON_PLAY)
#define NES_BUTTON_SELECT       (BUTTON_SELECT | BUTTON_LEFT)
#define NES_BUTTON_MENU         (BUTTON_SELECT | BUTTON_MENU)

Its not the cleanest thing in the world but it works, my questuion is what should B be, since it needs to not be direction specific so that it dosnt effect the users direction, and be quickly acessable while pressing a

asides that this setups done
Title: Re: InfoNES controlls
Post by: CrashinTime on December 13, 2019, 06:26:08 PM
I want to setup the Hold button to be the menu button so that B can be Top and middle buttons,

Hold already pauses button inputs would there be a way to have it force open menu?

I see a Menu() function whats the best way to call this on hold?
Title: Re: InfoNES controlls
Post by: CrashinTime on December 14, 2019, 01:57:22 AM
nvm got this setup and it works like a charm, if i can setup a sanza test or something like that to make sure those still work as they should i may try to push to the git what I have, hasn't bees updated in a while tho
Title: Re: InfoNES controlls
Post by: bobba_mosfet on December 14, 2019, 12:09:02 PM
https://xkcd.com/979/

Please post your code somewhere, even if its just as a .patch attached a forum post.

You may even lose your code and still be able to retrieve a copy this way.
Title: Re: InfoNES controlls
Post by: CrashinTime on December 14, 2019, 12:55:57 PM
Haha will do

atm i got a setup thats Ipod specific thats along the lines of

Code: [Select]
void poll_event(void)
{
    int bs;

    bs = rb->button_status();

#ifdef INFONES_SCROLLWHEEL
    bs |= read_scroll_wheel();
#endif

   
#if CONFIG_KEYPAD == IPOD_4G_PAD
if(bs & NES_BUTTON_UP)
        dwPad1 |= 1 << 4;
    else
        dwPad1 &= ~(1 << 4);
    if(bs & NES_BUTTON_DOWN)
        dwPad1 |= 1 << 5;
    else
        dwPad1 &= ~(1 << 5);
    if(bs & NES_BUTTON_LEFT)
        dwPad1 |= 1 << 6;
    else
        dwPad1 &= ~(1 << 6);
    if(bs & NES_BUTTON_RIGHT)
        dwPad1 |= 1 << 7;
    else
        dwPad1 &= ~(1 << 7);
    if(bs & NES_BUTTON_A)
        dwPad1 |= 1 << 0;
    else
        dwPad1 &= ~(1 << 0);
    if((bs & NES_BUTTON_B)==NES_BUTTON_B)
        dwPad1 |= 1 << 1;
    else
        dwPad1 &= ~(1 << 1);
    if((bs & NES_BUTTON_SELECT)==NES_BUTTON_SELECT)
        dwPad1 |= 1 << 2;
    else
        dwPad1 &= ~(1 << 2);
    if((bs & NES_BUTTON_START)==NES_BUTTON_START)
        dwPad1 |= 1 << 3;
    else
        dwPad1 &= ~(1 << 3);

    rb->yield();

    if(rb->button_hold())
menu();
#else

if(bs & NES_BUTTON_UP)
        dwPad1 |= 1 << 4;
    else
        dwPad1 &= ~(1 << 4);
    if(bs & NES_BUTTON_DOWN)
        dwPad1 |= 1 << 5;
    else
        dwPad1 &= ~(1 << 5);
    if(bs & NES_BUTTON_LEFT)
        dwPad1 |= 1 << 6;
    else
        dwPad1 &= ~(1 << 6);
    if(bs & NES_BUTTON_RIGHT)
        dwPad1 |= 1 << 7;
    else
        dwPad1 &= ~(1 << 7);
    if(bs & NES_BUTTON_A)
        dwPad1 |= 1 << 0;
    else
        dwPad1 &= ~(1 << 0);
    if(bs & NES_BUTTON_B)
        dwPad1 |= 1 << 1;
    else
        dwPad1 &= ~(1 << 1);
    if(bs & NES_BUTTON_SELECT)
        dwPad1 |= 1 << 2;
    else
        dwPad1 &= ~(1 << 2);
    if(bs & NES_BUTTON_START)
        dwPad1 |= 1 << 3;
    else
        dwPad1 &= ~(1 << 3);

    rb->yield();

    if(bs & NES_BUTTON_MENU)
        menu();
#endif

    //if((bs & NES_BUTTON_MENU)==NES_BUTTON_MENU)
    //    menu();

    return;
}

Which checks for the ipod and uses the menu/Controll binds specific setup for it, I'll try to upload to github lated but I've never done this so it may take me a bit of googling
Title: Re: InfoNES controlls
Post by: CrashinTime on December 14, 2019, 01:22:06 PM
Yeah i have no idea what im doing when trying to push this, any guide would be much appreciated!
Title: Re: InfoNES controlls
Post by: bobba_mosfet on December 14, 2019, 05:55:07 PM
Quote
Git Access

People who contribute substantial and well implemented improvements to Rockbox often get Git access, allowing them to change Rockbox without having to submit patches. Git access is granted by mutual agreement of the existing Rockbox developers that a new developer is a capable and well integrated into the community.

https://www.rockbox.org/wiki/ContributingToRockbox
Title: Re: InfoNES controlls
Post by: CrashinTime on December 14, 2019, 05:56:21 PM
So does this mean i would need to get a dev to add it for me?
I tried to upload it to a github: https://github.com/KidoHyde/InfoNES-IPod-port
Title: Re: InfoNES controlls
Post by: CrashinTime on December 14, 2019, 06:12:43 PM
I see i can edit the files on http://gerrit.rockbox.org/r/#/c/946/
I edited the files i edited and im not sure how i submit it for review, what should i press now, Publish edit gives me an error
Title: Re: InfoNES controlls
Post by: CrashinTime on December 17, 2019, 06:48:39 PM
Would it be possible to set a bind to use either X button combo or Y button combo somthing like
#define NES_BUTTON_B            (BUTTON_LEFT | BUTTON_MENU) | (BUTTON_RIGHT | BUTTON_MENU)
Title: Re: InfoNES controlls
Post by: bobba_mosfet on April 01, 2020, 04:12:49 PM
What might actually be awesome would be if you could map the buttons on the FM radio adapter separately. Then you could use that as a mini gamepad and make the hold button on that A and Play B or something.

I went ahead and ordered a cheap FM tuner for my ipod6g off of eBay.

I started playing with the keymaps for rockdoom (./apps/plugins/doom/i_video.c):
Code: [Select]
#if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \
    (CONFIG_KEYPAD == IPOD_1G2G_PAD)
#define DOOMBUTTON_SCROLLWHEEL
#define DOOMBUTTON_SCROLLWHEEL_CC     BUTTON_SCROLL_BACK
#define DOOMBUTTON_SCROLLWHEEL_CW    BUTTON_SCROLL_FWD
#define DOOMBUTTON_UP        (BUTTON_MENU | BUTTON_RC_VOL_UP)
#define DOOMBUTTON_WEAPON     BUTTON_RC_PLAY
#define DOOMBUTTON_LEFT      (BUTTON_LEFT | BUTTON_RC_LEFT)
#define DOOMBUTTON_RIGHT     (BUTTON_RIGHT | BUTTON_RC_RIGHT)
#define DOOMBUTTON_SHOOT      BUTTON_SELECT
#define DOOMBUTTON_ENTER      BUTTON_RC_PLAY
#define DOOMBUTTON_OPEN       BUTTON_RC_PLAY

Keys left, right and play are addressable on the remote - this is really cool and its like having a Wii Nunchuk Controller for the iPod.

The only thing I haven't been able to get working is Up/Down (BUTTON_RC_VOL_UP/BUTTON_RC_VOL_DOWN).

I suspect that this is because of something that needs to be changed inside of ./apps/keymaps/keymap-ipod.c

I only really did this for a laugh and I had some spare time to play around with this today.

Though if anyone does have any ideas on how to address those extra buttons please do reply :)