forked from len0rd/rockbox
YH8xx,YH9xx: Keymap improvement
The main "innovation" in this patch are two "virtual buttons" for the record switch on YH92x targets. When the switch state changes, a single BUTTON_REC_SW_ON or .._OFF button event will be generated. Thus keymap code can react on switching, but not on the actual state of the switch. Wherever sensible, the following user scheme is applied: - use PLAY as confirm button - use REW button or Long REW to exit - use REC (YH820) or FFWD (YH92X) as modifier key for button combos Change-Id: Ic8d1db9cc6869daed8dda98990dfdf7f6fd5d5a1
This commit is contained in:
parent
a8758c953d
commit
a507bb2837
142 changed files with 1380 additions and 685 deletions
|
@ -39,9 +39,22 @@ void remote_int(void);
|
|||
#define BUTTON_PLAY 0x00000010
|
||||
#define BUTTON_REW 0x00000020
|
||||
#define BUTTON_FFWD 0x00000040
|
||||
#if defined(SAMSUNG_YH820) /* YH820 has record button */
|
||||
#define BUTTON_REC 0x00000080
|
||||
#else /* virtual buttons for record switch state change on YH92x */
|
||||
#define BUTTON_REC_SW_ON 0x00000080
|
||||
#define BUTTON_REC_SW_OFF 0x00000100
|
||||
/* TODO: most of the plugin keymaps rely on the REC button,
|
||||
so I kept the following line to prevent compile errors.
|
||||
This line has to be removed as soon as all plugin keymaps are fixed! */
|
||||
#define BUTTON_REC 0x00000200
|
||||
#endif
|
||||
|
||||
#if defined(SAMSUNG_YH820)
|
||||
#define BUTTON_MAIN 0x000000ff
|
||||
#else
|
||||
#define BUTTON_MAIN 0x000001ff
|
||||
#endif
|
||||
|
||||
#define BUTTON_RC_PLUS BUTTON_UP
|
||||
#define BUTTON_RC_MINUS BUTTON_DOWN
|
||||
|
|
|
@ -20,12 +20,15 @@
|
|||
****************************************************************************/
|
||||
|
||||
#include "system.h"
|
||||
#include "kernel.h"
|
||||
#include "button.h"
|
||||
#include "backlight.h"
|
||||
#if defined(SAMSUNG_YH920) || defined(SAMSUNG_YH925)
|
||||
#include "powermgmt.h"
|
||||
#include "adc.h"
|
||||
|
||||
static int int_btn = BUTTON_NONE;
|
||||
static unsigned int rec_switch;
|
||||
|
||||
void button_init_device(void)
|
||||
{
|
||||
|
@ -44,6 +47,9 @@ void button_init_device(void)
|
|||
/* remote PLAY */
|
||||
GPIOD_ENABLE |= 0x02;
|
||||
GPIOD_OUTPUT_EN &= ~0x02;
|
||||
|
||||
/* current record switch state */
|
||||
rec_switch = ~GPIOA_INPUT_VAL & 0x40;
|
||||
}
|
||||
|
||||
/* Remote buttons */
|
||||
|
@ -117,7 +123,24 @@ int button_read_device(void)
|
|||
if (~GPIOA_INPUT_VAL & 0x08) btn |= BUTTON_DOWN;
|
||||
if (~GPIOA_INPUT_VAL & 0x02) btn |= BUTTON_FFWD;
|
||||
if (~GPIOA_INPUT_VAL & 0x80) btn |= BUTTON_REW;
|
||||
#if defined(SAMSUNG_YH820)
|
||||
if (~GPIOA_INPUT_VAL & 0x40) btn |= BUTTON_REC;
|
||||
#else
|
||||
if ((~GPIOA_INPUT_VAL & 0x40) != rec_switch)
|
||||
{
|
||||
if (rec_switch) {
|
||||
queue_post(&button_queue,BUTTON_REC_SW_OFF,0);
|
||||
queue_post(&button_queue,BUTTON_REC_SW_OFF|BUTTON_REL,0);
|
||||
}
|
||||
else {
|
||||
queue_post(&button_queue,BUTTON_REC_SW_ON,0);
|
||||
queue_post(&button_queue,BUTTON_REC_SW_ON|BUTTON_REL,0);
|
||||
}
|
||||
rec_switch = ~GPIOA_INPUT_VAL & 0x40;
|
||||
backlight_on();
|
||||
reset_poweroff_timer();
|
||||
}
|
||||
#endif
|
||||
#if defined(SAMSUNG_YH820)
|
||||
if ( GPIOB_INPUT_VAL & 0x80) btn |= BUTTON_PLAY;
|
||||
#elif defined(SAMSUNG_YH920) || defined(SAMSUNG_YH925)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue