[Touch Cruise Android Development] life02:
I was able to find the keymappings in the kernel source. Looks like it was a change to the current board-htcpolaris-keypad.c source. So all I have to do now is find what the menu and right dpad key should be mapped as and recompile the zImage.

/*

* HTC Polaris Keyboard (biktor's version, based on nike & kaiser keypad drivers)

*

*/

#include <linux/kernel.h>

#include <linux/module.h>

#include <linux/input.h>

#include <linux/init.h>

#include <linux/interrupt.h>

#include <linux/jiffies.h>

#include <linux/platform_device.h>

#include <linux/workqueue.h>

#include <linux/delay.h>

#include <linux/reboot.h>

#include <linux/sched.h>

#include <linux/irq.h>

#include <linux/kbd_kern.h>

#include <linux/gpiodev2.h>

#include <asm/gpio.h>

#include <asm/arch/board.h>

#include "board-htcpolaris.h"

#include <asm/mach/arch.h>

#include <asm/mach-types.h>

#include <asm/arch/irqs.h>

#define MODULE_NAME "polaris_kbd"

//#define POLARIS_KEYBOARD_DEBUG

#ifdef POLARIS_KEYBOARD_DEBUG

#define DBG(x...) \

printk(KERN_INFO MODULE_NAME ": " x)

#else

#define DBG(x...)	do { } while (0)

#endif

#define FALSE	0

#define TRUE	1

#define PERMANENT	2

#define PRESSED_BIT	0x01

#define KEY_ANDROID_OK	232

#define KEY_ANDROID_MENU	229

#define KEY_CAMERA_SOFT	(KEY_CAMERA-1)	// Two step camera button

/* GPIO Keys */

#define HTCPOLARIS_GPIO_POWER_BTN	20

#define HTCPOLARIS_GPIO_KEY_OK	91

#define HTCPOLARIS_GPIO_KEY_RIGHT	90

#define HTCPOLARIS_GPIO_KEY_LEFT	19

#define HTCPOLARIS_GPIO_KEY_UP	38

#define HTCPOLARIS_GPIO_KEY_DOWN	37

#define HTCPOLARIS_GPIO_KEY_CAMERA_FULL 76

#define HTCPOLARIS_GPIO_KEY_CAMERA_STEP1 29

#define HTCPOLARIS_GPIO_WHEEL1	36

#define HTCPOLARIS_GPIO_WHEEL2	31

/* Matrix Key GPIOS */

static u8	col_gpio[] = { 39, 40, 41 };

static u8	row_gpio[] = { 33, 34, 35 };

int gpio_key_to_release;

#define MAX_ROW	ARRAY_SIZE(row_gpio)

#define MAX_COL	ARRAY_SIZE(col_gpio)

#define BACKLIGHT_TIMEOUT (15*20) //15s

#define BACKLIGHT_DURATION 800

static DEFINE_SPINLOCK(datalock);

static struct {

struct input_dev *idev;

struct workqueue_struct *workqueue;

struct work_struct task;

struct semaphore sem;

struct platform_device *platform_dev;

unsigned int backlight_timer;

} kbd_data;

unsigned short matrix_saved_keyp;

struct matrix_buttons

{

unsigned short key;

u8 flags;

};

static struct matrix_buttons (*matrix_buttons)[MAX_COL];

static struct matrix_buttons gpio_keypad[] = {

// GPIO Keypad structure

{KEY_END, HTCPOLARIS_GPIO_POWER_BTN},

{KEY_CAMERA, HTCPOLARIS_GPIO_KEY_CAMERA_FULL},

{KEY_CAMERA_SOFT, HTCPOLARIS_GPIO_KEY_CAMERA_STEP1},

{KEY_OK, HTCPOLARIS_GPIO_KEY_OK},

{KEY_LEFT, HTCPOLARIS_GPIO_KEY_LEFT},

{KEY_RIGHT, HTCPOLARIS_GPIO_KEY_RIGHT},

{KEY_UP, HTCPOLARIS_GPIO_KEY_UP},

{KEY_DOWN, HTCPOLARIS_GPIO_KEY_DOWN},

};

static struct matrix_buttons matrix_buttons_normal[MAX_ROW][MAX_COL] = {

// Matrix button structure

// 0

{

{KEY_VOLUMEDOWN,	FALSE}, // Volume Down

{KEY_B,	FALSE}, // unused

{KEY_C,	FALSE}, // unused

},//1

{

{KEY_VOLUMEUP,	FALSE}, // Volume up

{KEY_BACK,	FALSE}, // key_end (red key)

{KEY_ANDROID_MENU,	FALSE}, // IE key

},

{

{KEY_HOME,	FALSE}, // Voice rec key_send(green)

{KEY_SEND,	FALSE}, // Key_send (green key)

{KEY_HOME,	FALSE}, // nav key

},

};