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:
Sebastian Leonhardt 2015-07-20 01:50:26 +02:00 committed by Gerrit Rockbox
parent a8758c953d
commit a507bb2837
142 changed files with 1380 additions and 685 deletions

View file

@ -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)