diff options
Diffstat (limited to 'firmware/target/arm')
3 files changed, 65 insertions, 10 deletions
diff --git a/firmware/target/arm/tcc780x/cowond2/button-target.h b/firmware/target/arm/tcc780x/cowond2/button-target.h index 3ccf70cffd..573ab03a11 100644 --- a/firmware/target/arm/tcc780x/cowond2/button-target.h +++ b/firmware/target/arm/tcc780x/cowond2/button-target.h @@ -35,14 +35,25 @@ int button_read_device(void); #define BUTTON_MINUS 0x00000004 #define BUTTON_MENU 0x00000008 +/* compatibility hacks + not mapped to the touchpad button areas because + the touchpad is not always in that mode */ +#define BUTTON_LEFT BUTTON_MINUS +#define BUTTON_RIGHT BUTTON_PLUS + /* Faked buttons based on touchscreen quadrants (not yet read) */ -#define BUTTON_UP 0x00000020 -#define BUTTON_DOWN 0x00000040 -#define BUTTON_LEFT 0x00000080 -#define BUTTON_RIGHT 0x00000100 -#define BUTTON_SELECT 0x00000200 +/* Touchpad Screen Area Buttons */ +#define BUTTON_TOPLEFT 0x00000010 +#define BUTTON_TOPMIDDLE 0x00000020 +#define BUTTON_TOPRIGHT 0x00000040 +#define BUTTON_MIDLEFT 0x00000080 +#define BUTTON_CENTER 0x00000100 +#define BUTTON_MIDRIGHT 0x00000200 +#define BUTTON_BOTTOMLEFT 0x00000400 +#define BUTTON_BOTTOMMIDDLE 0x00000800 +#define BUTTON_BOTTOMRIGHT 0x00001000 -#define BUTTON_MAIN 0x3FF +#define BUTTON_MAIN 0x1FFF /* No remote */ #define BUTTON_REMOTE 0 diff --git a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c index 0eb1c07e74..d1fd2eb702 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/button-mr500.c @@ -40,6 +40,22 @@ static short last_x, last_y, last_z1, last_z2; /* for the touch screen */ static bool touch_available = false; +static enum touchpad_mode current_mode = TOUCHPAD_POINT; +static int touchpad_buttons[3][3] = { + {BUTTON_TOPLEFT, BUTTON_TOPMIDDLE, BUTTON_TOPRIGHT}, + {BUTTON_MIDLEFT, BUTTON_CENTER, BUTTON_MIDRIGHT}, + {BUTTON_BOTTOMLEFT, BUTTON_BOTTOMMIDDLE, BUTTON_BOTTOMRIGHT}, +}; + +void touchpad_set_mode(enum touchpad_mode mode) +{ + current_mode = mode; +} +enum touchpad_mode touchpad_get_mode(void) +{ + return current_mode; +} + static struct touch_calibration_point topleft, bottomright; /* Jd's tests.. These will hopefully work for everyone so we dont have to @@ -165,7 +181,19 @@ int button_read_device(int *data) last_x = x; last_y = y; *data = touch_to_pixels(x, y); - r_button |= BUTTON_TOUCHPAD; + switch (current_mode) + { + case TOUCHPAD_POINT: + r_button |= BUTTON_TOUCHPAD; + break; + case TOUCHPAD_BUTTON: + { + int px_x = ((*data&0xffff0000)>>16), px_y = ((*data&0x0000ffff)); + r_button |= touchpad_buttons[px_y/(LCD_HEIGHT/3)][px_x/(LCD_WIDTH/3)]; + oldbutton = r_button; + break; + } + } } last_touch = current_tick; touch_available = false; @@ -219,6 +247,6 @@ void GIO14(void) read_battery_inputs(); break; } - touch_available = true; + //touch_available = true; IO_INTC_IRQ2 = (1<<3); /* IRQ_GIO14 == 35 */ } diff --git a/firmware/target/arm/tms320dm320/mrobe-500/button-target.h b/firmware/target/arm/tms320dm320/mrobe-500/button-target.h index 1f17f3f3c8..ae23346814 100644 --- a/firmware/target/arm/tms320dm320/mrobe-500/button-target.h +++ b/firmware/target/arm/tms320dm320/mrobe-500/button-target.h @@ -53,14 +53,30 @@ void use_calibration(bool enable); #define BUTTON_TOUCH 0x00000200 -/* compatibility hacks */ +/* Touchpad Screen Area Buttons */ +#define BUTTON_TOPLEFT 0x00004000 +#define BUTTON_TOPMIDDLE 0x00008000 +#define BUTTON_TOPRIGHT 0x00010000 +#define BUTTON_MIDLEFT 0x00020000 +#define BUTTON_CENTER 0x00040000 +#define BUTTON_MIDRIGHT 0x00080000 +#define BUTTON_BOTTOMLEFT 0x00100000 +#define BUTTON_BOTTOMMIDDLE 0x00200000 +#define BUTTON_BOTTOMRIGHT 0x00400000 + +/* compatibility hacks + not mapped to the touchpad button areas because + the touchpad is not always in that mode */ #define BUTTON_LEFT BUTTON_RC_REW #define BUTTON_RIGHT BUTTON_RC_FF #define POWEROFF_BUTTON BUTTON_POWER #define POWEROFF_COUNT 10 -#define BUTTON_MAIN BUTTON_POWER +#define BUTTON_MAIN (BUTTON_POWER| \ + BUTTON_TOPLEFT|BUTTON_TOPMIDDLE|BUTTON_TOPRIGHT \ + BUTTON_MIDLEFT|BUTTON_CENTER|BUTTON_MIDRIGHT \ + BUTTON_BOTTOMLEFT|BUTTON_BOTTOMMIDDLE|BUTTON_BOTTOMRIGHT) #define BUTTON_REMOTE (BUTTON_RC_HEART|BUTTON_RC_MODE| \ BUTTON_RC_VOL_DOWN|BUTTON_RC_VOL_UP| \ |